Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@22387 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2011-07-08 15:53:14 +00:00
parent 40ec92e6fc
commit 7ec32332b9

View File

@ -143,7 +143,7 @@ int TImporta_produzione_msk::calcola_prog(const TString& codart, const TDate& da
rilprod.set_var("#CODART", codart);
rilprod.set_var("#DATA", data);
int prog = 1;
int prog = 0;
if(rilprod.move_last())
prog += rilprod.get(RILPROD_PROG).as_int();
@ -264,6 +264,8 @@ bool TImporta_produzione_msk::genera_produzione(const TFilename& file)
TLocalisamfile rprod(LF_RRILPROD);
TAssoc_array tprod_ar;
TAssoc_array tprod_prog;
int prog = 0;
//scorro il file di input
for(bool ok = recset.move_first(); ok; ok = recset.move_next())
@ -275,14 +277,14 @@ bool TImporta_produzione_msk::genera_produzione(const TFilename& file)
TString80 chiavedoc = recset.get("RDOCKEY").as_string();
TToken_string krdoc(chiavedoc, '.');
const TString80 codart = recset.get("CODART").as_string();
const TString16 codlav = recset.get("CODLAV").as_string();
TString16 codlav = recset.get("CODLAV").as_string();
const real qtaprod = recset.get("QTAPROD").as_real();
const bool flgsaldo = recset.get("FLGSALDO").as_string()[0] == 'S' ? true : false;
const TString16 datastr = recset.get("DATALAV").as_string();
const TString8 orastr = recset.get("ORALAV").as_string();
const char provv = 'D';
const TString4 codnum = krdoc.get(0);
TString4 codnum = krdoc.get(0);
const int anno = krdoc.get_int(1);
const long ndoc = krdoc.get_long(2);
const int idriga = krdoc.get_int(3);
@ -292,11 +294,10 @@ bool TImporta_produzione_msk::genera_produzione(const TFilename& file)
TToken_string key;
key.add(codart);
key.add(datafine);
key.add(codlav);
key.add(chiavedoc.strip("."));
int prog;
chiavedoc.strip(".");
TString query;
query << "USE RRILPROD\n"
@ -310,23 +311,55 @@ bool TImporta_produzione_msk::genera_produzione(const TFilename& file)
query.cut(0);
query << "USE RILPROD KEY 4\n"
<< "SELECT OPERATORE==\"" << codlav << "\"\n"
<< "FROM PROVV=D ANNO=" << anno << " CODNUM=" << codnum << "NRIGA=" << idriga << "\n"
<< "TO PROVV=D ANNO=" << anno << " CODNUM=" << codnum << "NRIGA=" << idriga;
<< "SELECT OPERATORE==\"" << codlav.strip(" ") << "\"\n"
<< "FROM PROVV=D ANNO=" << anno << " CODNUM=" << codnum.strip(" ") << " NDOC=" << ndoc << " NRIGA=" << idriga << "\n"
<< "TO PROVV=D ANNO=" << anno << " CODNUM=" << codnum.strip(" ") << " NDOC=" << ndoc << " NRIGA=" << idriga;
TISAM_recordset testate(query);
if(!testate.empty())
{
TRectype& testata = testate.cursor()->curr();
real& qta = testata.get_real(RILPROD_QTA);
prog = testata.get_int(RILPROD_PROG);
qta += qtaprod;
testata.put(RILPROD_QTA, qta);
tprod_ar.add(key, testata);
err = testata.rewrite_write(tprod);
}
else if(!tprod_ar.is_key(key))
{
query.cut(0);
query << "USE RILPROD KEY 4 SELECT OPERATORE==\"" << codlav.strip(" ") << "\"\n"
<< "BY PROG\n"
<< "FROM PROVV=D ANNO=" << anno << " CODNUM=" << codnum.strip(" ") << " NDOC=" << ndoc << "\n"
<< "TO PROVV=D ANNO=" << anno << " CODNUM=" << codnum.strip(" ") << " NDOC=" << ndoc;
TISAM_recordset testate1(query);
prog = 1;
if(!testate1.empty())
{
testate1.move_last();
TRectype& testata = testate1.cursor()->curr();
prog = testata.get_int(RILPROD_PROG);
prog++;
}
else
{
query << "USE RILPROD\n"
<< "BY PROG\n"
<< "FROM CODART=" << codart << "DATA=#DATA\n"
<< "TO CODART=" << codart << "DATA=#DATA";
TISAM_recordset testate1(query);
testate1.set_var("#DATA", datafine);
testate1.move_last();
TRectype& testata = testate1.cursor()->curr();
prog = testata.get_int(RILPROD_PROG);
prog++;
}
//se non l'ho già fatto creo il record della testata, altrimenti aggiorno le quantità
prog = calcola_prog(codart, datafine);
TRectype& testata = tprod.curr();
testata.zero();
testata.put(RILPROD_CODART, codart);
@ -341,19 +374,18 @@ bool TImporta_produzione_msk::genera_produzione(const TFilename& file)
testata.put(RILPROD_QTA, qtaprod);
testata.put(RILPROD_CHIUSO, flgsaldo);
err = testata.rewrite_write(tprod);
tprod_ar.add(key, testata);
}
else
{
TRectype& testata = *(TRectype*)tprod_ar.objptr(key);
real& qta = testata.get_real(RILPROD_QTA);
TString supercazzone = codart;
supercazzone.strip(" ");
if(supercazzone == "01249000A/SL")
int cazzone = 1;
qta += qtaprod;
prog = testata.get_int(RILPROD_PROG);
testata.put(RILPROD_QTA, qta);
err = testata.rewrite_write(tprod);
tprod_ar.add(key, testata);
}
@ -375,11 +407,12 @@ bool TImporta_produzione_msk::genera_produzione(const TFilename& file)
}
//salva le testate
FOR_EACH_ASSOC_OBJECT(tprod_ar, obj, key, itm)
/*FOR_EACH_ASSOC_OBJECT(tprod_ar, obj, key, itm)
{
TToken_string k(key);
TRectype& testata = *(TRectype*)itm;
err = testata.rewrite_write(tprod);
}
}*/
return err == NOERR ? true : false;
}