campo-sirio/lv/lv3800.cpp
luca83 825d12ab62 Patch level : 10.0 patch ???
Files correlati     : lv3
Ricompilazione Demo : [ ]
Commento            :
Aggiunta l'esportazione dei campi lunghezza e larghezza nell'invio a skema


git-svn-id: svn://10.65.10.50/branches/R_10_00@21898 c028cbd2-c16b-5b4b-a496-9718f37d4682
2011-04-06 08:37:58 +00:00

267 lines
7.9 KiB
C++
Executable File

#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <progind.h>
#include <textset.h>
#include "../ve/velib.h"
#include "comuni.h"
#include "../mg/anamag.h"
#include "lvcondv.h"
#include "lvrcondv.h"
#include "lv3800a.h"
////////////////////////////////////
//// TINVIA_CLIENTI_SKEMA ////
////////////////////////////////////
//Classe TInvia_clienti_skema
class TInvia_clienti_skema: public TAS400_recordset
{
public:
void aggiungi_riga(const long codcf);
TInvia_clienti_skema();
};
void TInvia_clienti_skema::aggiungi_riga(const long codcf)
{
//preparo la cache su clifo
TToken_string clifokey;
clifokey.add('C');
clifokey.add(codcf);
const TRectype& clifo = cache().get(LF_CLIFO, clifokey);
const TString80 ragsoc = clifo.get(CLI_RAGSOC);
TString80 localita = clifo.get(CLI_LOCCF);
if(localita.empty())
{
TToken_string comunikey;
comunikey.add("");
comunikey.add(cap2comune(clifo.get(CLI_CAPCF), localita));
localita = cache().get(LF_COMUNI, comunikey, COM_DENCOM);
}
new_rec("");
set("CODCF", TVariant(codcf));
set("RAGSOC", ragsoc);
set("CITTA", localita);
}
TInvia_clienti_skema::TInvia_clienti_skema()
: TAS400_recordset("AS400(122)")
{
create_field("CODCF", -1, 20, _longzerofld, true); //codice cliente
create_field("RAGSOC", -1, 50, _alfafld, true); //ragione sociale
create_field("CITTA", -1, 50, _alfafld, true); //città
}
/////////////////////////////////////
//// TINVIA_ARTICOLI_SKEMA ////
/////////////////////////////////////
//Classe TInvia_articoli_skema
class TInvia_articoli_skema: public TAS400_recordset
{
public:
void aggiungi_riga(const TString& codart);
TInvia_articoli_skema();
};
void TInvia_articoli_skema::aggiungi_riga(const TString& codart)
{
//preparo la cache su anamag
const TRectype& anamag = cache().get(LF_ANAMAG, codart);
const TString80 desart = anamag.get(ANAMAG_DESCR);
const TString80 tpart = anamag.get(ANAMAG_TIPOPARTE);
TString4 codlav; codlav.format("%05d", anamag.get(ANAMAG_CODLAV1));
TString16 peso; peso.format("%010d", anamag.get(ANAMAG_PESO));
const real lunghezza = anamag.get_real(ANAMAG_USER9);
const real larghezza = anamag.get_real(ANAMAG_USER10);
new_rec("");
set("CODART", codart);
set("DESART", desart);
set("CODLAV", codlav);
set("TPART", tpart);
set("PESO", peso);
set("LUNGHEZZA", lunghezza);
set("LARGHEZZA", larghezza);
}
TInvia_articoli_skema::TInvia_articoli_skema()
: TAS400_recordset("AS400(127)")
{
create_field("CODART", -1, 20, _alfafld, true); //codice articolo
create_field("DESART", -1, 50, _alfafld, true); //descrizione
create_field("CODALV", -1, 5, _intzerofld, true); //codice lavaggio
create_field("TPART", -1, 20, _alfafld, true); //tipo articolo
create_field("PESO", -1, 20, _alfafld, true); //peso
create_field("LUNGHEZZA", -1, 5, _realfld, true); //lunghezza
create_field("LARGHEZZA", -1, 5, _realfld, true); //larghezza
}
//////////////////////////////////////
//// TINVIA_DOTAZIONI_SKEMA ////
//////////////////////////////////////
//Classe TInvia_dotazioni_skema
class TInvia_dotazioni_skema: public TAS400_recordset
{
public:
void aggiungi_riga(const long codcf, const long codcont);
TInvia_dotazioni_skema();
};
void TInvia_dotazioni_skema::aggiungi_riga(const long codcf, const long codcont)
{
//preparo il recodset delle righe contratto
TString query;
query << "USE LVRCONDV\n"
<< "FROM CODCF=" << codcf << " CODCONT=" << codcont << "\n"
<< "TO CODCF=" << codcf << " CODCONT=" << codcont;
TISAM_recordset rcont(query);
for(bool ok = rcont.move_first(); ok; ok = rcont.move_next())
{
const TString80 codart = rcont.get(LVRCONDV_CODART).as_string();
new_rec("");
set("CODCF", TVariant(codcf));
set("CODART", codart);
}
}
TInvia_dotazioni_skema::TInvia_dotazioni_skema()
: TAS400_recordset("AS400(122)")
{
create_field("CODCF", -1, 20, _longzerofld, true); //codice cliente
create_field("RAGSOC", -1, 50, _alfafld, true); //ragione sociale
create_field("CITTA", -1, 50, _alfafld, true); //città
}
///////////////////////////
//// TInvcon_skema_msk ////
///////////////////////////
//classe TInvcon_skema_msk
class TInvcon_skema_msk: public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
void esporta() const;
TInvcon_skema_msk();
};
//ESPORTA: metodo che crea il file di output nel percorso desiderato
void TInvcon_skema_msk::esporta() const
{
//recupero i dati di interesse dalla maschera
const TDate datasc = get_date(F_SCAD);
//prendo il path dalla maschera
const TString& path = get(F_PATH);
TFilename file_cli = path; file_cli.add("clienti.txt");
TFilename file_art = path; file_art.add("articoli.txt");
TFilename file_dot = path; file_dot.add("dotazione.txt");
//preparo il recodset che contiene tutti i contratti validi
TString query;
query << "USE LVCONDV\n"
<< "SELECT (BETWEEN(DATAIN,\"\",#DATA))&&((NUM(ANSI(DATASC))>=" << datasc.date2ansi() << ")||(DATASC=\"\"))&&(CONTSPOR>0)\n"
<< "BY CODCF";
TISAM_recordset contratti(query);
contratti.set_var("#DATA", datasc);
if(contratti.items() > 0)
{
TInvia_clienti_skema* recset_clienti = new TInvia_clienti_skema();
TInvia_articoli_skema* recset_articoli = new TInvia_articoli_skema();
TInvia_dotazioni_skema* recset_dotazioni = new TInvia_dotazioni_skema();
TAssoc_array presenti;
contratti.move_first();
long oldcodcf = contratti.get(LVCONDV_CODCF).as_int();
TProgind pi(contratti.items(), "Esportazione in corso...", true, true);
for(bool ok = contratti.move_first(); ok; ok = contratti.move_next())
{
if (!pi.addstatus(1))
break;
const long codcf = contratti.get(LVCONDV_CODCF).as_int();
const long codcon = contratti.get(LVCONDV_CODCONT).as_int();
if(oldcodcf != codcf)
{
presenti.destroy();
oldcodcf = codcf;
}
recset_clienti->aggiungi_riga(codcf);
recset_dotazioni->aggiungi_riga(codcf, codcon);
}
recset_clienti->save_as(file_cli);
recset_articoli->save_as(file_art);
TISAM_recordset anamag(TR("USE ANAMAG"));
for(bool ok1 = anamag.move_first(); ok1; ok1 = anamag.move_next())
{
const TString80 codart = anamag.get(ANAMAG_CODART).as_string();
recset_articoli->aggiungi_riga(codart);
}
recset_dotazioni->save_as(file_dot);
message_box(TR("Esportazione terminata"));
}
else
warning_box(TR("Non ci sono contratti in essere rispetto alla data specificata"));
}
//ON_FIELD_EVENT: metodo che gestisce gli eventi sui campi della maschera
bool TInvcon_skema_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
return true;
}
//metodo costruttore che precarica i campi di interesse sulla maschera
TInvcon_skema_msk::TInvcon_skema_msk() : TAutomask("lv3800a") {}
///////////////////////////
//// TInvcon_skema_app ////
///////////////////////////
//classe TInvcon_skema_app
class TInvcon_skema_app : public TSkeleton_application
{
public:
virtual void main_loop();
};
void TInvcon_skema_app::main_loop()
{
TInvcon_skema_msk msk;
while (msk.run() != K_QUIT)
msk.esporta();
}
int lv3800(int argc, char *argv[])
{
TInvcon_skema_app a;
a.run (argc, argv, TR("Invio a contapezzi"));
return TRUE;
}