#include "pd0666.h" #include "pd0666100a.h" #include #include #include #include #include #include "../cg/cglib01.h" #include #include /////////////////////////////////////////////////////////// // 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; }