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:
guy 2009-03-26 10:03:16 +00:00
parent 4fdd15adc5
commit db5a76ef7d
5 changed files with 88 additions and 73 deletions

View File

@ -1,3 +1,3 @@
47
0
$anamag|0|0|1079|0|Anagrafica di magazzino|NART||
$anamag|0|0|1095|0|Anagrafica di magazzino|NART||

View File

@ -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

View File

@ -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())

View File

@ -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)

View File

@ -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