Modifiche sulla versione Linux dalla 2.1

git-svn-id: svn://10.65.10.50/trunk@12028 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2004-04-28 22:04:10 +00:00
parent 31ba4f8a78
commit 03e5cc6e93
3 changed files with 99 additions and 83 deletions

View File

@ -89,7 +89,7 @@ TMask_copy::TMask_copy(const TMask& m, const bool enable_catven) : TAutomask("ve
TCondizioni_vendita &app() static TCondizioni_vendita &app()
{ // funzione che ritorna il riferimento alla classe principale dell'applicazione { // funzione che ritorna il riferimento alla classe principale dell'applicazione
return (TCondizioni_vendita &)main_app(); return (TCondizioni_vendita &)main_app();
} }

View File

@ -33,7 +33,8 @@ static void key_enable(TMask & m, short id, int key = 1)
m.enable(id); m.enable(id);
} }
class TRighe_condizioni_vendita: public TRelation_application { class TRighe_condizioni_vendita: public TRelation_application
{
TMask *_msk; // maschera principale TMask *_msk; // maschera principale
TRelation *_rel; // relazione principale TRelation *_rel; // relazione principale
@ -72,10 +73,7 @@ public:
}; };
static TRighe_condizioni_vendita &app() { return (TRighe_condizioni_vendita &)main_app(); }
TRighe_condizioni_vendita &app() { // funzione che ritorna il riferimento alla classe principale dell'applicazione
return (TRighe_condizioni_vendita &)main_app();
}
@ -221,34 +219,45 @@ bool TRighe_condizioni_vendita::user_destroy() {
void TRighe_condizioni_vendita::hide_and_show_codriga() { void TRighe_condizioni_vendita::hide_and_show_codriga() {
TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione
if (_msk->query_mode()) { // se la maschera è in modo query procede con i controlli... if (_msk->query_mode())
{ // se la maschera è in modo query procede con i controlli...
short id_campi_1[4]= { F_R_CODRIGA_A, F_R_CODRIGA_G, F_R_CODRIGA_S, F_R_CODRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione short id_campi_1[4]= { F_R_CODRIGA_A, F_R_CODRIGA_G, F_R_CODRIGA_S, F_R_CODRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione
short id_campi_2[4]= { F_R_DESRIGA_A, F_R_DESRIGA_G, F_R_DESRIGA_S, F_R_DESRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione short id_campi_2[4]= { F_R_DESRIGA_A, F_R_DESRIGA_G, F_R_DESRIGA_S, F_R_DESRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione
char tag_campi[4]= { 'A', 'G', 'S', 'R' }; // vettore dei tag di TIPORIGA per i tre campi CODRIGA in mutua esclusione char tag_campi[4]= { 'A', 'G', 'S', 'R' }; // vettore dei tag di TIPORIGA per i tre campi CODRIGA in mutua esclusione
bool &_um= app()._um; // prende il riferimento al booleano di abilitazione locale delle unità di misura bool &_um= app()._um; // prende il riferimento al booleano di abilitazione locale delle unità di misura
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di tipo di archivio
char tag_campo= toupper(_msk->get(F_R_TIPORIGA)[0]); // prende il tag del campo da abilitare in TIPORIGA char tag_campo= toupper(_msk->get(F_R_TIPORIGA)[0]); // prende il tag del campo da abilitare in TIPORIGA
for (int i=0; i<4; i++) { // ciclo sui quattro campi CODRIGA
if (tag_campo == tag_campi[i]) { // il campo indicato con il tag viene reso visibile for (int i=0; i<4; i++)
{ // ciclo sui quattro campi CODRIGA
if (tag_campo == tag_campi[i])
{ // il campo indicato con il tag viene reso visibile
key_show(*_msk, id_campi_1[i]); key_show(*_msk, id_campi_1[i]);
_msk->show(id_campi_2[i]); _msk->show(id_campi_2[i]);
} else { // i campi non corrispondenti al tag vengono resi invisibili }
else
{ // i campi non corrispondenti al tag vengono resi invisibili
key_hide(*_msk, id_campi_1[i]); key_hide(*_msk, id_campi_1[i]);
_msk->hide(id_campi_2[i]); _msk->hide(id_campi_2[i]);
} }
} }
if (_um && (tag_campo=='A')) { key_enable(*_msk, F_R_UM); } // se la gest. delle u.m. è abilitata, il campo viene attivato se la riga è un articolo... if (_um && (tag_campo=='A'))
else { key_disable(*_msk, F_R_UM); } // ...altrimenti viene disattivato key_enable(*_msk, F_R_UM); // se la gest. delle u.m. è abilitata, il campo viene attivato se la riga è un articolo...
else
key_disable(*_msk, F_R_UM); // ...altrimenti viene disattivato
} }
} }
bool TRighe_condizioni_vendita::handle_tiporiga(TMask_field &fld, KEY k) { bool TRighe_condizioni_vendita::handle_tiporiga(TMask_field &fld, KEY k)
if (k==K_SPACE) hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA {
if (k==K_SPACE)
hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
return TRUE; return TRUE;
} }
bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) { bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k)
if ((k==K_TAB) && fld.get().not_empty()) { {
if ((k==K_TAB) && fld.get().not_empty())
{
bool &_gest_um= app()._gest_um; // prende il riferimento al booleano di abilitazione delle unità di misura bool &_gest_um= app()._gest_um; // prende il riferimento al booleano di abilitazione delle unità di misura
bool &_gest_so= app()._gest_so; // prende il riferimento al booleano di abilitazione degli sconti/omaggi bool &_gest_so= app()._gest_so; // prende il riferimento al booleano di abilitazione degli sconti/omaggi
bool &_gest_sca= app()._gest_sca; // prende il riferimento al booleano di abilitazione degli scaglioni bool &_gest_sca= app()._gest_sca; // prende il riferimento al booleano di abilitazione degli scaglioni
@ -257,36 +266,42 @@ bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione
TLocalisamfile condv(LF_CONDV); // apre il file della testata (condizioni di vendita) TLocalisamfile condv(LF_CONDV); // apre il file della testata (condizioni di vendita)
condv.put("TIPO", _rcondven); // riempie il campo "TIPO" condv.put("TIPO", _rcondven); // riempie il campo "TIPO"
switch (_rcondven[0]) {
case 'L': // riempie il resto della chiave dei listini switch (_rcondven[0])
condv.put("CATVEN", _msk->get(F_R_L_CATVEN)); {
condv.put("COD", _msk->get(F_R_L_COD)); case 'L': // riempie il resto della chiave dei listini
break; condv.put("CATVEN", _msk->get(F_R_L_CATVEN));
case 'C': // riempie il resto della chiave dei contratti condv.put("COD", _msk->get(F_R_L_COD));
condv.put("TIPOCF", _msk->get(F_R_C_TIPOCF)); break;
condv.put("CODCF", _msk->get(F_R_C_CODCF)); case 'C': // riempie il resto della chiave dei contratti
condv.put("COD", _msk->get(F_R_C_COD)); condv.put("TIPOCF", _msk->get(F_R_C_TIPOCF));
break; condv.put("CODCF", _msk->get(F_R_C_CODCF));
case 'O': // riempie il resto della chiave delle offerte condv.put("COD", _msk->get(F_R_C_COD));
condv.put("COD", _msk->get(F_R_O_COD)); break;
break; case 'O': // riempie il resto della chiave delle offerte
condv.put("COD", _msk->get(F_R_O_COD));
break;
} }
if (condv.read()==NOERR) { // se la lettura è andata a buon fine abilita/disabilita i campi della maschera in base ai booleani della testata if (condv.read()==NOERR)
TString valuta(condv.get("CODVAL")); { // se la lettura è andata a buon fine abilita/disabilita i campi della maschera in base ai booleani della testata
TString seqric(condv.get("SEQRIC")); const TString valuta(condv.get("CODVAL"));
const TString seqric(condv.get("SEQRIC"));
TToken_string codes, values; TToken_string codes, values;
const bool imp_lordi = condv.get_bool("IMPLORDI");
app()._codval = valuta; app()._codval = valuta;
if (_gest_um) _um= condv.get_bool("GESTUM"); // legge lo stato di abilitazione della gestione delle unità di misura if (_gest_um)
_um = condv.get_bool("GESTUM"); // legge lo stato di abilitazione della gestione delle unità di misura
_gest_sca &= condv.get_bool("GESTSCAGL"); _gest_sca &= condv.get_bool("GESTSCAGL");
hide_and_show_codriga(); // lancia la funzione che si occupa di abilitare/disabilitare il campo "unità di misura" hide_and_show_codriga(); // lancia la funzione che si occupa di abilitare/disabilitare il campo "unità di misura"
if (_gest_sca) { if (_gest_sca)
{
if (_msk->query_mode()) if (_msk->query_mode())
key_enable(*_msk, F_R_NSCAGL); // abilita il campo "numero scaglione" key_enable(*_msk, F_R_NSCAGL); // abilita il campo "numero scaglione"
_msk->enable(F_R_QLIM); // abilita il campo "quantità limite scaglione" _msk->enable(F_R_QLIM); // abilita il campo "quantità limite scaglione"
((TReal_field&)_msk->field(F_R_QLIM)).set_decimals(condv.get_int("DECIMALI")); // E ne setta il numero di decimals ((TReal_field&)_msk->field(F_R_QLIM)).set_decimals(condv.get_int("DECIMALI")); // E ne setta il numero di decimals
} else { }
else
{
if (_msk->query_mode()) if (_msk->query_mode())
key_disable(*_msk, F_R_NSCAGL); // disabilita il campo "numero scaglione" key_disable(*_msk, F_R_NSCAGL); // disabilita il campo "numero scaglione"
_msk->disable(F_R_QLIM); // disabilita il campo "quantità limite scaglione" _msk->disable(F_R_QLIM); // disabilita il campo "quantità limite scaglione"
@ -320,11 +335,12 @@ bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
tiporiga.replace_items(codes,values); // Sostituisce gli items del list box del tipo riga in base a cio' che e' abilitato in testata tiporiga.replace_items(codes,values); // Sostituisce gli items del list box del tipo riga in base a cio' che e' abilitato in testata
} }
return TRUE; return TRUE;
} else {
error_box("Non esiste una testata corrispondente alla chiave specificata");
return FALSE;
} }
} else return TRUE; else
return error_box("Non esiste una testata corrispondente alla chiave specificata");
}
else
return TRUE;
} }

View File

@ -11,11 +11,11 @@
#include "velib.h" #include "velib.h"
#include "ve2400.h" #include "ve2400.h"
#include "..\cg\cglib01.h" #include "../cg/cglib01.h"
#include "..\mg\mglib.h" #include "../mg/mglib.h"
#include "..\mg\stomag.h" #include "../mg/stomag.h"
#include "..\mg\anamag.h" #include "../mg/anamag.h"
#include "..\mg\codcorr.h" #include "../mg/codcorr.h"
// maschera dell'anagrafica di magazzino // maschera dell'anagrafica di magazzino
class TMask_anamag: public TMask { class TMask_anamag: public TMask {
@ -697,29 +697,33 @@ bool TMask_anamag::handle_sheet_um(TMask_field &fld, KEY k)
return error_box("Le unità di misura devono essere diverse tra loro"); return error_box("Le unità di misura devono essere diverse tra loro");
} }
} }
if (!m.um_principale().blank() && m.um_principale()!=f.cell(0,f.cid2index(FS_CODUM))) { if (!m.um_principale().blank() && m.um_principale()!=f.cell(0,f.cid2index(FS_CODUM)))
for (int i= 0; i<f.items(); i++) {
int i;
for (i= 0; i<f.items(); i++)
{ {
if (m.um_principale()==f.cell(i,f.cid2index(FS_CODUM))) if (m.um_principale()==f.cell(i,f.cid2index(FS_CODUM)))
break; break;
} }
if (i>=f.items()) { if (i>=f.items())
return error_box("L'unità di misura '%s' deve essere presente in tabella",(const char *)m.um_principale()); return error_box("L'unità di misura '%s' deve essere presente in tabella",(const char *)m.um_principale());
}
} }
} }
else if (k==K_SPACE) { else
m.um_principale()=f.cell(0,f.cid2index(FS_CODUM)); if (k==K_SPACE)
} m.um_principale()=f.cell(0,f.cid2index(FS_CODUM));
return TRUE; return TRUE;
} }
bool TMask_anamag::notify_sheet_um(TSheet_field &fld_um, int r, KEY k) bool TMask_anamag::notify_sheet_um(TSheet_field &fld_um, int r, KEY k)
{ {
if (k == K_TAB) { if (k == K_TAB)
{
fld_um.sheet_mask().enable(DLG_DELREC, r > 0); fld_um.sheet_mask().enable(DLG_DELREC, r > 0);
if (r == 0) { if (r == 0)
{
if (fld_um.items() == 0) if (fld_um.items() == 0)
((TToken_string &)fld_um.row(0)) = "|1"; // aggiunge una riga allo sheet ((TToken_string &)fld_um.row(0)) = "|1"; // aggiunge una riga allo sheet
else else
@ -841,7 +845,9 @@ int TMask_anamag::add_totali_storico(TString & codmag)
{ {
TSheet_field &s =(TSheet_field &)field(F_SHEETSTOMAG); TSheet_field &s =(TSheet_field &)field(F_SHEETSTOMAG);
bool need_rigatotali(TRUE); bool need_rigatotali(TRUE);
for (int r=0 ; r< s.items() && codmag>=s.cell(r,s.cid2index(F_STOCODMAG)); r++) int r;
for (r=0 ; r < s.items() && codmag>=s.cell(r,s.cid2index(F_STOCODMAG)); r++)
{ {
if (*s.cell(r,s.cid2index(F_STOTIPORIGA))==SIMBOLO_TOTALI if (*s.cell(r,s.cid2index(F_STOTIPORIGA))==SIMBOLO_TOTALI
&& codmag==s.cell(r,s.cid2index(F_STOCODMAG))) && codmag==s.cell(r,s.cid2index(F_STOCODMAG)))
@ -912,17 +918,15 @@ void TMask_anamag::update_totali_storico(TString & codmag)
bool TMask_anamag::remove_totali_storico(TString & codmag) bool TMask_anamag::remove_totali_storico(TString & codmag)
{ {
TSheet_field &s =(TSheet_field &)field(F_SHEETSTOMAG); if (codmag.blank())
bool found_some(FALSE);
if (codmag==" ")
return FALSE; return FALSE;
for (int r=0 ; TSheet_field &s =(TSheet_field &)field(F_SHEETSTOMAG);
!found_some && r< s.items()-1 bool found_some(FALSE);
&& !(*s.cell(r,s.cid2index(F_STOTIPORIGA))==SIMBOLO_TOTALI int r;
&& codmag==s.cell(r,s.cid2index(F_STOCODMAG)));
r++) for (r=0 ; !found_some && r< s.items()-1 && !(*s.cell(r,s.cid2index(F_STOTIPORIGA))==SIMBOLO_TOTALI
&& codmag==s.cell(r,s.cid2index(F_STOCODMAG))); r++)
{ {
if (*s.cell(r,s.cid2index(F_STOTIPORIGA))!=SIMBOLO_TOTALI if (*s.cell(r,s.cid2index(F_STOTIPORIGA))!=SIMBOLO_TOTALI
&& codmag==s.cell(r,s.cid2index(F_STOCODMAG))) && codmag==s.cell(r,s.cid2index(F_STOCODMAG)))
@ -1066,7 +1070,7 @@ bool TMask_anamag::notify_sheet_sto(TSheet_field &s, int r, KEY k)
{ {
static TString16 oldcodmag,newcodmag,oldanno,newanno; static TString16 oldcodmag,newcodmag,oldanno,newanno;
TMask_anamag & m=(TMask_anamag &)s.mask(); TMask_anamag & m=(TMask_anamag &)s.mask();
bool need_rigatotali=TRUE;
switch (k) switch (k)
{ {
case K_DEL: case K_DEL:
@ -1131,7 +1135,7 @@ bool TMask_anamag::notify_sheet_sto(TSheet_field &s, int r, KEY k)
r--; r--;
} }
m.add_totali_storico(newcodmag); m.add_totali_storico(newcodmag);
TSheet_field & s_um=(TSheet_field & )s.mask().field(F_SHEETUM); // TSheet_field & s_um=(TSheet_field & )s.mask().field(F_SHEETUM); // qui verificare
s.force_update(); s.force_update();
} }
break; break;
@ -1158,8 +1162,10 @@ bool TMask_anamag::handle_sheetstomag(TMask_field &fld, KEY k)
{ {
if (!m.check_totali_storico()) if (!m.check_totali_storico())
return FALSE; return FALSE;
TAssoc_array v; // istanzia l'hash table per il controllo di univocità TAssoc_array v; // istanzia l'hash table per il controllo di univocitˆ
for (int i= 0; i< items; i++) int i;
for (i= 0; i< items; i++)
{ {
if (*f.cell(i,f.cid2index(F_STOTIPORIGA))!=SIMBOLO_TOTALI) if (*f.cell(i,f.cid2index(F_STOTIPORIGA))!=SIMBOLO_TOTALI)
{ {
@ -1358,8 +1364,11 @@ void TMask_anamag::ricalcola_giacenze()
{ {
real fc(1.0); real fc(1.0);
TSheet_field & f=(TSheet_field &)field(F_SHEETUM); TSheet_field & f=(TSheet_field &)field(F_SHEETUM);
if (!um_principale().blank() && um_principale()!=f.cell(0,f.cid2index(FS_CODUM))) { if (!um_principale().blank() && um_principale()!=f.cell(0,f.cid2index(FS_CODUM)))
for (int i= 0; i<f.items(); i++) {
int i;
for (i= 0; i<f.items(); i++)
{ {
if (um_principale()==f.cell(i,f.cid2index(FS_CODUM))) if (um_principale()==f.cell(i,f.cid2index(FS_CODUM)))
break; break;
@ -1396,16 +1405,6 @@ void TMask_anamag::ricalcola_giacenze()
mag.put(MAG_PRODCOMP,mag.get_real(MAG_PRODCOMP)*fc); mag.put(MAG_PRODCOMP,mag.get_real(MAG_PRODCOMP)*fc);
mag.put(MAG_PRODFIN,mag.get_real(MAG_PRODFIN)*fc); mag.put(MAG_PRODFIN,mag.get_real(MAG_PRODFIN)*fc);
mag.put(MAG_SCORTAMIN,mag.get_real(MAG_SCORTAMIN)*fc); mag.put(MAG_SCORTAMIN,mag.get_real(MAG_SCORTAMIN)*fc);
// i valori non vanno aggiornati !
/*mag.put(MAG_VALACQ,mag.get_real(MAG_VALACQ)*fc);
mag.put(MAG_VALENT,mag.get_real(MAG_VALENT)*fc);
mag.put(MAG_VALVEN,mag.get_real(MAG_VALVEN)*fc);
mag.put(MAG_VALUSC,mag.get_real(MAG_VALUSC)*fc);
mag.put(MAG_VALORDC,mag.get_real(MAG_VALORDC)*fc);
mag.put(MAG_VALORDF,mag.get_real(MAG_VALORDF)*fc);
mag.put(MAG_VALRIM,mag.get_real(MAG_VALRIM)*fc);
mag.put(MAG_VALSCARTI,mag.get_real(MAG_VALSCARTI)*fc); */
mag.rewrite(); mag.rewrite();
mag.next(); mag.next();
} }
@ -1421,7 +1420,8 @@ void TMask_anamag::ricalcola_giacenze()
stomag.rewrite(); stomag.rewrite();
stomag.next(); stomag.next();
} }
} while (annoes=esercizi_contabili().next(annoes)); }
while ((annoes=esercizi_contabili().next(annoes)) > 0); // qui verificare
} }
return; return;
} }