Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 848 git-svn-id: svn://10.65.10.50/trunk@14993 c028cbd2-c16b-5b4b-a496-9718f37d4682
320 lines
9.5 KiB
C++
Executable File
320 lines
9.5 KiB
C++
Executable File
#include "pd0666.h"
|
|
#include "pd0666100a.h"
|
|
|
|
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <progind.h>
|
|
#include <recarray.h>
|
|
#include <textset.h>
|
|
|
|
#include "../cg/cglib01.h"
|
|
|
|
#include <clifo.h>
|
|
#include <comuni.h>
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TEsporta_SAP_mask
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TEsporta_SAP_mask : public TAutomask
|
|
{
|
|
|
|
public:
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
TEsporta_SAP_mask();
|
|
};
|
|
|
|
|
|
bool TEsporta_SAP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
{
|
|
/* switch (o.dlg())
|
|
{
|
|
default:
|
|
break;
|
|
}*/
|
|
return true;
|
|
}
|
|
|
|
TEsporta_SAP_mask::TEsporta_SAP_mask() : TAutomask("pd0666100a")
|
|
{
|
|
//file dei clienti..
|
|
TFilename file;
|
|
file.tempdir();
|
|
file.add("clienti.xls");
|
|
set(F_CLIFILE, file);
|
|
//..dei fornitori..
|
|
file.tempdir();
|
|
file.add("fornitori.xls");
|
|
set(F_FORNFILE, file);
|
|
//..e delle partite
|
|
file.tempdir();
|
|
file.add("partite.xls");
|
|
set(F_PARTFILE, file);
|
|
}
|
|
|
|
|
|
class TEsporta_SAP_clienti_recordset : public TAS400_recordset
|
|
{
|
|
public:
|
|
TEsporta_SAP_clienti_recordset();
|
|
};
|
|
|
|
TEsporta_SAP_clienti_recordset::TEsporta_SAP_clienti_recordset()
|
|
: TAS400_recordset("AS400(512)")
|
|
{
|
|
create_field("KTOKD", -1, 4, _alfafld); //zicc o zicu
|
|
create_field("NAME1", -1, 30, _alfafld); //ragsoc1
|
|
create_field("NAME2", -1, 20, _alfafld); //ragsoc2
|
|
create_field("SORTL", -1, 1, _alfafld); //campo non richiesto?
|
|
create_field("STRAS", -1, 45, _alfafld); //via+numero
|
|
create_field("ORT01", -1, 35, _alfafld); //localita'
|
|
create_field("PSTLZ", -1, 5, _alfafld); //cap
|
|
create_field("LAND1", -1, 3, _alfafld); //codice paese
|
|
create_field("REGIO", -1, 2, _alfafld); //occhio al casino in fase di caricamento!
|
|
create_field("SPRAS", -1, 1, _alfafld); //codlin
|
|
create_field("TELX1", -1, 40, _alfafld); //somma prefisso+telefono telex
|
|
create_field("TELF1", -1, 40, _alfafld); //somma prefisso+telefono ptel1+tel1
|
|
create_field("TELFX", -1, 40, _alfafld); //somma prefisso+telefono fax
|
|
create_field("TELF2", -1, 40, _alfafld); //somma prefisso+telefono ptel2+tel2
|
|
create_field("LZONE", -1, 10, _alfafld); //non l'abbiamo
|
|
create_field("VBUND", -1, 1, _alfafld); //non l'abbiamo
|
|
create_field("STCD1", -1, 16, _alfafld); //non l'abbiamo;cofi
|
|
create_field("STCD2", -1, 16, _alfafld); //non l'abbiamo
|
|
create_field("BRSCH", -1, 2, _alfafld); //non l'abbiamo
|
|
create_field("STCEG", -1, 14, _alfafld); //statopaiv+p.iva
|
|
create_field("STKZN", -1, 1, _alfafld); //tipopers
|
|
create_field("BUSAB", -1, 2, _alfafld); //non l'abbiamo
|
|
create_field("XAUSZ", -1, 1, _alfafld); //non l'abbiamo
|
|
create_field("AKONT", -1, 8, _alfafld); //conto da tabella!
|
|
create_field("FDGRV", -1, 5, _alfafld); //non l'abbiamo
|
|
create_field("ZTERM", -1, 4, _alfafld); //codpag?
|
|
create_field("ZAMIM", -1, 1, _alfafld); //non l'abbiamo
|
|
create_field("ZWELS", -1, 4, _alfafld); //codpag ancora?
|
|
create_field("VZSKZ", -1, 2, _alfafld); //non l'abbiamo
|
|
create_field("EIKTO", -1, 6, _alfafld); //nostro codcf
|
|
create_field("XZVER", -1, 1, _alfafld); //non l'abbiamo
|
|
create_field("TOGRU", -1, 4, _alfafld); //non l'abbiamo
|
|
create_field("ALTKN", -1, 7, _alfafld); //non l'abbiamo
|
|
create_field("MAHNA", -1, 4, _alfafld); //non l'abbiamo
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TEsporta_SAP
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TEsporta_SAP_app : public TSkeleton_application
|
|
{
|
|
TAssoc_array _codpag;
|
|
|
|
protected:
|
|
virtual bool check_autorization() const {return false;}
|
|
virtual const char * extra_modules() const {return "cg";}
|
|
virtual void main_loop();
|
|
|
|
bool is_cofi(const TString& cofi) const;
|
|
|
|
public:
|
|
void esporta_clienti(const TString& path) const;
|
|
void esporta_fornitori(const TString& path) const;
|
|
void esporta_partite(const TString& path) const;
|
|
|
|
};
|
|
|
|
bool TEsporta_SAP_app::is_cofi(const TString& cofi) const
|
|
{
|
|
if (cofi.len() != 16)
|
|
return false;
|
|
const char* const fmt = "AAAAAANNANNANNNA";
|
|
int i = 0;
|
|
for (i = 15; i >= 0; i--)
|
|
{
|
|
if (fmt[i] == 'A')
|
|
{
|
|
if (cofi[i] < 'A' || cofi[i] > 'Z')
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
if (cofi[i] < '0' || cofi[i] > '9')
|
|
break;
|
|
}
|
|
}
|
|
return i < 0;
|
|
}
|
|
|
|
void TEsporta_SAP_app::esporta_clienti(const TString& path) const
|
|
{
|
|
TString query;
|
|
query << "USE CLIFO";
|
|
query << "\nFROM TIPOCF='C'";
|
|
query << "\nTO TIPOCF='C'";
|
|
TISAM_recordset clienti_campo(query);
|
|
|
|
TEsporta_SAP_clienti_recordset clienti_sap;
|
|
|
|
const int cazzoni = clienti_campo.items();
|
|
TProgind pi(cazzoni, "Trasferimento clienti...", true, true);
|
|
TString workstring;
|
|
for (bool ok = clienti_campo.move_first(); ok; ok = clienti_campo.move_next())
|
|
{
|
|
if (!pi.addstatus(1))
|
|
break;
|
|
|
|
//creazione di un nuovo record di tipo clienti..
|
|
clienti_sap.new_rec();
|
|
//..e successivo riempimento
|
|
const long conto = clienti_campo.get(CLI_CONTO).as_int(); //ktokd
|
|
if (conto == 8 || conto == 9)
|
|
clienti_sap.set("KTOKD", TVariant("ZICC"));
|
|
else
|
|
clienti_sap.set("KTOKD", TVariant("ZICU"));
|
|
|
|
workstring = clienti_campo.get(CLI_RAGSOC).as_string(); //name1 e name2
|
|
clienti_sap.set("NAME1", TVariant(workstring.left(30)));
|
|
clienti_sap.set("NAME2", TVariant(workstring.mid(30)));
|
|
|
|
workstring = clienti_campo.get(CLI_INDCF).as_string(); //stras
|
|
workstring << " " << clienti_campo.get(CLI_CIVCF).as_string();
|
|
clienti_sap.set("STRAS", TVariant(workstring));
|
|
|
|
//pocci su comune localita' provincia
|
|
if (clienti_campo.get(CLI_COMCF).is_empty())
|
|
{
|
|
workstring = cap2comune(clienti_campo.get(CLI_CAPCF).as_string(),
|
|
clienti_campo.get(CLI_LOCCF).as_string());
|
|
workstring.insert(" |");
|
|
}
|
|
else
|
|
{
|
|
workstring = clienti_campo.get(CLI_STATOCF).as_string();
|
|
workstring << "|" << clienti_campo.get(CLI_COMCF).as_string();
|
|
}
|
|
const TRectype& com_rec = cache().get(LF_COMUNI, workstring);
|
|
const TString& dencom = com_rec.get(COM_DENCOM);
|
|
|
|
workstring = clienti_campo.get(CLI_LOCCF).as_string(); //ort01
|
|
if (dencom.full())
|
|
{
|
|
if (workstring.blank())
|
|
workstring = dencom;
|
|
else
|
|
{
|
|
workstring.upper();
|
|
if (xvt_str_fuzzy_compare(workstring, dencom) < 0.75)
|
|
workstring << ", " << dencom;
|
|
}
|
|
}
|
|
clienti_sap.set("ORT01", TVariant(workstring));
|
|
|
|
workstring = clienti_campo.get(CLI_CAPCF).as_string(); //pstlz
|
|
clienti_sap.set("PSTLZ", TVariant(workstring));
|
|
|
|
workstring = clienti_campo.get(CLI_STATOCF).as_string(); //land1
|
|
clienti_sap.set("LAND1", TVariant(workstring));
|
|
|
|
workstring = com_rec.get(COM_PROVCOM); //regio
|
|
clienti_sap.set("REGIO", TVariant(workstring));
|
|
|
|
workstring = clienti_campo.get(CLI_CODLIN).as_string(); //spras
|
|
clienti_sap.set("SPRAS", TVariant(workstring));
|
|
|
|
workstring = clienti_campo.get(CLI_PTELEX).as_string(); //telx1
|
|
workstring << clienti_campo.get(CLI_TELEX).as_string();
|
|
clienti_sap.set("TELX1", TVariant(workstring));
|
|
|
|
workstring = clienti_campo.get(CLI_PTEL).as_string(); //telf1
|
|
workstring << clienti_campo.get(CLI_TEL).as_string();
|
|
clienti_sap.set("TELF1", TVariant(workstring));
|
|
|
|
workstring = clienti_campo.get(CLI_PFAX).as_string(); //telfx
|
|
workstring << clienti_campo.get(CLI_FAX).as_string();
|
|
clienti_sap.set("TELFX", TVariant(workstring));
|
|
|
|
workstring = clienti_campo.get(CLI_PTEL2).as_string(); //telf2
|
|
workstring << clienti_campo.get(CLI_TEL2).as_string();
|
|
clienti_sap.set("TELF2", TVariant(workstring));
|
|
|
|
workstring = clienti_campo.get(CLI_COFI).as_string(); //stcd1
|
|
clienti_sap.set("STCD1", TVariant(workstring));
|
|
|
|
if (is_cofi(workstring)) //stkzn
|
|
clienti_sap.set("STKZN", TVariant("X"));
|
|
|
|
workstring = clienti_campo.get(CLI_STATOPAIV).as_string(); //stceg
|
|
workstring << clienti_campo.get(CLI_PAIV).as_string();
|
|
clienti_sap.set("STCEG", TVariant(workstring));
|
|
|
|
if (conto == 8 || conto == 9) //akont
|
|
clienti_sap.set("AKONT", TVariant("8/9"));
|
|
else
|
|
clienti_sap.set("AKONT", TVariant("7"));
|
|
|
|
workstring = clienti_campo.get(CLI_CODPAG).as_string(); //zterm
|
|
TString* codpag = (TString*)_codpag.objptr(workstring);
|
|
if (codpag == NULL)
|
|
workstring = "R000";
|
|
else
|
|
workstring = *codpag;
|
|
clienti_sap.set("ZTERM", TVariant(workstring));
|
|
|
|
clienti_sap.set("ZWELS", TVariant("D")); //zwels
|
|
|
|
workstring = clienti_campo.get(CLI_CODCF).as_string(); //eikto
|
|
clienti_sap.set("EIKTO", TVariant(workstring));
|
|
}
|
|
|
|
//scrivitore in formato xls
|
|
clienti_sap.save_as(path, fmt_silk);
|
|
#ifdef DBG
|
|
xvt_sys_goto_url(path, "open");
|
|
#endif
|
|
|
|
}
|
|
|
|
void TEsporta_SAP_app::esporta_fornitori(const TString& path) const
|
|
{
|
|
}
|
|
|
|
void TEsporta_SAP_app::esporta_partite(const TString& path) const
|
|
{
|
|
}
|
|
|
|
void TEsporta_SAP_app::main_loop()
|
|
{
|
|
//crea tabella trascodifica
|
|
_codpag.add("BB", new TString("R000"));
|
|
_codpag.add("B09", new TString("R002"));
|
|
_codpag.add("B01", new TString("R003"));
|
|
_codpag.add("BB09", new TString("R004"));
|
|
_codpag.add("B05", new TString("R004"));
|
|
_codpag.add("B07", new TString("R005"));
|
|
_codpag.add("B03", new TString("R007"));
|
|
_codpag.add("B04", new TString("R007"));
|
|
_codpag.add("B11", new TString("R007"));
|
|
_codpag.add("BB30", new TString("R007"));
|
|
_codpag.add("B08", new TString("R009"));
|
|
_codpag.add("BB60", new TString("R009"));
|
|
_codpag.add("B10", new TString("R010"));
|
|
_codpag.add("BB90", new TString("R010"));
|
|
|
|
TEsporta_SAP_mask m;
|
|
|
|
while (m.run() == K_ENTER)
|
|
{
|
|
if (m.get_bool(F_CLIENTI))
|
|
esporta_clienti(m.get(F_CLIFILE));
|
|
if (m.get_bool(F_FORNITORI))
|
|
esporta_fornitori(m.get(F_FORNFILE));
|
|
if (m.get_bool(F_PARTITE))
|
|
esporta_partite(m.get(F_PARTFILE));
|
|
}
|
|
}
|
|
|
|
int pd0666100(int argc, char* argv[])
|
|
{
|
|
TEsporta_SAP_app app;
|
|
app.run(argc, argv, TR("Esportazione a SAP"));
|
|
return 0;
|
|
}
|