Patch level : 10.0
Files correlati : f47.* ve2.exe Ricompilazione Demo : [ ] Commento : 0001228: ins. anagrafico articoli inserisco un articolo collegandomi da un ordine cliente, imposto l'unità di misura errata (es. gr), la cambio in nr ma continua a segnalarmi che l'unità di misura gr non esiste. Per la cronaca, esistono sia gr che nr. Portata da 12 a 16 la lunghezza dei conti analitici in anagrafica articoli git-svn-id: svn://10.65.10.50/trunk@18615 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
4fdd15adc5
commit
db5a76ef7d
@ -1,3 +1,3 @@
|
||||
47
|
||||
0
|
||||
$anamag|0|0|1079|0|Anagrafica di magazzino|NART||
|
||||
$anamag|0|0|1095|0|Anagrafica di magazzino|NART||
|
||||
|
@ -56,8 +56,8 @@ CONCAR|4|15|5|Peso Carta (Kg) per CONAI
|
||||
CONPLA|4|15|5|Peso Plastica (Kg) per CONAI
|
||||
CONLEG|4|15|5|Peso Legno (Kg) per CONAI
|
||||
CONVET|4|15|5|Peso Vetro (Kg) per CONAI
|
||||
CONTOINDA|1|12|0|Codice piano dei conti industriale (GrCoSo) Acquisti
|
||||
CONTOINDV|1|12|0|Codice piano dei conti industriale (GrCoSo) Vendite
|
||||
CONTOINDA|1|20|0|Codice piano dei conti industriale (GrCoSo) Acquisti
|
||||
CONTOINDV|1|20|0|Codice piano dei conti industriale (GrCoSo) Vendite
|
||||
COLLTYPE|1|1|0|Tipo collegamento DB
|
||||
CODMAG|1|5|0|Codice magazzino
|
||||
VALDIST|2|2|0|Tipo di Valorizzazione per Distinta Base
|
||||
|
@ -300,7 +300,7 @@ bool TMotore_application::last_doc(char provv, int anno, const char* codnum,
|
||||
const char* TMotore_application::get_next_key( )
|
||||
{
|
||||
const TMask& m = curr_mask( );
|
||||
const TCodice_numerazione cod_num(m.get(F_CODNUM));
|
||||
const TCodice_numerazione& cod_num = cached_numerazione(m.get(F_CODNUM));
|
||||
|
||||
// Se per questa numerazione e' abilitata le numerazione automatica
|
||||
if (cod_num.auto_num())
|
||||
|
147
ve/ve2400.cpp
147
ve/ve2400.cpp
@ -4,10 +4,8 @@
|
||||
|
||||
#include "../ca/calib01.h"
|
||||
|
||||
#include <defmask.h>
|
||||
#include <modaut.h>
|
||||
#include <relapp.h>
|
||||
#include <tabutil.h>
|
||||
#include <urldefid.h>
|
||||
|
||||
//---------------------------------------------------
|
||||
// MASCHERA ANAGRAFICA MAGAZZINO
|
||||
@ -28,7 +26,6 @@ class TMask_anamag: public TMask
|
||||
bool _ean8_cin;
|
||||
TString16 _generated_code;
|
||||
|
||||
TString4 _um_principale;
|
||||
TMagazzini *_magazzini;
|
||||
|
||||
static bool handle_codice(TMask_field &, KEY); // handler del campo codice articolo
|
||||
@ -74,9 +71,10 @@ public:
|
||||
void disable_user_page() { disable_page(_disabled_user_page);}
|
||||
TCodart_livelli * get_livelli_art() const { return livelli_art; }
|
||||
|
||||
const TString& generated_code() { return _generated_code; }
|
||||
TString& um_principale() { return _um_principale; }
|
||||
TMagazzini& magazzini() { return *_magazzini; }
|
||||
const TString& generated_code() const { return _generated_code; }
|
||||
const TString& um_principale() const;
|
||||
void set_um_principale(const char* ump);
|
||||
TMagazzini& magazzini() { return *_magazzini; }
|
||||
|
||||
TMask_anamag(TRelation * rel);
|
||||
virtual ~TMask_anamag();
|
||||
@ -459,6 +457,16 @@ void TMask_anamag::create_user_fields()
|
||||
_disabled_user_page = PAGE_USER;
|
||||
}
|
||||
|
||||
const TString& TMask_anamag::um_principale() const
|
||||
{ return edit_mode() ? get(F_UMPRINCIPALE) : EMPTY_STRING; }
|
||||
|
||||
void TMask_anamag::set_um_principale(const char* ump)
|
||||
{
|
||||
set(F_UMPRINCIPALE, ump);
|
||||
set(F_UMPRINCIPALE2, ump);
|
||||
}
|
||||
|
||||
|
||||
// costruttore della maschera anagrafica di magazzino
|
||||
TMask_anamag::TMask_anamag(TRelation * rel) : TMask("ve2400")
|
||||
{
|
||||
@ -489,9 +497,12 @@ TMask_anamag::TMask_anamag(TRelation * rel) : TMask("ve2400")
|
||||
_magazzini = NULL;
|
||||
|
||||
set_parametered_fields();
|
||||
|
||||
ca_create_fields(*this, 1, LF_PCONANA, 1, 7, F_CONTOPCIA, F_DESCRCONTOPCIA, 0, ANAMAG_CONTOINDA);
|
||||
ca_create_fields(*this, 1, LF_PCONANA, 1,13, F_CONTOPCIV, F_DESCRCONTOPCIV, 0, ANAMAG_CONTOINDV);
|
||||
|
||||
if (!ca_config().get_bool("UsePdcc")) // Creo campi analitici solo se uso vero piano conti analitico
|
||||
{
|
||||
ca_create_fields(*this, 1, LF_PCONANA, 1, 7, F_CONTOPCIA, F_DESCRCONTOPCIA, 0, ANAMAG_CONTOINDA);
|
||||
ca_create_fields(*this, 1, LF_PCONANA, 1,13, F_CONTOPCIV, F_DESCRCONTOPCIV, 0, ANAMAG_CONTOINDV);
|
||||
}
|
||||
|
||||
create_user_fields();
|
||||
|
||||
@ -938,28 +949,30 @@ bool TMask_anamag::handle_sheet_um(TMask_field &fld, KEY k)
|
||||
TAssoc_array v; // istanzia l'hash table per il controllo di univocità
|
||||
for (int i= 0; i<items; i++)
|
||||
{
|
||||
const TString16 um(f.cell(i,f.cid2index(FS_CODUM)));
|
||||
const TString4 um = f.cell(i,f.cid2index(FS_CODUM));
|
||||
// aggiunge all'hash table l'elemento della riga corrente e controlla che non esista già
|
||||
if (v.add(um))
|
||||
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.edit_mode())
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i= 0; i<f.items(); i++)
|
||||
{
|
||||
if (m.um_principale()==f.cell(i,f.cid2index(FS_CODUM)))
|
||||
break;
|
||||
}
|
||||
if (i>=f.items())
|
||||
return error_box("L'unità di misura '%s' deve essere presente in tabella",(const char *)m.um_principale());
|
||||
}
|
||||
const TString4 old_um = m.um_principale();
|
||||
const TString4 new_um = f.cell(0,f.cid2index(FS_CODUM));
|
||||
if (old_um.full() && old_um != new_um)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i<items; i++)
|
||||
{
|
||||
if (old_um==f.cell(i,f.cid2index(FS_CODUM)))
|
||||
break;
|
||||
}
|
||||
if (i>=items)
|
||||
return error_box(FR("L'unità di misura '%s' deve essere presente in tabella"),(const char*)m.um_principale());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if (k==K_SPACE)
|
||||
m.um_principale()=f.cell(0,f.cid2index(FS_CODUM));
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -972,9 +985,9 @@ bool TMask_anamag::notify_sheet_um(TSheet_field &fld_um, int r, KEY k)
|
||||
if (r == 0)
|
||||
{
|
||||
if (fld_um.items() == 0)
|
||||
((TToken_string &)fld_um.row(0)) = "|1"; // aggiunge una riga allo sheet
|
||||
fld_um.row(0) = " |1"; // aggiunge una riga allo sheet
|
||||
else
|
||||
((TToken_string &)fld_um.row(0)).add("1",fld_um.cid2index(FS_FCUM)); // forza la prima unita' di misura a 1
|
||||
fld_um.row(0).add("1",fld_um.cid2index(FS_FCUM)); // forza la prima unita' di misura a 1
|
||||
fld_um.disable_cell(0, fld_um.cid2index(FS_FCUM)); // 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);
|
||||
}
|
||||
@ -1577,9 +1590,9 @@ bool TMask_anamag::handle_sheet_um_um(TMask_field &fld, KEY k)
|
||||
if (fld.focusdirty() && k == K_TAB)
|
||||
{
|
||||
TMask &m = fld.mask(); // prende la maschera d'origine del campo (maschera dello sheet)
|
||||
const TString16 curr_um(fld.get()); // prende il contenuto del campo corrente (unità di misura corrente)
|
||||
const TString4 curr_um(fld.get()); // prende il contenuto del campo corrente (unità di misura corrente)
|
||||
|
||||
if (!curr_um.blank()) // se il codice dell'unità di misura è vuoto non viene fatto alcun calcolo
|
||||
if (curr_um.full()) // se il codice dell'unità di misura è vuoto non viene fatto alcun calcolo
|
||||
{
|
||||
TSheet_field *f= m.get_sheet(); // prende lo sheet d'origine della maschera del campo
|
||||
|
||||
@ -1634,13 +1647,12 @@ bool TMask_anamag::handle_sheet_um_um(TMask_field &fld, KEY k)
|
||||
if (x == ZERO)
|
||||
x = 1.00;
|
||||
m.set(FS_FCUM, x); // il risultato viene scritto nel campo del fattore di conversione
|
||||
} else {
|
||||
TString & um_p=((TMask_anamag &)f->mask()).um_principale();
|
||||
if (um_p.blank()) {
|
||||
f->mask().set(F_UMPRINCIPALE,curr_um);
|
||||
f->mask().set(F_UMPRINCIPALE2,curr_um);
|
||||
um_p=curr_um;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TMask_anamag& m = (TMask_anamag&)f->mask();
|
||||
if (m.um_principale().blank())
|
||||
m.set_um_principale(curr_um);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1719,9 +1731,9 @@ void TMask_anamag::sheetgiac_put(TSheet_field &fld_righe, int item)
|
||||
// Aggiorna il valore delle giacenze in base al cambiamento dell'unità di misura principale
|
||||
void TMask_anamag::ricalcola_giacenze()
|
||||
{
|
||||
real fc(1.0);
|
||||
TSheet_field & f=(TSheet_field &)field(F_SHEETUM);
|
||||
if (!um_principale().blank() && um_principale()!=f.cell(0,f.cid2index(FS_CODUM)))
|
||||
real fc(UNO);
|
||||
TSheet_field& f= sfield(F_SHEETUM);
|
||||
if (um_principale().full() && um_principale()!=f.cell(0,f.cid2index(FS_CODUM)))
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -1732,13 +1744,14 @@ void TMask_anamag::ricalcola_giacenze()
|
||||
}
|
||||
fc=f.cell(i,f.cid2index(FS_FCUM));
|
||||
}
|
||||
if (fc != 1.0)
|
||||
if (fc != UNO)
|
||||
{
|
||||
TLocalisamfile mag(LF_MAG),stomag(LF_STOMAG);
|
||||
int annoes = esercizi().first();
|
||||
|
||||
// ciclo sugli esercizi
|
||||
do {
|
||||
do
|
||||
{
|
||||
mag.zero();
|
||||
mag.put(MAG_ANNOES,annoes);
|
||||
mag.put(MAG_CODART,get(F_CODART));
|
||||
@ -1844,11 +1857,9 @@ bool TAnagrafica_magazzino::user_create()
|
||||
|
||||
bool TAnagrafica_magazzino::user_destroy()
|
||||
{
|
||||
|
||||
delete _rel;
|
||||
delete _msk;
|
||||
|
||||
return TRUE;
|
||||
delete _msk;
|
||||
return true;
|
||||
}
|
||||
|
||||
int TAnagrafica_magazzino::read(TMask& m)
|
||||
@ -1863,7 +1874,7 @@ int TAnagrafica_magazzino::read(TMask& m)
|
||||
// *****************************
|
||||
// LETTURA SHEET UNITA' DI MISURA
|
||||
load_um(m);
|
||||
((TMask_anamag & ) m).update_ordc_ordf(); //chiama la funzione che calcola i totali degli ordinati
|
||||
((TMask_anamag&) m).update_ordc_ordf(); //chiama la funzione che calcola i totali degli ordinati
|
||||
}
|
||||
return err;
|
||||
}
|
||||
@ -1880,10 +1891,11 @@ void TAnagrafica_magazzino::load_um(TMask& m)
|
||||
// ((TToken_string &)fld_um.row(0)).add("1",fld_um.cid2index(FS_FCUM)); // forza la prima unita' di misura a 1
|
||||
// fld_um.disable_cell(0, fld_um.cid2index(FS_FCUM)); // 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
|
||||
TString16 um_principale;
|
||||
um_principale=fld_um.cell(0, fld_um.cid2index(FS_CODUM));
|
||||
m.set(F_UMPRINCIPALE,um_principale);
|
||||
m.set(F_UMPRINCIPALE2,um_principale);
|
||||
|
||||
TString4 um_principale;
|
||||
if (m.edit_mode())
|
||||
um_principale = fld_um.cell(0, fld_um.cid2index(FS_CODUM));
|
||||
((TMask_anamag&)m).set_um_principale(um_principale);
|
||||
}
|
||||
|
||||
bool TAnagrafica_magazzino::remove()
|
||||
@ -1891,18 +1903,20 @@ bool TAnagrafica_magazzino::remove()
|
||||
bool ok = TRelation_application::remove();
|
||||
if (ok)
|
||||
{
|
||||
TMask &m=curr_mask();
|
||||
TSheet_field &f= (TSheet_field &)m.field(F_SHEETUM); // prende lo sheet delle unità di misura
|
||||
TMask& m = curr_mask();
|
||||
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 ?
|
||||
distinte.put("CODDIST", m.get(F_CODART));
|
||||
int err = distinte.read();// esiste la distinta ?
|
||||
switch(err)
|
||||
{
|
||||
case _iskeynotfound :
|
||||
case _isemptyfile :
|
||||
case _iseof:
|
||||
ok &= (f.record()->remove() == NOERR);
|
||||
break;
|
||||
case _iskeynotfound :
|
||||
case _isemptyfile :
|
||||
case _iseof:
|
||||
ok &= (f.record()->remove() == NOERR);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
@ -1910,11 +1924,11 @@ bool TAnagrafica_magazzino::remove()
|
||||
|
||||
int TAnagrafica_magazzino::write(const TMask& m)
|
||||
{
|
||||
int err =TRelation_application::write(m);
|
||||
if (err==NOERR)
|
||||
int err = TRelation_application::write(m);
|
||||
if (err == NOERR)
|
||||
{
|
||||
TSheet_field &f= (TSheet_field &)m.field(F_SHEETUM); // prende lo sheet delle unità di misura
|
||||
err|=f.record()->write(FALSE);
|
||||
TSheet_field& f = m.sfield(F_SHEETUM); // prende lo sheet delle unità di misura
|
||||
err = f.record()->write(FALSE);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
@ -2007,6 +2021,8 @@ void TAnagrafica_magazzino::init_query_mode(TMask &m)
|
||||
|
||||
if (advanced_codart_enabled())
|
||||
m.show(F_ADVANCED);
|
||||
|
||||
((TMask_anamag&)m).set_um_principale("");
|
||||
}
|
||||
|
||||
void TAnagrafica_magazzino::init_insert_mode(TMask &m)
|
||||
@ -2018,8 +2034,7 @@ void TAnagrafica_magazzino::init_insert_mode(TMask &m)
|
||||
|
||||
if (advanced_codart_enabled())
|
||||
m.hide(F_ADVANCED);
|
||||
((TMask_anamag &)m).disable_user_page();
|
||||
|
||||
((TMask_anamag&)m).disable_user_page();
|
||||
}
|
||||
|
||||
void TAnagrafica_magazzino::init_modify_mode(TMask &m)
|
||||
@ -2029,7 +2044,7 @@ void TAnagrafica_magazzino::init_modify_mode(TMask &m)
|
||||
|
||||
if (advanced_codart_enabled())
|
||||
m.hide(F_ADVANCED);
|
||||
((TMask_anamag &)m).disable_user_page();
|
||||
((TMask_anamag&)m).disable_user_page();
|
||||
}
|
||||
|
||||
void TAnagrafica_magazzino::ini2sheet(TConfig& ini, TSheet_field &sheet)
|
||||
|
@ -833,7 +833,7 @@ END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 0 12 "Riordino"
|
||||
PROMPT 0 12 "@bRiordino"
|
||||
END
|
||||
|
||||
NUMBER F_A_LOTTORIOR 10 3
|
||||
@ -945,7 +945,7 @@ END
|
||||
|
||||
STRING F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "Seleziona l'esercizio "
|
||||
PROMPT 2 4 "Selezione esercizio "
|
||||
FLAGS "UPZ"
|
||||
USE ESC
|
||||
INPUT CODTAB F_ANNO
|
||||
@ -1058,7 +1058,7 @@ END
|
||||
|
||||
STRING F_STOANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "Seleziona l'esercizio "
|
||||
PROMPT 2 4 "Selezione esercizio "
|
||||
FLAGS "UZ"
|
||||
|
||||
USE ESC
|
||||
|
Loading…
x
Reference in New Issue
Block a user