campo-sirio/lv/lv2600.cpp
rajitgill dc1e132bed Patch level :
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/trunk@17490 c028cbd2-c16b-5b4b-a496-9718f37d4682
2008-10-28 15:03:16 +00:00

197 lines
4.7 KiB
C++
Executable File

#include <progind.h>
#include "../ve/velib.h"
#include <doc.h>
#include <rdoc.h>
#include <automask.h>
#include <sheet.h>
#include <utility.h>
#include <recset.h>
#include <textset.h>
#include "lv2600a.h"
#include <recarray.h>
///////////////////////////////////////////////////////////
// TAcquisizione_msk
///////////////////////////////////////////////////////////
class TAcquisizione_msk: public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o,TField_event e,long jolly);
public:
TAcquisizione_msk();
};
bool TAcquisizione_msk::on_field_event(TOperable_field& f,TField_event e,long jolly)
{
switch (f.dlg())
{
//giochetto per avere la lista dei files validi nella directory di trasferimento!
case F_NAME:
if (e == fe_button)
{
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"),
HR("File@32"));
TFilename path = get(F_PATH);
path.add("*.csv"); //files delle testate
list_files(path, as.rows_array());
TFilename name;
FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
{
name = *row;
*row = name.name();
}
if (as.run() == K_ENTER)
{
f.set(as.row(as.selected()));
}
}
break;
default:
break;
}
return true;
}
TAcquisizione_msk::TAcquisizione_msk():TAutomask("lv2600a")
{
}
///////////////////////////////////////////////////////////
// TAcquisizione_cache
///////////////////////////////////////////////////////////
class TAcquisizione_cache : TCache
{
TString4 _codnum,_tipodoc,_stato;
protected:
virtual void discarding(const THash_object* obj);
virtual TObject* key2obj(const char* key);
public:
TDocumento& doc(const TDate& gg, const long cc);
TAcquisizione_cache();
};
void TAcquisizione_cache::discarding(const THash_object* obj)
{
TDocumento& doc = (TDocumento&)obj->obj();
doc.rewrite();
}
TObject* TAcquisizione_cache::key2obj(const char* key)
{
TToken_string chiave(key);
const TDate datadoc=chiave.get();
const long codcf=chiave.get_long();
TString query;
query<< "USE DOC KEY 2 SELECT STATO=#STATO\n";
for (int i=0;i<2; i++)
{
query << (i?"TO":"FROM") << " "
<< "TIPOCF=C CODCF=#CODCF ANNO=#ANNO DATADOC=#DATADOC CODNUM=#CODNUM\n";
}
TISAM_recordset rset(query);
rset.set_var("#STATO",TVariant(_stato));
rset.set_var("#CODCF",codcf);
rset.set_var("#ANNO",long(datadoc.year()));
rset.set_var("#DATADOC",datadoc);
rset.set_var("#CODNUM",TVariant(_codnum));
TDocumento* doc=NULL;
if (rset.move_first())
{
doc=new TDocumento(rset.cursor()->curr());
}
else
{
doc=new TDocumento('D',datadoc.year(),_codnum,0);
doc->put(DOC_TIPODOC,_tipodoc);
doc->put(DOC_STATO,_stato);
doc->put(DOC_DATADOC,datadoc);
doc->put(DOC_TIPOCF,"C");
doc->put(DOC_CODCF,codcf);
}
return doc;
}
TDocumento& TAcquisizione_cache::doc(const TDate& gg, const long cc)
{
TString16 key;
key << gg.date2ansi() << '|' << cc;
return *(TDocumento*)objptr(key);
}
TAcquisizione_cache::TAcquisizione_cache() : TCache(17)
{
TConfig cfg(CONFIG_DITTA,"lv");
_codnum=cfg.get("NUM_RIT",NULL,0);
_tipodoc=cfg.get("TIPOOC_RIT",NULL,0);
_stato=cfg.get("STATO_RIT",NULL,0);
}
///////////////////////////////////////////////////////////
// TAcquisizione_lavanderie_app
///////////////////////////////////////////////////////////
class TAcquisizione_lavanderie_app : public TSkeleton_application
{
protected:
virtual void main_loop();
};
void TAcquisizione_lavanderie_app::main_loop()
{
TAcquisizione_msk msk;
while (msk.run()!=K_QUIT)
{
TFilename name;
name=msk.get(F_PATH);
name.add(msk.get(F_NAME));
TAcquisizione_cache ca;
TCSV_recordset csvbolle(name);
for(bool ok=csvbolle.move_first(); ok; ok=csvbolle.move_next())
{
const long cli = csvbolle.get(0).as_int();
const TDate dtdoc = csvbolle.get(1).as_date();
const TString80 codart = csvbolle.get(2).as_string();
const long qta = csvbolle.get(3).as_int();
const TString4 um= csvbolle.get(4).as_string();
bool found=false;
TDocumento& doc = ca.doc(dtdoc,cli);
for (int i=1; doc.rows(); i++)
{
TRiga_documento& rdoc = doc[i];
if (rdoc.get(RDOC_CODART)==codart)
{
long qtardoc = rdoc.get_long(RDOC_QTA);
qtardoc+=qta;
rdoc.put(RDOC_QTA,qtardoc);
found=true;
break;
}
}
if (found==false)
{
TRiga_documento& rdoc = doc.new_row("01");
rdoc.put(RDOC_CODART,codart);
rdoc.put(RDOC_QTA,qta);
}
}
}
}
int lv2600(int argc, char *argv[])
{
TAcquisizione_lavanderie_app a;
a.run (argc, argv, "Acquisizione bolle di rientro/ritiro");
return TRUE;
}