Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@17490 c028cbd2-c16b-5b4b-a496-9718f37d4682
197 lines
4.7 KiB
C++
Executable File
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;
|
|
}
|