32a92bd876
Files correlati : Ricompilazione Demo : [ ] Commento :prima generazione del .csv del CONAI (non propriamente una bellezza!) git-svn-id: svn://10.65.10.50/trunk@16195 c028cbd2-c16b-5b4b-a496-9718f37d4682
236 lines
5.6 KiB
C++
Executable File
236 lines
5.6 KiB
C++
Executable File
#include "tp0900a.h"
|
|
|
|
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <config.h>
|
|
#include <modaut.h>
|
|
#include <progind.h>
|
|
#include <reprint.h>
|
|
#include <reputils.h>
|
|
#include <textset.h>
|
|
|
|
#include <rdoc.h>
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// MASCHERA
|
|
///////////////////////////////////////////////////////////
|
|
class TDichiarazione_CONAI_mask : public TAutomask
|
|
{
|
|
protected:
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
|
|
public:
|
|
TDichiarazione_CONAI_mask();
|
|
virtual ~TDichiarazione_CONAI_mask() {}
|
|
};
|
|
|
|
TDichiarazione_CONAI_mask::TDichiarazione_CONAI_mask() : TAutomask("tp0900a")
|
|
{
|
|
}
|
|
|
|
bool TDichiarazione_CONAI_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
{
|
|
switch (o.dlg())
|
|
{
|
|
case F_PERIODO:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// CSV RECORDSET
|
|
/////////////////////////////////////////////////////////////
|
|
|
|
class TDichiarazione_CONAI_csv_recordset : public TCSV_recordset
|
|
{
|
|
public:
|
|
TDichiarazione_CONAI_csv_recordset();
|
|
};
|
|
|
|
|
|
TDichiarazione_CONAI_csv_recordset::TDichiarazione_CONAI_csv_recordset()
|
|
: TCSV_recordset("CSV(,)\n")
|
|
{
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// APPLICAZIONE
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TDichiarazione_CONAI : public TSkeleton_application
|
|
{
|
|
|
|
protected:
|
|
void crea_csv(const TMask& mask) const;
|
|
|
|
public:
|
|
virtual bool create();
|
|
virtual void main_loop();
|
|
|
|
};
|
|
|
|
//metodo di base per la ricerca delle righe documento che soddisfano i parametri dell'utonto
|
|
void TDichiarazione_CONAI::crea_csv(const TMask& mask) const
|
|
{
|
|
//Tanto per cominciare stabilisce il range di date...
|
|
const int anno = mask.get_int(F_ANNO);
|
|
|
|
TDate dataini(1, 1, anno);
|
|
TDate datafin(31, 12, anno);
|
|
|
|
const int tipo_periodo = mask.get_int(F_PERIODO);
|
|
//se il periodo scelto non e' un anno intero...
|
|
switch (tipo_periodo)
|
|
{
|
|
case 2:
|
|
{
|
|
const int mese = mask.get_int(F_TRIMESTRE);
|
|
dataini.set_month(mese);
|
|
datafin = dataini;
|
|
datafin.addmonth(2);
|
|
datafin.set_end_month();
|
|
}
|
|
break;
|
|
case 3:
|
|
{
|
|
const int mese = mask.get_int(F_MESE);
|
|
dataini.set_month(mese);
|
|
datafin = dataini;
|
|
datafin.set_end_month();
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
//Adesso tocca al codice articolo in base alla specie CONAI
|
|
const int specie_conai = mask.get_int(F_SPECIECONAI);
|
|
TConfig ditta_ini(CONFIG_DITTA, "ve");
|
|
|
|
TVariant codart;
|
|
|
|
switch (specie_conai)
|
|
{
|
|
case 1:
|
|
codart = ditta_ini.get("CODACC"); //acciaio
|
|
break;
|
|
case 2:
|
|
codart = ditta_ini.get("CODALL"); //alluminio
|
|
break;
|
|
case 3:
|
|
codart = ditta_ini.get("CODCAR"); //carta
|
|
break;
|
|
case 4:
|
|
codart = ditta_ini.get("CODPLA"); //plastica
|
|
break;
|
|
case 5:
|
|
codart = ditta_ini.get("CODLEG"); //legno
|
|
break;
|
|
case 6:
|
|
codart = ditta_ini.get("CODVET"); //vetro
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
//Adesso prende le numerazioni e i tipi documento
|
|
TSheet_field& sf = mask.sfield(F_TIPI);
|
|
|
|
//la query e' sulle righe documento
|
|
TString query;
|
|
query << "USE RDOC KEY 5\n";
|
|
query << "SELECT ((NUM(ANSI(33.DATADOC))>=NUM(ANSI(#DADATA)))&&(NUM(ANSI(33.DATADOC))<=NUM(ANSI(#ADATA))))&&(33.TIPODOC=#TIPODOC)&&(GENERATA=\"X\")\n";
|
|
query << "JOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC\n";
|
|
query << "FROM CODART=#CODART ANNO=#ANNO CODNUM=#CODNUM PROVV=\"D\"\n";
|
|
query << "TO CODART=#CODART ANNO=#ANNO CODNUM=#CODNUM PROVV=\"D\"\n";
|
|
|
|
//crea il recordset ed assegna subito i valori delle variabili che restano costanti al cambio..
|
|
//..numerazione/tipo: sono le date ed il codice articolo
|
|
TISAM_recordset rdoc(query);
|
|
|
|
rdoc.set_var("#ANNO", TVariant((long)anno));
|
|
rdoc.set_var("#DADATA", dataini);
|
|
rdoc.set_var("#ADATA", datafin);
|
|
rdoc.set_var("#CODART", codart);
|
|
|
|
//creazione del csv recordset che verra' riempito dai record del recordset rdoc
|
|
TDichiarazione_CONAI_csv_recordset csv;
|
|
const TString path = "C:/temp/cazzone.csv";
|
|
|
|
//quante righe dello sheet processa?
|
|
const long tot_items = sf.items();
|
|
|
|
//Visto che e' possibile avere una secchiata di numerazioni, gli tocca fare un giro per ogni numerazione
|
|
FOR_EACH_SHEET_ROW(sf, r, row)
|
|
{
|
|
//estrazione definitiva dei record che soddisfano il casino di parametri richiesti
|
|
rdoc.set_var("#CODNUM", TVariant(row->get(0)));
|
|
rdoc.set_var("#TIPODOC", TVariant(row->get(2)));
|
|
|
|
const long items = rdoc.items();
|
|
#ifdef DBG
|
|
warning_box("Hai trovato %ld righe bello!", items);
|
|
#endif
|
|
|
|
//E crea pure la progind..
|
|
TProgind pi(tot_items, TR("Estrazione righe..."), true, true);
|
|
|
|
for (bool ok = rdoc.move_first(); ok; ok = rdoc.move_next())
|
|
{
|
|
if (!pi.addstatus(1))
|
|
break;
|
|
|
|
//creazione di un nuovo record da esportare
|
|
csv.new_rec("");
|
|
|
|
csv.set(0, rdoc.get(RDOC_CODNUM));
|
|
csv.set(1, rdoc.get(RDOC_ANNO));
|
|
csv.set(2, rdoc.get(RDOC_NDOC));
|
|
csv.set(3, rdoc.get(RDOC_NRIGA));
|
|
csv.set(4, rdoc.get(RDOC_CODART));
|
|
csv.set(5, rdoc.get(RDOC_PREZZO));
|
|
csv.set(6, rdoc.get(RDOC_UMQTA));
|
|
csv.set(7, rdoc.get(RDOC_QTA));
|
|
}
|
|
|
|
csv.save_as(path, fmt_text);
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef DBG
|
|
xvt_sys_goto_url(path, "open");
|
|
#endif
|
|
|
|
}
|
|
|
|
void TDichiarazione_CONAI::main_loop()
|
|
{
|
|
TDichiarazione_CONAI_mask mask;
|
|
while (mask.run() == K_ENTER)
|
|
{
|
|
crea_csv(mask);
|
|
}
|
|
}
|
|
|
|
bool TDichiarazione_CONAI::create()
|
|
{
|
|
if (!has_module(DCAUT))
|
|
return error_box(TR("Modulo non autorizzato"));
|
|
|
|
return TSkeleton_application::create();
|
|
}
|
|
|
|
int tp0900(int argc, char* argv[])
|
|
{
|
|
TDichiarazione_CONAI dc;
|
|
dc.run(argc, argv, TR("Dichiarazione CONAI"));
|
|
return 0;
|
|
} |