campo-sirio/ps/ps0713100.cpp
alex 96f33c01ee Patch level : 4.0 979
Files correlati     : ve6.exe
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 3.1 patch 979


git-svn-id: svn://10.65.10.50/trunk@15623 c028cbd2-c16b-5b4b-a496-9718f37d4682
2007-09-17 15:33:04 +00:00

212 lines
5.2 KiB
C++
Executable File

#include <applicat.h>
#include <automask.h>
#include <progind.h>
#include <recarray.h>
#include <relation.h>
#include <textset.h>
#include <mov.h>
#include <rmoviva.h>
#include "ps0713.h"
#include "ps0713100a.h"
///////////////////////////////////////////////////////////
// TEsporta_ps0713 maschera
///////////////////////////////////////////////////////////
class TEsporta_ps0713_mask : public TAutomask
{
public:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
TEsporta_ps0713_mask();
~TEsporta_ps0713_mask();
};
bool TEsporta_ps0713_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
//giochetto per avere la lista dei files validi nella directory di trasferimento!
case F_ADATA:
if (e == fe_modify || e == fe_close)
{
TDate adata = o.get();
TString str_adata;
str_adata << adata.date2ansi() << ".txt";
set(F_NAME, str_adata);
}
break;
default:
break;
}
return true;
}
TEsporta_ps0713_mask::TEsporta_ps0713_mask() : TAutomask("ps0713100a")
{
//carica i parametri del file di configurazione
TConfig configfile("ps0713conf.ini", "MAIN");
for (int i = 0; i < fields() ; i++)
{
TMask_field& f = fld(i);
const TFieldref* fr = f.field();
if (fr != NULL)
f.set(configfile.get(fr->name()));
}
}
TEsporta_ps0713_mask::~TEsporta_ps0713_mask()
{
//carica i parametri del file di configurazione
TConfig configfile("ps0713conf.ini", "MAIN");
for (int i = 0; i < fields() ; i++)
{
TMask_field& f = fld(i);
const TFieldref* fr = f.field();
if (fr != NULL)
configfile.set(fr->name(), f.get());
}
}
/////////////////////////////////////////////////////////////
// TEsporta_ps0713 recordset (righe movimenti iva)
/////////////////////////////////////////////////////////////
class TEsporta_ps0713_recordset : public TCSV_recordset
{
public:
TEsporta_ps0713_recordset();
};
TEsporta_ps0713_recordset::TEsporta_ps0713_recordset()
: TCSV_recordset("CSV(\"\t\")")
{
}
///////////////////////////////////////////////////////////
// TEsporta_ps0713 applicazione
///////////////////////////////////////////////////////////
class TEsporta_ps0713_app : public TSkeleton_application
{
protected:
virtual bool check_autorization() const {return false;}
virtual const char * extra_modules() const {return "cg";}
virtual void main_loop();
public:
void esporta_righe_iva(const TMask& msk) const;
void set_inviva(TISAM_recordset& rmoviva) const;
};
void TEsporta_ps0713_app::set_inviva(TISAM_recordset& rmoviva) const
{
long last_numreg = 0L;
const long items = rmoviva.items();
TProgind pi(items, TR("Impostazione flag Inviata parte IVA..."), true, true);
TLocalisamfile mov(LF_MOV);
for (bool ok = rmoviva.move_first(); ok; ok = rmoviva.move_next())
{
if (!pi.addstatus(1))
break;
const long curr_numreg = rmoviva.get(RMI_NUMREG).as_int();
if (curr_numreg != last_numreg)
{
mov.put(MOV_NUMREG, curr_numreg);
int err = mov.read();
if (err == NOERR)
{
mov.put(MOV_INVIVA, 'X');
err = mov.rewrite();
}
if (err != NOERR)
{
TString cazzone;
cazzone << TR("Impossibile aggiornare il movimento ");
cazzone << curr_numreg;
error_box(cazzone);
break;
}
last_numreg = curr_numreg;
}
}
}
void TEsporta_ps0713_app::esporta_righe_iva(const TMask& m) const
{
TFilename path = m.get(F_PATH);
path.add(m.get(F_NAME));
if (path.exist())
if (!yesno_box(TR("ATTENZIONE! File gia' presente! Se si procede sara' azzerato il file esistente!\nContinuare?")))
return;
// query su righe iva joinati ai mov
TString query;
query << "USE RMOVIVA ";
query << "SELECT ((NUM(ANSI(23.DATAREG))>=NUM(ANSI(#DADATA)))&&(NUM(ANSI(23.DATAREG))<=NUM(ANSI(#ADATA))))&&(23.INVIVA!=\"X\")\n";
query << "JOIN MOV INTO NUMREG==NUMREG\n";
query << "JOIN %IVA ALIAS 101 INTO CODTAB==CODIVA";
TISAM_recordset rmoviva(query);
const TDate& adata = m.get_date(F_ADATA);
TDate dadata = adata;
dadata.addyear(-1);
rmoviva.set_var("#DADATA", dadata);
rmoviva.set_var("#ADATA", adata);
TEsporta_ps0713_recordset csv;
const long items = rmoviva.items();
TProgind pi(items, TR("Estrazione dati..."), true, true);
TString ws;
for (bool ok = rmoviva.move_first(); ok; ok = rmoviva.move_next())
{
if (!pi.addstatus(1))
break;
//creazione di un nuovo record da esportare
csv.new_rec("");
//..e successivo riempimento
csv.set(0, rmoviva.get(RMI_CODCMS));
csv.set(1, rmoviva.get(RMI_IMPONIBILE));
csv.set(2, rmoviva.get("101@.R0"));
csv.set(3, rmoviva.get(RMI_IMPOSTA));
csv.set(4, rmoviva.get(RMI_GRUPPO));
csv.set(5, rmoviva.get(RMI_CONTO));
csv.set(6, rmoviva.get(RMI_SOTTOCONTO));
} //for(move_first()..
csv.save_as(path, fmt_text);
#ifdef DBG
xvt_sys_goto_url(path, "open");
#endif
TString msg;
msg << TR("Si conferma l'esportazione definitiva dei movimenti IVA fino al ");
msg << m.get(F_ADATA);
if (yesno_box(msg))
set_inviva(rmoviva); //mette il flag di "INVIVA" alla testata movimento
}
void TEsporta_ps0713_app::main_loop()
{
TEsporta_ps0713_mask m;
while (m.run() == K_ENTER)
esporta_righe_iva(m);
}
int ps0713100(int argc, char* argv[])
{
TEsporta_ps0713_app app;
app.run(argc, argv, TR("Trasferimento dati IVA"));
return 0;
}