Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@16033 c028cbd2-c16b-5b4b-a496-9718f37d4682
272 lines
6.8 KiB
C++
Executable File
272 lines
6.8 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 "../cg/cgsaldac.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();
|
|
|
|
bool test_partita(const long numreg, TDate& last_data_pag) const;
|
|
|
|
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)
|
|
{
|
|
TDate last_data_pag;
|
|
bool partita_chiusa = test_partita(curr_numreg, last_data_pag);
|
|
|
|
if (partita_chiusa)
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
bool TEsporta_ps0713_app::test_partita(const long numreg, TDate& last_data_pag) const
|
|
{
|
|
bool finito = false;
|
|
|
|
TPartite_array torneo;
|
|
torneo.add_numreg(numreg);
|
|
TPartita* partita = torneo.first();
|
|
if (partita != NULL && partita->chiusa())
|
|
{
|
|
for (int r = partita->last(); r > 0; r = partita->pred(r))
|
|
{
|
|
const TRiga_partite& row = partita->riga(r);
|
|
const tipo_movimento tipo = row.tipo();
|
|
if (tipo == tm_pagamento || tipo == tm_pagamento_insoluto)
|
|
{
|
|
const TDate datadoc = row.get_date(PART_DATAPAG);
|
|
if (datadoc > last_data_pag)
|
|
last_data_pag = datadoc;
|
|
}
|
|
}
|
|
finito = true;
|
|
}
|
|
|
|
return finito;
|
|
}
|
|
|
|
|
|
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\")&&(23.TIPO=\"F\")";
|
|
|
|
if (m.get_int(F_JOB) == 1)
|
|
query << "&&(CODCMS!=\"\")";
|
|
else
|
|
query << "&&(CODCMS=\"\")";
|
|
|
|
query << "\nJOIN MOV INTO NUMREG==NUMREG";
|
|
query << "\nJOIN %IVA ALIAS 101 INTO CODTAB==CODIVA";
|
|
query << "\nJOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF";
|
|
|
|
TISAM_recordset rmoviva(query);
|
|
const TDate& adata = m.get_date(F_ADATA);
|
|
const TDate dadata(1,1, adata.year() - 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;
|
|
|
|
TDate last_data_pag;
|
|
bool partita_chiusa = test_partita(rmoviva.get(RMI_NUMREG).as_int(), last_data_pag);
|
|
|
|
if (partita_chiusa)
|
|
{
|
|
//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("23.CODCF"));
|
|
csv.set(2, rmoviva.get("20.RAGSOC"));
|
|
const real imponibile = rmoviva.get(RMI_IMPONIBILE).as_real();
|
|
// const real imposta = rmoviva.get(RMI_IMPOSTA).as_real();
|
|
// const real lordo = imponibile + imposta;
|
|
// csv.set(3, lordo);
|
|
csv.set(3, imponibile);
|
|
//csv.set(2, rmoviva.get("101@.R0")); //aliquota non ci vuole piu'
|
|
// csv.set(5, imposta);
|
|
csv.set(6, rmoviva.get("23.DATADOC"));
|
|
csv.set(7, rmoviva.get("23.NUMDOC"));
|
|
csv.set(8, last_data_pag);
|
|
|
|
// csv.set(9, rmoviva.get(RMI_GRUPPO));
|
|
// csv.set(10, rmoviva.get(RMI_CONTO));
|
|
// csv.set(11, rmoviva.get(RMI_SOTTOCONTO));
|
|
// csv.set(12, rmoviva.get(RMI_NUMREG));
|
|
}
|
|
|
|
} //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;
|
|
}
|