Correzioni per Diana 2000
git-svn-id: svn://10.65.10.50/branches/R_10_00@22960 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
9f0c6387d2
commit
6bdcff9121
128
lv/lv2900.cpp
128
lv/lv2900.cpp
@ -299,9 +299,6 @@ bool TConta_pulito_msk::on_field_event(TOperable_field& f,TField_event e,long jo
|
||||
TFilename file = path;
|
||||
file.add(fname);
|
||||
|
||||
TAssoc_array documenti;
|
||||
TAssoc_array movimenti;
|
||||
|
||||
TLog_report logrep("");
|
||||
|
||||
//a seconda del bottone premuto esegui un metodo diverso
|
||||
@ -321,6 +318,7 @@ bool TConta_pulito_msk::on_field_event(TOperable_field& f,TField_event e,long jo
|
||||
case DLG_PACKTCLI:
|
||||
if(e == fe_button)
|
||||
{
|
||||
TAssoc_array documenti;
|
||||
genera_documenti(file, documenti, logrep);
|
||||
|
||||
if (documenti.items() > 0)
|
||||
@ -371,6 +369,7 @@ bool TConta_pulito_msk::on_field_event(TOperable_field& f,TField_event e,long jo
|
||||
case DLG_PACKTMAG:
|
||||
if(e == fe_button)
|
||||
{
|
||||
TAssoc_array movimenti;
|
||||
prepara_movimenti(file, movimenti, logrep);
|
||||
if (movimenti.items() > 0)
|
||||
{
|
||||
@ -379,18 +378,22 @@ bool TConta_pulito_msk::on_field_event(TOperable_field& f,TField_event e,long jo
|
||||
message_box(TR("Generazione dei movimenti di magazzino terminata"));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_auto == "A")
|
||||
logrep.log(2, "Non è stato possibile generare nessun movimento di magazzino con i parametri fissati");
|
||||
else
|
||||
message_box(TR("Non è stato possibile generare nessun movimento di magazzino con i parametri fissati"));
|
||||
}
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
TReport_book buc;
|
||||
buc.add(logrep);
|
||||
|
||||
//genero il file .log che contiene gli errori
|
||||
if (logrep.rows() > 0)
|
||||
{
|
||||
TReport_book buc;
|
||||
buc.add(logrep);
|
||||
if (buc.pages() > 0)
|
||||
{
|
||||
TString str = file.name_only();
|
||||
@ -401,6 +404,7 @@ bool TConta_pulito_msk::on_field_event(TOperable_field& f,TField_event e,long jo
|
||||
|
||||
buc.export_text(log, false);
|
||||
}
|
||||
}
|
||||
|
||||
if(_auto == "A")
|
||||
send_key(K_SPACE, DLG_QUIT);
|
||||
@ -413,14 +417,15 @@ bool TConta_pulito_msk::elabora_file(const TFilename& file, TLog_report& logrep)
|
||||
{
|
||||
if (!file.exist())
|
||||
{
|
||||
const char* msg = TR("ATTENZIONE: il file che si desidera importare non esiste!");
|
||||
if (_auto == "A")
|
||||
logrep.log(2, "ATTENZIONE: il file che si desidera importare non esiste!");
|
||||
logrep.log(2, msg);
|
||||
else
|
||||
warning_box(TR("ATTENZIONE: il file che si desidera importare non esiste!"));
|
||||
error_box(msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
TLocalisamfile f(LF_PACCHI);
|
||||
TFast_isamfile f(LF_PACCHI);
|
||||
TScanner s(file);
|
||||
while (s.ok())
|
||||
{
|
||||
@ -480,7 +485,7 @@ bool TConta_pulito_msk::elabora_file(const TFilename& file, TLog_report& logrep)
|
||||
if (umart.empty())
|
||||
{
|
||||
TString str;
|
||||
str << "ATTENZIONE: non è stata trovata nessuna unità di misura valida per l'articolo " << codart;
|
||||
str << TR("ATTENZIONE: non è stata trovata nessuna unità di misura valida per l'articolo ") << codart;
|
||||
if (_auto == "A")
|
||||
logrep.log(2, str);
|
||||
else
|
||||
@ -507,7 +512,7 @@ void TConta_pulito_msk::sposta_file(const TFilename& file)
|
||||
make_dir(path);
|
||||
|
||||
TString strname;
|
||||
strname.format("%06d_%06d_%s", TDate(TODAY).date2ansi(), daytime(), (const char*)fileori.name());
|
||||
strname.format("%08d_%06d_%s", TDate(TODAY).date2ansi(), daytime(), (const char*)fileori.name());
|
||||
TFilename filedest = path;
|
||||
filedest.add(strname);
|
||||
|
||||
@ -778,7 +783,7 @@ void TConta_pulito_msk::prepara_movimenti(const TFilename& file, TAssoc_array& m
|
||||
codcf = get_long(F_CODCF);
|
||||
}
|
||||
|
||||
//seleziona tutti i record del file pacchi da data a data che non hanno una bolla associata
|
||||
//seleziona tutti i record del file pacchi da data a data che non abbiano una bolla associata
|
||||
TString query;
|
||||
query << "USE PACCHI KEY 2\n";
|
||||
query << "SELECT (NDOC=0)&&(CODCF=0)&&(MGNUMREG<0)\n";
|
||||
@ -789,10 +794,12 @@ void TConta_pulito_msk::prepara_movimenti(const TFilename& file, TAssoc_array& m
|
||||
selrighe.set_var("#DADATA", dadata);
|
||||
selrighe.set_var("#ADATA", adata);
|
||||
|
||||
selrighe.move_first();
|
||||
if (!selrighe.move_first())
|
||||
return;
|
||||
|
||||
TLocalisamfile& pacchi = selrighe.cursor()->file();
|
||||
|
||||
//scorro tutti i pacchi trovato
|
||||
// scorro tutti i pacchi trovati
|
||||
for (bool ok = selrighe.move_first(); ok; ok = selrighe.move_next())
|
||||
{
|
||||
TRiga_pacco rp = selrighe.cursor()->curr();
|
||||
@ -841,71 +848,53 @@ void TConta_pulito_msk::prepara_movimenti(const TFilename& file, TAssoc_array& m
|
||||
rp.rewrite(pacchi);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//GENERA_MOVMAG: metodo che genera i movimenti di magazzino dai pacchi
|
||||
bool TConta_pulito_msk::genera_movmag(TAssoc_array& movimenti)
|
||||
{
|
||||
const TCausale_magazzino causale((ini_get_string(CONFIG_DITTA, "lv", "CAUCARMAG")));
|
||||
const TCausale_magazzino causale(ini_get_string(CONFIG_DITTA, "lv", "CAUCARMAG"));
|
||||
TString8 magazzino;
|
||||
magazzino << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGP");
|
||||
magazzino << ini_get_string(CONFIG_DITTA, "lv", "CODMAG")
|
||||
<< ini_get_string(CONFIG_DITTA, "lv", "CODMAGP");
|
||||
|
||||
TFast_isamfile movi(LF_MOVMAG);
|
||||
|
||||
//cerco l'ultimo numero di chiave in movmag
|
||||
TISAM_recordset mov("USE MOVMAG");
|
||||
long nummov = 0;
|
||||
if(mov.move_last())
|
||||
nummov += mov.get(MOVMAG_NUMREG).as_int();
|
||||
|
||||
TLocalisamfile movi(LF_MOVMAG);
|
||||
if (movi.last() == NOERR)
|
||||
nummov = movi.get_long(MOVMAG_NUMREG);
|
||||
|
||||
/* 21-05-2014 Guido ha visto che queste 3 variabili non vengono mai utilizzate
|
||||
//inizializzo le variabili di interesse
|
||||
TDate dadata(TODAY); dadata.addmonth(-1); dadata.set_day(1);
|
||||
TDate adata(TODAY); adata.addmonth();
|
||||
long codcf = _codcf;
|
||||
|
||||
//se non ho lanciato il programma da linea di comando, leggo i paramtri dalla maschera
|
||||
//se non ho lanciato il programma da linea di comando, leggo i parametri dalla maschera
|
||||
if (_auto != "A")
|
||||
{
|
||||
dadata = get_date(F_DADATA);
|
||||
adata = get_date(F_ADATA);
|
||||
codcf = get_long(F_CODCF);
|
||||
}
|
||||
*/
|
||||
|
||||
//per ogni oggetto salvato in movimenti, creo un movimento di magazzino
|
||||
const TEsercizi_contabili es;
|
||||
FOR_EACH_ASSOC_OBJECT(movimenti, hobj, ansidate, obj)
|
||||
{
|
||||
TEsercizi_contabili es;
|
||||
TDate data = (TDate)ansidate;
|
||||
int annoes = es.date2esc(data);
|
||||
const TDate data = ansidate;
|
||||
const int annoes = es.date2esc(data);
|
||||
TMov_mag movmag(++nummov);
|
||||
movmag.put(MOVMAG_ANNOES, annoes);
|
||||
movmag.put(MOVMAG_DATAREG, data);
|
||||
movmag.put(MOVMAG_CODCAUS, causale.codice());
|
||||
movmag.put(MOVMAG_DATACOMP, data);
|
||||
|
||||
//seleziona tutti i record del file pacchi da data a data che non hanno una bolla associata
|
||||
//per poter assegnare il riferimento al movimento di magazzino
|
||||
TString query;
|
||||
query << "USE PACCHI KEY 2\n";
|
||||
query << "SELECT (NDOC=0)&&(CODCF=0)&&(MGNUMREG<0)\n";
|
||||
query << "FROM DATA=#DADATA\n";
|
||||
query << "TO DATA=#ADATA";
|
||||
|
||||
TISAM_recordset selrighe(query);
|
||||
selrighe.set_var("#DADATA", data);
|
||||
selrighe.set_var("#ADATA", data);
|
||||
|
||||
selrighe.move_first();
|
||||
TLocalisamfile& pacchi = selrighe.cursor()->file();
|
||||
|
||||
//scorro tutti i pacchi trovati
|
||||
for (bool ok = selrighe.move_first(); ok; ok = selrighe.move_next())
|
||||
{
|
||||
TRiga_pacco rp = selrighe.cursor()->curr();
|
||||
rp.set_movmag(nummov);
|
||||
rp.rewrite(pacchi);
|
||||
}
|
||||
// Salva immediatamente testata per bloccare numero di registrazione
|
||||
while (movmag.write(movi) == _isreinsert)
|
||||
movmag.renum_mov(++nummov);
|
||||
|
||||
TAssoc_array& articoli = *(TAssoc_array*)obj;
|
||||
|
||||
@ -914,9 +903,7 @@ bool TConta_pulito_msk::genera_movmag(TAssoc_array& movimenti)
|
||||
{
|
||||
TToken_string k(keyarticoli);
|
||||
//recupero l'unità di misura principale di quest'articolo
|
||||
TToken_string key;
|
||||
key.add(k.get(0));
|
||||
key.add(1);
|
||||
TToken_string key; key.add(k.get(0)); key.add(1);
|
||||
const TRectype& umart = cache().get(LF_UMART, key);
|
||||
TString4 um = umart.get(UMART_UM);
|
||||
|
||||
@ -930,7 +917,36 @@ bool TConta_pulito_msk::genera_movmag(TAssoc_array& movimenti)
|
||||
rmovmag.put(RMOVMAG_UM, um);
|
||||
rmovmag.put(RMOVMAG_QUANT, quantita);
|
||||
}
|
||||
movmag.write(movi);
|
||||
|
||||
int err = movmag.rewrite(movi);
|
||||
if (err == NOERR)
|
||||
{
|
||||
//seleziona tutti i record del file pacchi da data a data che non hanno una bolla associata
|
||||
//per poter assegnare il riferimento al movimento di magazzino
|
||||
TString query;
|
||||
query << "USE PACCHI KEY 2\n";
|
||||
query << "SELECT (NDOC=0)&&(CODCF=0)&&(MGNUMREG<0)\n";
|
||||
query << "FROM DATA=#DADATA\n";
|
||||
query << "TO DATA=#ADATA";
|
||||
|
||||
TISAM_recordset selrighe(query);
|
||||
selrighe.set_var("#DADATA", data);
|
||||
selrighe.set_var("#ADATA", data);
|
||||
|
||||
if (selrighe.move_first())
|
||||
{
|
||||
TLocalisamfile& pacchi = selrighe.cursor()->file();
|
||||
// scorro tutti i pacchi trovati
|
||||
for (bool ok = selrighe.move_first(); ok; ok = selrighe.move_next())
|
||||
{
|
||||
TRiga_pacco rp = pacchi.curr();
|
||||
rp.set_movmag(nummov);
|
||||
const int err = rp.rewrite(pacchi);
|
||||
if (err != NOERR)
|
||||
return error_box(FR("Errore %d in aggiornamento numero di movimento sul file pacchi"), err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -958,7 +974,7 @@ TConta_pulito_msk::TConta_pulito_msk():TAutomask("lv2900a")
|
||||
_percli = true;
|
||||
|
||||
if (tmp.len() > 2)
|
||||
_codcf = atoi(tmp.sub(2));
|
||||
_codcf = atol(tmp.sub(2));
|
||||
|
||||
_permag = false;
|
||||
}
|
||||
@ -1017,6 +1033,12 @@ public:
|
||||
//CREATE: metodo costruttore
|
||||
bool TConta_pulito_app::create()
|
||||
{
|
||||
if (xvt_vobj_get_attr(NULL_WIN, ATTR_APPL_ALREADY_RUNNING))
|
||||
{
|
||||
xvt_dm_popup_error(TR("L'elaborazione pulito è già in esecuzione!"));
|
||||
return false;
|
||||
}
|
||||
|
||||
_msk = new TConta_pulito_msk();
|
||||
|
||||
//se ho più di un parametro, allora lo sto lanciando da linea di comando, e ne devo tenere conto
|
||||
@ -1050,7 +1072,7 @@ bool TConta_pulito_app::create()
|
||||
bool TConta_pulito_app::destroy()
|
||||
{
|
||||
delete _msk;
|
||||
return TApplication::destroy();
|
||||
return TSkeleton_application::destroy();
|
||||
}
|
||||
|
||||
//TRANSFER: metodo che decide cosa effettivamente far fare al programma a seconda delle indicazioni ricevute
|
||||
|
@ -210,7 +210,6 @@ void TInvia_dotazioni_skema::aggiungi_riga(const long codcf, const long codcont)
|
||||
TInvia_dotazioni_skema::TInvia_dotazioni_skema()
|
||||
: TAS400_recordset("AS400(42)")
|
||||
{
|
||||
|
||||
/*
|
||||
FILE DOTAZIONE.TXT
|
||||
|
||||
@ -218,17 +217,12 @@ Campo Tipo Posizione
|
||||
-----------------------------------------------------
|
||||
Codice Cliente Alfanumerico 1-20
|
||||
Codice Articolo Alfanumerico 21-40
|
||||
|
||||
*/
|
||||
|
||||
create_field("CODCF", -1, 20, _alfafld, true); // codice cliente
|
||||
create_field("CODART", -1, 20, _alfafld, true); //codice cliente
|
||||
create_field("CODART", -1, 20, _alfafld, true); // codice articolo
|
||||
create_field("ACAPO", -1, 2, _alfafld, true, TVariant("\r\n")); //caratteri di a capo
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
///////////////////////////
|
||||
//// TInvcon_skema_msk ////
|
||||
///////////////////////////
|
||||
|
Loading…
x
Reference in New Issue
Block a user