Informazioni di chiusura anno inserite nella prima linea di storico

git-svn-id: svn://10.65.10.50/trunk@4573 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
augusto 1997-06-10 12:53:19 +00:00
parent 2782535535
commit a2a967d125
3 changed files with 124 additions and 288 deletions

View File

@ -8,19 +8,14 @@
#include <modaut.h>
#include "velib.h"
#include "..\mg\mglib.h"
#include "..\mg\stomag.h"
#include "ve2400.h"
// maschera dell'anagrafica di magazzino
class TMask_anamag: public TMask {
// TLocalisamfile *_codcorr; // file di accesso ai codici corrispondenti
// TLocalisamfile *_deslin; // file di accesso alle descrizioni in lingua
// TLocalisamfile *_umart; // file di accesso alle unità di misura
// TLocalisamfile *_giacenze; // file di accesso alle giacenze
TRelation * _rel; // relazione principale
TRecord_array *_linee_rec_giac; // record array di accoppiamento delle giacenze con lo sheet
TMag_livelli * livelli_giac;// oggetto handler per i livelli di giacenza
TMag_livelli * livelli_art;// oggetto handler per i livelli di anagraficca
TMetachar * metac;
@ -40,12 +35,17 @@ class TMask_anamag: public TMask {
static bool handle_sheet_um_um(TMask_field &, KEY); // handler del campo UM dello sheet delle unità di misura
static bool handle_sheet_um_price(TMask_field &, KEY); // handler del campo PREZZO e PREZZO_LORDO dello sheet delle unità di misura
static void sheetgiac_get(TSheet_field &fld_righe, int item);
static void sheetgiac_put(TSheet_field &fld_righe, int item);
static void sheetsto_get(TSheet_field &fld_righe, int item);
static void sheetsto_put(TSheet_field &fld_righe, int item);
void clear_info_sto();
bool info_sto_dirty();
public:
TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv);
virtual ~TMask_anamag();
static void sheetgiac_get(TSheet_field &fld_righe, int item);
static void sheetgiac_put(TSheet_field &fld_righe, int item);
};
@ -53,12 +53,6 @@ public:
TMask_anamag::TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv) : TMask("ve2400")
{
_rel=rel;
/* _umart= new TLocalisamfile(LF_UMART); // apre i file per disporre dei tracciati record
_deslin= new TLocalisamfile(LF_DESLIN);
_codcorr= new TLocalisamfile(LF_CODCORR);
_giacenze= new TLocalisamfile(LF_MAG);
_linee_rec_giac= new TRecord_array(LF_MAG, "NRIGA");// alloca i record
*/
// imposta il riconoscimento dei caratteri del formato dell'ultima parte dell'articolo
TString80 format("");
TTable _tabfca("FCA");
@ -83,6 +77,8 @@ TMask_anamag::TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv)
((TSheet_field &)field(F_SHEETGIAC)).set_userget(sheetgiac_get);
((TSheet_field &)field(F_SHEETGIAC)).set_userput(sheetgiac_put);
set_handler(F_SHEETSTOMAG, handle_sheetstomag);
((TSheet_field &)field(F_SHEETSTOMAG)).set_userget(sheetsto_get);
((TSheet_field &)field(F_SHEETSTOMAG)).set_userput(sheetsto_put);
TSheet_field &f= (TSheet_field &)field(F_SHEETUM);
@ -134,7 +130,6 @@ TMask_anamag::TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv)
field(F_CODART).hide();
field(F_GCA).hide();
for (int i=0; i<3; i++)
{
// versione con campi predefiniti sulla maschera
@ -161,15 +156,61 @@ TMask_anamag::TMask_anamag(TRelation * rel, bool enable_mag, bool enable_artliv)
}
}
void TMask_anamag::sheetsto_put(TSheet_field &sheet_sto, int item)
{
if (item>1) return;
TMask_anamag & m=(TMask_anamag & )sheet_sto.mask();
TRectype & first_rec=sheet_sto.record()->row(1,TRUE);
first_rec.put(STOMAG_ULTCOS1,m.get_real(F_STOULTCOS1 ));
first_rec.put(STOMAG_ULTCOS2,m.get_real(F_STOULTCOS2 ));
first_rec.put(STOMAG_COSTSTD,m.get_real(F_STOCOSTOSTD ));
first_rec.put(STOMAG_COSTOMEDIO,m.get_real(F_STOCOSTOMEDIO ));
first_rec.put(STOMAG_CATVEN,m.get(F_STOCATVEN ));
first_rec.put(STOMAG_CODLISTINO,m.get(F_STOCODLIST));
first_rec.put(STOMAG_PRZLIST,m.get(F_STOPREZZOLIST ));
}
void TMask_anamag::sheetsto_get(TSheet_field &sheet_sto, int item)
{
if (item>1) return;
TMask_anamag & m=(TMask_anamag &) sheet_sto.mask();
TRectype & first_rec=sheet_sto.record()->row(1,TRUE);
m.set(F_STOULTCOS1, first_rec.get_real(STOMAG_ULTCOS1));
m.set(F_STOULTCOS2, first_rec.get_real(STOMAG_ULTCOS2 ));
m.set(F_STOCOSTOSTD, first_rec.get_real( STOMAG_COSTSTD ));
m.set(F_STOCOSTOMEDIO, first_rec.get_real(STOMAG_COSTOMEDIO));
m.set(F_STOCATVEN , first_rec.get(STOMAG_CATVEN));
m.set(F_STOCODLIST , first_rec.get(STOMAG_CODLISTINO));
m.set(F_STOPREZZOLIST ,first_rec.get(STOMAG_PRZLIST));
}
bool TMask_anamag::info_sto_dirty()
{
return
field(F_STOULTCOS1).dirty() ||
field(F_STOULTCOS2).dirty() ||
field(F_STOCOSTOSTD).dirty() ||
field(F_STOCOSTOMEDIO).dirty()||
field(F_STOCATVEN ).dirty()||
field(F_STOCODLIST).dirty()||
field(F_STOPREZZOLIST).dirty();
}
void TMask_anamag::clear_info_sto()
{
reset(F_STOULTCOS1);
reset(F_STOULTCOS2);
reset(F_STOCOSTOSTD);
reset(F_STOCOSTOMEDIO);
reset(F_STOCATVEN );
reset(F_STOCODLIST);
reset(F_STOPREZZOLIST);
}
TMask_anamag::~TMask_anamag()
{
/* delete _linee_rec_giac;
delete _giacenze;
delete _codcorr;
delete _deslin;
delete _umart;
*/
delete livelli_art;
delete livelli_giac;
}
@ -264,14 +305,18 @@ bool TMask_anamag::handle_stoanno(TMask_field &fld, KEY k)
if (mask.last_annosto>0 && mask.last_annosto!=fld.mask().get_int(F_STOANNO))
{
if (fld.mask().field(F_SHEETSTOMAG).dirty() && handle_sheetstomag(fld_stomag,K_ENTER)) {
if ((mask.field(F_SHEETSTOMAG).dirty() || mask.info_sto_dirty()) &&
handle_sheetstomag(fld_stomag,K_ENTER) &&
fld_stomag.items()>0 )
{
if (fld.yesno_box("Vuoi salvare le righe di storico per l'anno %d",mask.last_annosto)) {
fld_stomag.autosave(*mask._rel);
fld_stomag.record()->write(TRUE);
}
}
mask.field(F_STOANNORIF).set(fld.get());
// rilegge le giacenze relative a quell'anno ed aggiorna il layout
// rilegge lo storico relativo a quell'anno ed aggiorna il layout
mask.clear_info_sto();
fld_stomag.record()->read(*fld_stomag.putkey(*mask._rel));
fld_stomag.autoload(*mask._rel);
fld_stomag.force_update();
@ -282,7 +327,6 @@ bool TMask_anamag::handle_stoanno(TMask_field &fld, KEY k)
}
bool TMask_anamag::handle_sheet_um(TMask_field &fld, KEY k)
{
if (k == K_ENTER)
@ -620,94 +664,21 @@ int TAnagrafica_magazzino::read(TMask& m)
if (err == NOERR)
{
// LETTURA SHEET STORICO MAGAZZINO IN AUTOMATICO
TSheet_field &fld_stomag= (TSheet_field &)m.field(F_SHEETSTOMAG); // prende il sheet delle unità di misura
fld_stomag.sheet_mask().field(F_STOCODART).set(m.field(F_CODART).get());
/*TSheet_field &fld_stomag= (TSheet_field &)m.field(F_SHEETSTOMAG); // prende il sheet delle unità di misura
fld_stomag.sheet_mask().field(F_STOCODART).set(m.field(F_CODART).get()); */
//int i;
// *****************************
// LETTURA SHEET UNITA' DI MISURA
TSheet_field &fld_um= (TSheet_field &)m.field(F_SHEETUM); // prende il sheet delle unità di misura
/*
TRectype rum(LF_UMART); // crea il record dal file delle unità di misura
TString codiva(m.get(F_CODIVA));
real netto = 0.0, lordo = 0.0;
fld_um.destroy(); // cancella lo sheet
rum.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera)
_linee_rec_um->read(rum); // legge il record array
const int lastum = _linee_rec_um->last_row();
for (int i= 1; i <= lastum; i++)
{
TRectype &rec= _linee_rec_um->row(i, TRUE); // prende il record della riga corrente dal record array
TToken_string &row= fld_um.row(i-1);
row = "";
row.add(rec.get("UM")); // imposta la riga dello sheet con i campi del record della riga corrente
row.add(rec.get("FC"));
row.add(rec.get("PREZZO"));
netto = real(rec.get("PREZZO"));
lordo = netto2lordo(netto,codiva);
row.add(lordo.string());
}
*/
if (fld_um.items() == 0)
((TToken_string &)fld_um.row(0)) = "|1"; // aggiunge una riga allo sheet
else
((TToken_string &)fld_um.row(0)).add("1",1); // forza la prima unita' di misura a 1
fld_um.disable_cell(0, 1); // mette in sola lettura il secondo campo della prima riga (il fattore di conversione della prima U.M. è fisso a 1)
fld_um.force_update(0); // aggiorna lo stato della riga 0
// *****************************
// LETTURA SHEET DESCRIZIONI IN LINGUA
/*
TRectype r(LF_DESLIN); // prende il record corrente dal file delle descrizioni in lingua
TSheet_field &fld_deslin= (TSheet_field &)m.field(F_SHEETDESLIN); // prende il sheet delle descrizioni in lingua
r.zero();
r.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera)
_linee_rec_deslin->read(r); // legge il record array
fld_deslin.destroy(); // cancella lo sheet
const int lastdes= _linee_rec_deslin->last_row();
for (i = 1; i <= lastdes; i++)
{
TRectype &rec= _linee_rec_deslin->row(i, TRUE); // prende il record della riga corrente dal record array
TToken_string &row= fld_deslin.row(i-1);
row = "";
row.add(rec.get("CODLIN")); // imposta la riga dello sheet con i campi del record della riga corrente
row.add(rec.get("DESCR"));
}
*/
// ***************************
// LETTURA SHEET CODICI CORRISPONDENTI
/*
TRectype rcor(LF_CODCORR); // prende il record corrente dal file dei codici corrispondenti
TSheet_field &fld_cod= (TSheet_field &)m.field(F_SHEETCOD); // prende lo sheet dei codici corrispondenti
rcor.zero();
rcor.put("CODART", m.get(F_CODART)); // imposta il record corrente sul codice articolo (dalla maschera)
_linee_rec_cod->read(rcor); // legge il record array
fld_cod.destroy(); // cancella lo sheet
const int lastcod = _linee_rec_cod->last_row();
for (i= 1; i <= lastcod; i++)
{
TRectype &rec= _linee_rec_cod->row(i, TRUE); // prende il record della riga corrente dal record array
TToken_string &row= fld_cod.row(i-1);
row = "";
row.add(rec.get("CODARTALT")); // imposta la riga dello sheet con i campi del record della riga corrente
row.add(rec.get("TIPO"));
}
*/
// *****************************
// LETTURA SHEET GIACENZE
//((TMask_anamag &)m).sheetgiac_read();
// preleva le info di storico (prezzi, ultcosti, ecc)
} // no errors in TRelation_application::read(m);
return err;
}
@ -715,201 +686,19 @@ int TAnagrafica_magazzino::read(TMask& m)
bool TAnagrafica_magazzino::remove()
{
return //_linee_rec_um->remove() == NOERR &&
// _linee_rec_deslin->remove() == NOERR &&
// _linee_rec_cod->remove() == NOERR &&
// _msk->sheetgiac_remove() == NOERR &&
TRelation_application::remove();
return TRelation_application::remove();
}
int TAnagrafica_magazzino::write(const TMask& m)
{
int err= TRelation_application::write(m);
//if (err != NOERR)
// return err;
//int i;
// ***********************
// write dello sheet unita' di misura
/*
TSheet_field &fld_um= (TSheet_field &)m.field(F_SHEETUM);
_linee_rec_um->destroy_rows();
if (m.insert_mode()) _linee_rec_um->renum_key("CODART", m.get(F_CODART));
for (int i= 0; i < fld_um.items(); i++)
{
TToken_string &row= fld_um.row(i);
TString16 um(row.get(0));
um.rtrim();
if (um.not_empty())
{
TRectype &rec= _linee_rec_um->row(i+1, TRUE);
rec.put("UM", um);
rec.put("FC", row.get());
rec.put("PREZZO", row.get());
}
}
err = _linee_rec_um->write();
if (err != NOERR)
return err;
*/
// ***********************
// write dello sheet descrizioni in lingua
/*TSheet_field &fld_deslin= (TSheet_field &)m.field(F_SHEETDESLIN);
_linee_rec_deslin->destroy_rows();
if (m.insert_mode()) _linee_rec_deslin->renum_key("CODART", m.get(F_CODART));
for (i = 0; i < fld_deslin.items(); i++)
{
TToken_string &row= fld_deslin.row(i);
TString16 codlin(row.get(0));
codlin.rtrim();
if (codlin.not_empty())
{
TRectype &rec= _linee_rec_deslin->row(i+1, TRUE);
rec.put("CODLIN", codlin);
rec.put("DESCR", row.get());
}
}
err= _linee_rec_deslin->write();
if (err != NOERR)
return err;
*/
// ***********************
// write dello sheet codici alternativi
/*
TSheet_field &fld_cod= (TSheet_field &)m.field(F_SHEETCOD);
_linee_rec_cod->destroy_rows();
if (m.insert_mode()) _linee_rec_cod->renum_key("CODART", m.get(F_CODART));
for (i= 0; i < fld_cod.items(); i++)
{
TToken_string &row= fld_cod.row(i);
TString80 codartalt(row.get(0));
codartalt.rtrim();
if (codartalt.not_empty())
{
TRectype &reccor= _linee_rec_cod->row(i+1, TRUE);
reccor.put("CODARTALT", codartalt);
reccor.put("TIPO", row.get());
}
}
err= _linee_rec_cod->write();
if (err != NOERR)
return err;
*/
// ***********************
// write dello sheet giacenze
//err = ((TMask_anamag &)m).sheetgiac_write(FALSE);
return err;
return TRelation_application::write(m);
}
int TAnagrafica_magazzino::rewrite(const TMask& m)
{
int err;
// rewrite dello sheet Unita' di misura
/*
TSheet_field &fld_um= (TSheet_field &)m.field(F_SHEETUM);
_linee_rec_um->destroy_rows();
if (m.insert_mode()) _linee_rec_um->renum_key("CODART", m.get(F_CODART));
for (int i= 0; i < fld_um.items(); i++)
{
TToken_string & row = fld_um.row(i);
TString16 um(row.get(0));
um.rtrim();
if (um.not_empty())
{
TRectype &rec= _linee_rec_um->row(i+1, TRUE);
rec.put("UM", um);
rec.put("FC", row.get());
rec.put("PREZZO", row.get());
}
}
int err = _linee_rec_um->rewrite();
if (err != NOERR)
return err;
*/
// rewrite dello sheet descrizioni in lingua
/*
TSheet_field &fld_deslin= (TSheet_field &)m.field(F_SHEETDESLIN);
_linee_rec_deslin->destroy_rows();
if (m.insert_mode()) _linee_rec_deslin->renum_key("CODART", m.get(F_CODART));
for (i= 0; i < fld_deslin.items(); i++)
{
TToken_string & row = fld_deslin.row(i);
TString16 codlin(row.get(0));
codlin.rtrim();
if (codlin.not_empty())
{
TRectype &rec= _linee_rec_deslin->row(i+1, TRUE);
rec.put("CODLIN", codlin);
rec.put("DESCR", row.get());
}
}
err = _linee_rec_deslin->rewrite();
if (err != NOERR)
return err;
*/
// rewrite dello sheet codici alt.
/*
TSheet_field &fld_cod= (TSheet_field &)m.field(F_SHEETCOD);
_linee_rec_cod->destroy_rows();
if (m.insert_mode()) _linee_rec_cod->renum_key("CODART", m.get(F_CODART));
for (i = 0; i < fld_cod.items(); i++)
{
TToken_string &row= fld_cod.row(i);
TString80 codartalt(row.get(0));
codartalt.rtrim();
if (codartalt.not_empty())
{
TRectype &reccor = _linee_rec_cod->row(i+1, TRUE);
reccor.put("CODARTALT", codartalt);
reccor.put("TIPO", row.get());
}
}
err = _linee_rec_cod->rewrite();
if (err != NOERR)
return err;
*/
// rewrite dello sheet giacenze
//
//err = ((TMask_anamag &)m).sheetgiac_write(TRUE);
//if (err == NOERR)
err= TRelation_application::rewrite(m);
return err;
return TRelation_application::rewrite(m);
}
void TAnagrafica_magazzino::init_insert_mode(TMask &m)
{
TSheet_field &f= (TSheet_field &)m.field(F_SHEETUM);
@ -921,7 +710,6 @@ void TAnagrafica_magazzino::init_insert_mode(TMask &m)
}
}
// ************************
//
int ve2400(int argc, char* argv[])

View File

@ -65,7 +65,6 @@
#define F_INDBILA 176
#define F_INDBILV 177
#define H_ANNO 180
#define F_ANNO 181
#define F_ANNORIF 182
@ -90,6 +89,14 @@
#define F_SHEETGIAC 203
#define F_SHEETSTOMAG 204
#define F_STOULTCOS1 210
#define F_STOULTCOS2 211
#define F_STOCOSTOSTD 212
#define F_STOCOSTOMEDIO 213
#define F_STOCATVEN 214
#define F_STOCODLIST 215
#define F_STOPREZZOLIST 216
// definizioni per l'archivio di misura articoli
#define FS_CODUM 101
#define FS_FCUM 102
@ -114,3 +121,4 @@
#define F_STOPREZZO 104
#define F_STOCODART 120

View File

@ -839,6 +839,45 @@ BEGIN
FLAGS "AD"
END
NUMBER F_STOULTCOS1 15 5
BEGIN
FLAGS "U"
PROMPT 2 16 "Ultimo costo "
END
NUMBER F_STOULTCOS2 15 5
BEGIN
FLAGS "U"
PROMPT 42 16 "Penultimo costo "
END
NUMBER F_STOCOSTOSTD 15 5
BEGIN
FLAGS "U"
PROMPT 2 17 "Costo standard "
END
NUMBER F_STOCOSTOMEDIO 15 5
BEGIN
FLAGS "U"
PROMPT 42 17 "Costo medio "
END
STRING F_STOCATVEN 3
BEGIN
PROMPT 2 18 "Cat.vendita "
END
STRING F_STOCODLIST 3
BEGIN
PROMPT 26 18 "Cod.listino "
END
NUMBER F_STOPREZZOLIST 15 5
BEGIN
FLAGS "U"
PROMPT 47 18 "Prezzo "
END
SPREADSHEET F_SHEETSTOMAG 77 10
BEGIN
PROMPT 2 4 "Storico Giacenze"
@ -852,6 +891,7 @@ BEGIN
ITEM "Valore@15"
END
ENDPAGE
ENDMASK