Patch level : 12.0 no-patch

Files correlati     : ve2.exe ve2400.uml
Commento            : Aggiunta gestione conai negli articoli Implemented #56
This commit is contained in:
Mattia Tollari 2019-07-23 16:04:34 +02:00
parent a1cce55c95
commit 1be4579e67
5 changed files with 163 additions and 131 deletions

View File

@ -9,8 +9,9 @@
#include <modaut.h>
#include <progind.h>
#include <tabutil.h>
#include "conart.h"
const char * get_token(TSheet_field & s, int r, int dlg)
const char * get_token(TSheet_field & s, int r, int dlg)
{
TString & tmp = get_tmp_string(50);
TToken_string & row = s.row(r);
@ -141,7 +142,9 @@ protected:
virtual void on_firm_change();
bool search_on_file(const char * key, int file, int nkey, const char * field);
virtual bool protected_record(TRectype&);
void fill_conai(const TString& codart, TSheet_field& fld_con) const;
int write_conai(const TMask& m) const;
virtual int read(TMask& m);
void load_um(TMask& m);
virtual bool remove();
@ -1987,8 +1990,79 @@ bool TAnagrafica_magazzino::protected_record(TRectype& rec)
return TRUE;
else
return search_on_file(art, LF_RMOVMAG, 2, "CODART");
}
}
void TAnagrafica_magazzino::fill_conai(const TString& codart, TSheet_field& fld_con) const
{
// Distruggo e nascondo lo sheet
fld_con.destroy();
fld_con.hide();
TArticolo_conai ac(codart);
auto mcon = ac.get_map();
for(auto i = mcon.begin(); i != mcon.end(); ++i)
{
const TString cat = i->first;
for(auto j = i->second.begin(); j != i->second.end(); ++j)
{
TToken_string& row = fld_con.row(-1);
row.add(cat);
row.add(j->first);
row.add(j->second);
}
}
// Lo rimostro
fld_con.show();
}
int TAnagrafica_magazzino::write_conai(const TMask& m) const
{
int ok = NOERR;
// Prima di tutto svuoto i campi del conai sull'articolo
TLocalisamfile anamag(LF_ANAMAG);
anamag.put(ANAMAG_CODART, m.get(F_CODART));
if(anamag.read() == NOERR)
{
anamag.put(ANAMAG_CONAISC, "");
anamag.put(ANAMAG_CONACC, "");
anamag.put(ANAMAG_CONALL, "");
anamag.put(ANAMAG_CONCAR, "");
anamag.put(ANAMAG_CONLEG, "");
anamag.put(ANAMAG_CONPLA, "");
anamag.put(ANAMAG_CONVET, "");
ok |= anamag.rewrite();
}
// Adesso svuoto i record presenti in CONART
TLocalisamfile conart(LF_CONART);
TRelation rel_conart(LF_CONART);
TRectype filter_conart(LF_CONART);
filter_conart.put(ANAMAG_CODART, m.get(F_CODART));
TCursor cur_conart(&rel_conart, "", 1, &filter_conart, &filter_conart);
while(cur_conart.items() > 0)
{
ok |= conart.remove(cur_conart.curr());
}
// Infine salvo i nuovi dati in conart
TSheet_field& sheet_conai = m.sfield(F_SHEETCON);
FOR_EACH_SHEET_ROW(sheet_conai, num_riga, row)
{
conart.zero();
conart.put(CONART_CODART, m.get(F_CODART));
conart.put(CONART_NRIGA, num_riga +1);
conart.put(CONART_CATEGORIA, row->get(cid2index(FS_CAT_CONAI)));
conart.put(CONART_SOTTOCAT, row->get(cid2index(FS_SCAT_CONAI)));
conart.put(CONART_PESO, row->get(cid2index(FS_PES_CONAI)));
ok |= conart.write();
}
return ok;
}
bool TAnagrafica_magazzino::user_create()
{
open_files(LF_TAB, LF_TABCOM, LF_ANAMAG, LF_MAG, LF_STOMAG,
@ -2042,6 +2116,10 @@ int TAnagrafica_magazzino::read(TMask& m)
fld_giac.sort(cmp_rows);
((TMask_anamag&) m).giacs() = fld_giac.rows_array();
// Lettura sheet CONAI
TSheet_field &fld_con = m.sfield(F_SHEETCON);
fill_conai(m.get(F_CODART), fld_con);
return err;
}
@ -2073,7 +2151,7 @@ bool TAnagrafica_magazzino::remove()
TSheet_field& f = m.sfield(F_SHEETUM); // prende lo sheet delle unità di misura
TLocalisamfile distinte(LF_DIST);
distinte.put("CODDIST", m.get(F_CODART));
int err = distinte.read();// esiste la distinta ?
const int err = distinte.read();// esiste la distinta ?
switch(err)
{
case _iskeynotfound :
@ -2096,6 +2174,8 @@ int TAnagrafica_magazzino::write(const TMask& m)
{
TSheet_field& f = m.sfield(F_SHEETUM); // prende lo sheet delle unità di misura
err = f.record()->write(FALSE);
// Salvo il conai
err |= write_conai(m);
}
return err;
}
@ -2176,12 +2256,15 @@ int TAnagrafica_magazzino::rewrite(const TMask& m)
fld_giac.autoload(*get_relation());
fld_giac.sort(cmp_rows);
}
int err =TRelation_application::rewrite(m);
if (err == NOERR)
{
TSheet_field& f= m.sfield(F_SHEETUM); // prende lo sheet delle unità di misura
err|=f.record()->write(TRUE);
TSheet_field& f = m.sfield(F_SHEETUM); // prende lo sheet delle unità di misura
err |= f.record()->write(TRUE);
// Salvo il conai
err |= write_conai(m);
}
((TMask_anamag &)m).ricalcola_giacenze();
return err;

View File

@ -112,10 +112,11 @@
#define F_DESCRALT 200
#define F_SHEETUM 201
#define F_SHEETDESLIN 202
#define F_SHEETCOD 203
#define F_SHEETGIAC 204
#define F_SHEETSTOMAG 205
#define F_SHEETCON 202
#define F_SHEETDESLIN 203
#define F_SHEETCOD 204
#define F_SHEETGIAC 205
#define F_SHEETSTOMAG 206
#define F_STOULTCOS1 210
#define F_STOULTCOS2 211
#define F_STOCOSTOSTD 212
@ -240,6 +241,11 @@
#define FS_PREZZO 103
#define FS_PREZZO_LORDO 104
// definizioni per l'archivio del calcolo del CONAI
#define FS_CAT_CONAI 101
#define FS_SCAT_CONAI 102
#define FS_PES_CONAI 103
// definizioni per l'archivio descrizioni in lingua estera
#define FS_CODLIN 101
#define FS_DESCR 102
@ -255,7 +261,7 @@
#define FS_TIPOCF 108
#define FS_CODCF 109
#define FS_RAGCF 110
#define FS_DESCRC 111
#define FS_DESCRC 111
// definizioni per l'archivio giacenze
#include "ve2400d.h"

View File

@ -605,126 +605,13 @@ BEGIN
FLAGS "R"
END
TEXT DLG_NULL
SPREADSHEET F_SHEETCON 78 8
BEGIN
PROMPT 1 14 "Sottocategorie"
PROMPT 0 13 ""
ITEM "Categoria@20"
ITEM "Sottocategoria@20"
ITEM "Peso@20"
END
STRING F_SCAACC 4
BEGIN
PROMPT 1 15 "Acciaio "
FIELD CONAISC[1,4]
USE &SCC SELECT CODTAB[1,2]=="AC"
INPUT CODTAB F_SCAACC
DISPLAY "Categoria" CODTAB[1,2]
DISPLAY "Sottocategoria" CODTAB[3,4]
DISPLAY "Descrizione@50" S0
MESSAGE EMPTY CLEAR,F_CONACC
MESSAGE ENABLE,F_CONACC
OUTPUT F_SCAACC CODTAB
END
STRING F_SCAALL 4
BEGIN
PROMPT 27 15 "Alluminio "
FIELD CONAISC[5,8]
USE &SCC SELECT CODTAB[1,2]=="AL"
INPUT CODTAB F_SCAALL
COPY DISPLAY F_SCAACC
OUTPUT F_SCAALL CODTAB
MESSAGE EMPTY CLEAR,F_CONALL
MESSAGE ENABLE,F_CONALL
END
STRING F_SCACAR 4
BEGIN
PROMPT 54 15 "Carta "
FIELD CONAISC[9,12]
USE &SCC SELECT CODTAB[1,2]=="CA"
INPUT CODTAB F_SCACAR
COPY DISPLAY F_SCAACC
OUTPUT F_SCACAR CODTAB
MESSAGE EMPTY CLEAR,F_CONCAR
MESSAGE ENABLE,F_CONCAR
END
STRING F_SCAPLA 4
BEGIN
PROMPT 1 16 "Plastica "
FIELD CONAISC[13,16]
USE &SCC SELECT CODTAB[1,2]=="PL"
INPUT CODTAB F_SCAPLA
COPY DISPLAY F_SCAACC
OUTPUT F_SCAPLA CODTAB
MESSAGE EMPTY CLEAR,F_CONPLA
MESSAGE ENABLE,F_CONPLA
END
STRING F_SCALEG 4
BEGIN
PROMPT 27 16 "Legno "
FIELD CONAISC[17,20]
USE &SCC SELECT CODTAB[1,2]=="LE"
INPUT CODTAB F_SCALEG
COPY DISPLAY F_SCAACC
OUTPUT F_SCALEG CODTAB
MESSAGE EMPTY CLEAR,F_CONLEG
MESSAGE ENABLE,F_CONLEG
END
STRING F_SCAVET 4
BEGIN
PROMPT 54 16 "Vetro "
FIELD CONAISC[21,24]
USE &SCC SELECT CODTAB[1,2]=="VE"
INPUT CODTAB F_SCAVET
COPY DISPLAY F_SCAACC
OUTPUT F_SCAVET CODTAB
MESSAGE EMPTY CLEAR,F_CONVET
MESSAGE ENABLE,F_CONVET
END
TEXT DLG_NULL
BEGIN
PROMPT 1 17 "Pesi (Kg)"
END
NUMBER F_CONACC 15 5
BEGIN
PROMPT 1 18 "Acciaio "
FIELD CONACC
END
NUMBER F_CONALL 15 5
BEGIN
PROMPT 27 18 "Alluminio "
FIELD CONALL
END
NUMBER F_CONCAR 15 5
BEGIN
PROMPT 54 18 "Carta "
FIELD CONCAR
END
NUMBER F_CONPLA 15 5
BEGIN
PROMPT 1 19 "Plastica "
FIELD CONPLA
END
NUMBER F_CONLEG 15 5
BEGIN
PROMPT 27 19 "Legno "
FIELD CONLEG
END
NUMBER F_CONVET 15 5
BEGIN
PROMPT 54 19 "Vetro "
FIELD CONVET
END
ENDPAGE
@ -1675,5 +1562,6 @@ ENDMASK
#include "ve2400c.uml"
#include "ve2400b.uml"
#include "ve2400a.uml"
#include "ve2400f.uml"
#include "ve2400d.uml"
#include "ve2400e.uml"

View File

@ -23,8 +23,8 @@ PAGE "Storico giacenze" -1 -1 80 23
STRING F_STOTIPORIGA 1
BEGIN
FLAGS "D"
PROMPT 2 100 "Tipo riga"
FLAGS "D"
END

55
src/ve/ve2400f.uml Normal file
View File

@ -0,0 +1,55 @@
// SHEET 3 (CONAI) DI VE2400
PAGE "Pagina CONAI" 5 5 75 15
LIST FS_CAT_CONAI 12
BEGIN
PROMPT 3 2 "Codice categoria "
ITEM "|"
ITEM "AC|Acciaio"
ITEM "AL|Alluminio"
ITEM "CA|Carta"
ITEM "LE|Legno"
ITEM "PL|Plastica"
ITEM "VE|Vetro"
END
STRING FS_SCAT_CONAI 2
BEGIN
PROMPT 2 4 "Sottocategoria "
USE &SCC
INPUT CODTAB[1,2] FS_CAT_CONAI
INPUT CODTAB[3,4] FS_SCAT_CONAI
DISPLAY "Categoria" CODTAB[1,2]
DISPLAY "Sottocategoria" CODTAB[3,4]
DISPLAY "Descrizione@50" S0
OUTPUT FS_CAT_CONAI CODTAB[1,2]
OUTPUT FS_SCAT_CONAI CODTAB[3,4]
CHECKTYPE REQUIRED
END
NUMBER FS_PES_CONAI 15 5
BEGIN
PROMPT 2 6 "Peso in Kg "
CHECKTYPE REQUIRED
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -33 -1 "Elimina"
MESSAGE EXIT,K_DEL
END
ENDPAGE
ENDMASK