Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@22560 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2012-01-25 11:09:28 +00:00
parent 6c4ce55e07
commit 605becd52b
2 changed files with 55 additions and 37 deletions

View File

@ -1,18 +1,9 @@
#include <xvt.h>
#include <checks.h>
#include "pd6292.h"
int main(int argc,char** argv)
{
const int n = (argc > 1) ? atoi(&argv[1][1]) : 0;
switch(n)
{
case 0:
pd6292100(argc, argv); break;
default:
error_box("Usare: pd6292 -0");break;
}
pd6292100(argc, argv);
return 0;
}

View File

@ -42,26 +42,29 @@ void TBEM_cache::discarding(const THash_object* obj)
//KEY2OBJ: metodo che sceglie il documento giusto da disco in modo da poterlo continuare
TObject* TBEM_cache::key2obj(const char* key)
{
TToken_string chiave(key);
TDoc_key kdoc(key);
TToken_string chiave(key);
//chiave di doc
TString query;
query << "USE DOC\n"
<< "FROM PROVV=D ANNO=" << kdoc.anno() << " CODNUM=" << kdoc.codnum() << " NDOC=" << kdoc.ndoc() << "\n"
<< "TO PROVV=D ANNO=" << kdoc.anno() << " CODNUM=" << kdoc.codnum() << " NDOC=" << kdoc.ndoc();
<< "FROM PROVV=D ANNO=" << chiave.get_int(0) << " CODNUM=" << chiave.get(1) << " NDOC=" << chiave.get_int(2) << "\n"
<< "TO PROVV=D ANNO=" << chiave.get_int(0) << " CODNUM=" << chiave.get(1) << " NDOC=" << chiave.get_int(2);
TISAM_recordset rset(query);
TDocumento* doc = NULL;
if (rset.move_first())
doc = new TDocumento(rset.cursor()->curr());
doc = new TDocumento(rset.cursor()->curr());
return doc;
}
//DOC: metodo che restituisce un puntatore ad un documento identificato dalla chiave doc
TDocumento& TBEM_cache::doc(const int anno, const TString4 codnum, const long ndoc)
{
TDoc_key kdoc(anno, codnum, ndoc);
TToken_string kdoc;
kdoc.add(anno);
kdoc.add(codnum);
kdoc.add(ndoc);
return *(TDocumento*)objptr(kdoc);
}
@ -70,6 +73,7 @@ TBEM_cache::TBEM_cache() : TCache(20)
{
}
///////////////////////////////////////
//// TIMPORTA_PRODUZIONE_REC ////
///////////////////////////////////////
@ -100,8 +104,11 @@ TImporta_produzione_rec::TImporta_produzione_rec(const char* filename)
//Classe TImporta_produzione_msk
class TImporta_produzione_msk : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
const int id2rownum(TDocumento& doc, long id) const;
int calcola_prog(const TString& codart, const TDate& data);
int calcola_nriga(const TString& codart, const TDate& data, const long prog);
bool genera_produzione(const TFilename& file);
@ -143,7 +150,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 = 0;
int prog = 1;
if(rilprod.move_last())
prog += rilprod.get(RILPROD_PROG).as_int();
@ -187,9 +194,19 @@ void TImporta_produzione_msk::sposta_file(const TString& file)
fileori.fremove();
}
const int TImporta_produzione_msk::id2rownum(TDocumento& doc, long id) const
{
FOR_EACH_PHYSICAL_RDOC_BACK(doc, r, row)
{
if (row->get_long(RDOC_IDRIGA) == id)
return row->get_int(RDOC_NRIGA);
}
return -1;
}
bool TImporta_produzione_msk::chiudi_bem()
{
const TDate data = get_date(F_DATA);
const TDate data = get_date(F_DATA);
TLocalisamfile rilprod(LF_RILPROD);
TBEM_cache ca;
@ -219,10 +236,24 @@ bool TImporta_produzione_msk::chiudi_bem()
const TString16 codlav = trec.get(RILPROD_OPERATORE);
const TDate data = trec.get_date(RILPROD_DATA);
TString query;
query << "USE DOC\n"
<< "FROM PROVV=D ANNO=" << anno << " CODNUM=" << codnum << " NDOC=" << ndoc << "\n"
<< "TO PROVV=D ANNO=" << anno << " CODNUM=" << codnum << " NDOC=" << ndoc;
TISAM_recordset rset(query);
if(rset.items == 0)
{
TString str;
str << "ATTENZIONE. Il documento " << codnum << '-' << ndoc << " non esiste!";
warning_box(str);
continue;
}
TDocumento& doc = ca.doc(anno, codnum, ndoc);
if(!doc.empty())
{
const int nriga = doc.id2rownum(idriga);
const int nriga = id2rownum(doc, idriga);
TRiga_documento& row = doc[nriga];
if(row.get(RDOC_FASCMS) == codlav)
@ -264,8 +295,6 @@ 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())
@ -283,8 +312,11 @@ bool TImporta_produzione_msk::genera_produzione(const TFilename& file)
const TString16 datastr = recset.get("DATALAV").as_string();
const TString8 orastr = recset.get("ORALAV").as_string();
if(datastr.blank())
continue;
const char provv = 'D';
TString4 codnum = krdoc.get(0);
TString80 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);
@ -297,11 +329,12 @@ bool TImporta_produzione_msk::genera_produzione(const TFilename& file)
key.add(codlav);
key.add(chiavedoc.strip("."));
chiavedoc.strip(".");
int prog;
TString query;
query << "USE RRILPROD\n"
<< "SELECT (DATAINI==" << datafine << ")&&(ORAINI==" << orafine << ")\n"
query << "USE RRILPROD\n"
<< "SELECT (DATAINI==\"" << datafine << "\")&&(ORAINI==\"" << orafine << "\")\n"
<< "FROM CODART=" << codart << " DATA=#DATA\n"
<< "TO CODART=" << codart << " DATA=#DATA";
TISAM_recordset righe(query);
@ -316,7 +349,7 @@ bool TImporta_produzione_msk::genera_produzione(const TFilename& file)
<< "TO PROVV=D ANNO=" << anno << " CODNUM=" << codnum.strip(" ") << " NDOC=" << ndoc << " NRIGA=" << idriga;
TISAM_recordset testate(query);
if(!testate.empty())
if(testate.items() > 0)
{
TRectype& testata = testate.cursor()->curr();
real& qta = testata.get_real(RILPROD_QTA);
@ -337,7 +370,7 @@ bool TImporta_produzione_msk::genera_produzione(const TFilename& file)
prog = 1;
if(!testate1.empty())
if(testate1.items() > 0)
{
testate1.move_last();
TRectype& testata = testate1.cursor()->curr();
@ -396,23 +429,17 @@ bool TImporta_produzione_msk::genera_produzione(const TFilename& file)
riga.put(RRILPROD_DATA, datafine);
riga.put(RRILPROD_PROG, prog);
riga.put(RRILPROD_NRIGA, calcola_nriga(codart, datafine, prog));
riga.put(RRILPROD_OPERATORE, codlav);
riga.put(RRILPROD_DATAINI, datafine);
riga.put(RRILPROD_ORAINI, orafine);
riga.put(RRILPROD_DATAFINE, datafine);
riga.put(RRILPROD_ORAFINE, orafine);
riga.put(RRILPROD_OPERATORE, codlav);
riga.put(RRILPROD_QTA, qtaprod);
err = riga.rewrite_write(rprod);
}
//salva le testate
/*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;
}