#include "pd0666.h" #include "pd0666100a.h" #include #include #include #include #include #include #include #include #include "../cg/cglib01.h" #include #include #include #include #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(); ~TEsporta_SAP_mask(); }; bool TEsporta_SAP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { case F_NEXTNUMC: if (e == fe_init) { const int n = get(F_LASTDATAC) != get(F_TODAY) ? 1 : get_int(F_LASTNUMC)+1; TString4 str; str.format("%02d", n); o.set(str); } break; case F_NEXTNUMF: if (e == fe_init) { const int n = get(F_LASTDATAF) != get(F_TODAY) ? 1 : get_int(F_LASTNUMF)+1; TString4 str; str.format("%02d", n); o.set(str); } break; default: break; } return true; } TEsporta_SAP_mask::TEsporta_SAP_mask() : TAutomask("pd0666100a") { //carica i parametri del file di configurazione TConfig configfile("pd0666conf.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())); } //file dei clienti.. TFilename file; if (get(F_CLIFILE).empty()) { file.tempdir(); file.add("clienti.xls"); set(F_CLIFILE, file); } //..dei fornitori.. if (get(F_FORNFILE).empty()) { file.tempdir(); file.add("fornitori.xls"); set(F_FORNFILE, file); } //..e delle partite if (get(F_PARTFILEC).empty()) { file.tempdir(); file.add("partitec.xls"); set(F_PARTFILEC, file); } if (get(F_PARTFILEF).empty()) { file.tempdir(); file.add("partitef.xls"); set(F_PARTFILEF, file); } } TEsporta_SAP_mask::~TEsporta_SAP_mask() { //carica i parametri del file di configurazione TConfig configfile("pd0666conf.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()); } } ///////////////////////////////////////////////////////////// // Recordset specifici per i dati da trasferire ///////////////////////////////////////////////////////////// //Clienti 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, 50, _alfafld); //ragsoc1 create_field("NAME2", -1, 5, _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); //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, true, "41001000"); //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); //metodopag 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 } //Forinitori class TEsporta_SAP_fornitori_recordset : public TAS400_recordset { public: TEsporta_SAP_fornitori_recordset(); }; TEsporta_SAP_fornitori_recordset::TEsporta_SAP_fornitori_recordset() : TAS400_recordset("AS400(512)") { create_field("ACCVE", -1, 6, _alfafld); //codcf create_field("ACCOUNT", -1, 4, _alfafld); //z00? create_field("NAME1", -1, 50, _alfafld); //ragsoc1 create_field("NAME2", -1, 5, _alfafld); //ragsoc2 create_field("SORTL", -1, 10, _alfafld); //sort non l'abbiamo (ricalt?) create_field("STREET", -1, 35, _alfafld); //indcf create_field("HOUSEN", -1, 10, _alfafld); //civcf create_field("DISTR", -1, 35, _alfafld); //localita' create_field("ZIP", -1, 5, _alfafld); //cap create_field("CITY", -1, 50, _alfafld); //dencom create_field("COUNTRY", -1, 3, _alfafld); //codice paese create_field("REGION", -1, 2, _alfafld); //provincia create_field("LANG", -1, 1, _alfafld); //codlin create_field("TEL", -1, 40, _alfafld); //pref+tel create_field("TEL2", -1, 40, _alfafld); //pref+tel create_field("FAX", -1, 40, _alfafld); //pref+fax create_field("TAXC1", -1, 16, _alfafld); //cofi create_field("TAXC2", -1, 16, _alfafld); //non l'abbiamo create_field("VATRN", -1, 14, _alfafld); //statopaiv+iva create_field("TIPOP", -1, 1, _alfafld); //tipopers create_field("SEX", -1, 1, _alfafld); //sesso! create_field("BIRTHL", -1, 50, _alfafld); //luogo nascita create_field("BIRTHD", -1, 10, _alfafld); //data nascita create_field("PROF", -1, 1, _alfafld); //professione non l'abbiamo create_field("BANKC", -1, 2, _alfafld); //stato banca non l'abbiamo (stato?) create_field("BANKK", -1, 10, _alfafld); //abi+cab create_field("BANKA", -1, 20, _alfafld); //contocorrente create_field("RECON", -1, 10, _alfafld); //tabella trascodifica necessaria create_field("PLANG", -1, 1, _alfafld); //non l'abbiamo create_field("PREVAN", -1, 1, _alfafld); //non l'abbiamo create_field("SORTK", -1, 1, _alfafld); //non l'abbiamo create_field("PAYTR", -1, 4, _alfafld); //tabella trascodifica create_field("PAYMT", -1, 1, _alfafld); //tabella trascodifica create_field("WTAXC2", -1, 1, _alfafld); //non l'abbiamo create_field("WTAXT2", -1, 1, _alfafld); //non l'abbiamo create_field("WTAXS2", -1, 1, _alfafld); //non l'abbiamo create_field("CHKDB", -1, 1, _alfafld); //non l'abbiamo } //Partite class TEsporta_SAP_partite_recordset : public TAS400_recordset { public: TEsporta_SAP_partite_recordset(); }; TEsporta_SAP_partite_recordset::TEsporta_SAP_partite_recordset() : TAS400_recordset("AS400(512)") { //record di tipo BBKPF+BBSEG(1)+BBSEG(2) create_field("BLDAT", -1, 8, _alfafld); //datadoc (gg/mm/aa) create_field("BLART", -1, 2, _alfafld); //tipi doc da tabella trascodifica create_field("BUKRS", -1, 4, _alfafld, true, "0706"); //0706 create_field("BUDAT", -1, 8, _alfafld); //31/03/07 create_field("WAERS", -1, 5, _alfafld, true, "EUR"); //EUR create_field("XBLNR", -1, 16, _alfafld); //numdoc create_field("BKTXT", -1, 25, _alfafld); //descr create_field("NEWBS", -1, 2, _alfafld); //chiavi contabili da tabella trascodifica create_field("NEWKO", -1, 17, _alfafld); //conto di contropartita da tabella trascodifica create_field("WRBTR", -1, 16, _alfafld); //imponibile con .2 decimals create_field("ZUONR", -1, 18, _alfafld); //datareg del documento create_field("ZTERM", -1, 4, _alfafld, true, "C000"); //?? create_field("ZFBDT", -1, 8, _alfafld); //data di scadenza??? create_field("ZLSCH", -1, 1, _alfafld, true, "E"); // '/' create_field("SGTXT", -1, 50, _alfafld); //descrizione testata documento create_field("ZNEWBS", -1, 2, _alfafld); create_field("ZNEWKO", -1, 17, _alfafld); create_field("ZWRBTR", -1, 16, _alfafld); create_field("ZZUONR", -1, 18, _alfafld); //create_field("ZZTERM", -1, 4, _alfafld); non la si vuole al secondo giro? create_field("ZZFBDT", -1, 8, _alfafld); create_field("ZZLSCH", -1, 1, _alfafld); create_field("ZSGTXT", -1, 50, _alfafld); } /////////////////////////////////////////////////////////// // TEsporta_SAP applicazione /////////////////////////////////////////////////////////// class TEsporta_SAP_app : public TSkeleton_application { TAssoc_array _codpag_c, _codpag_f; 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; const TRectype& find_comune(const TRecordset& clifo) const; const TString& find_dencom_nasc(TString& codcom) const; bool check_clifo(const char tipo, const long codcf) const; const TString& format_data(const TDate& data) const; const TString& trova_il_codsap(const char tipo, const char sezione) const; public: void esporta_clienti(const TString& path) const; void esporta_fornitori(const TString& path) const; void esporta_partite(const TMask& msk, const char tipo) 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; } //Clienti const TRectype& TEsporta_SAP_app::find_comune(const TRecordset& clifo) const { TToken_string ws; if (clifo.get(CLI_COMCF).is_empty()) { ws = " "; ws.add(cap2comune(clifo.get(CLI_CAPCF).as_string(), clifo.get(CLI_LOCCF).as_string())); } else { ws = clifo.get(CLI_STATOCF).as_string(); ws.add(clifo.get(CLI_COMCF).as_string() ,1); } const TRectype& com_rec = cache().get(LF_COMUNI, ws); return com_rec; } bool TEsporta_SAP_app::check_clifo(const char tipo, const long codcf) const { const TDate datareg(1,1,2005); //primo criterio di ricerca: movimento p.n. con clifo TLocalisamfile mov(LF_MOV); mov.setkey(3); mov.put(MOV_TIPO, tipo); mov.put(MOV_CODCF, codcf); mov.put(MOV_DATAREG, datareg); int err = mov.read(_isgteq); if(err == NOERR && mov.get_long(MOV_CODCF) == codcf) return true; //secondo criterio di ricerca: una riga di movimento con clifo TToken_string chiave; chiave.add(tipo); chiave.add(codcf); const TRectype& rec_clifo = cache().get(LF_CLIFO, chiave); const int gruppo = rec_clifo.get_int(CLI_GRUPPO); const int conto = rec_clifo.get_int(CLI_CONTO); TLocalisamfile rmov(LF_RMOV); rmov.setkey(2); rmov.put(RMV_GRUPPO, gruppo); rmov.put(RMV_CONTO, conto); rmov.put(RMV_SOTTOCONTO, codcf); rmov.put(RMV_DATAREG, datareg); err = rmov.read(_isgteq); if(err == NOERR && rmov.get_long(RMV_SOTTOCONTO) == codcf) return true; return false; } 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 ws; for (bool ok = clienti_campo.move_first(); ok; ok = clienti_campo.move_next()) { if (!pi.addstatus(1)) break; const long codcf = clienti_campo.get(CLI_CODCF).as_int(); if (!check_clifo('C', codcf)) continue; //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")); clienti_sap.set("NAME1", clienti_campo.get(CLI_RAGSOC)); //name1 e name2 ws = clienti_campo.get(CLI_INDCF).as_string(); //stras ws << " " << clienti_campo.get(CLI_CIVCF).as_string(); clienti_sap.set("STRAS", TVariant(ws)); //pocci su comune localita' provincia const TRectype& com_rec = find_comune(clienti_campo); const TString& dencom = com_rec.get(COM_DENCOM); ws = clienti_campo.get(CLI_LOCCF).as_string(); //ort01 if (dencom.full()) { if (ws.blank()) ws = dencom; else { ws.upper(); if (xvt_str_fuzzy_compare(ws, dencom) < 0.75) ws << ", " << dencom; } } clienti_sap.set("ORT01", TVariant(ws)); clienti_sap.set("PSTLZ", clienti_campo.get(CLI_CAPCF)); //pstlz clienti_sap.set("LAND1", clienti_campo.get(CLI_STATOCF)); //land1 clienti_sap.set("REGIO", TVariant(com_rec.get(COM_PROVCOM))); //regio clienti_sap.set("SPRAS", clienti_campo.get(CLI_CODLIN)); //spras ws = clienti_campo.get(CLI_PTELEX).as_string(); //telx1 ws << clienti_campo.get(CLI_TELEX).as_string(); clienti_sap.set("TELX1", TVariant(ws)); ws = clienti_campo.get(CLI_PTEL).as_string(); //telf1 ws << clienti_campo.get(CLI_TEL).as_string(); clienti_sap.set("TELF1", TVariant(ws)); ws = clienti_campo.get(CLI_PFAX).as_string(); //telfx ws << clienti_campo.get(CLI_FAX).as_string(); clienti_sap.set("TELFX", TVariant(ws)); ws = clienti_campo.get(CLI_PTEL2).as_string(); //telf2 ws << clienti_campo.get(CLI_TEL2).as_string(); clienti_sap.set("TELF2", TVariant(ws)); ws = clienti_campo.get(CLI_COFI).as_string(); clienti_sap.set("STCD1", TVariant(ws)); //stcd1 if (is_cofi(ws)) //stkzn clienti_sap.set("STKZN", TVariant("X")); ws = clienti_campo.get(CLI_STATOPAIV).as_string(); //stceg ws << clienti_campo.get(CLI_PAIV).as_string(); clienti_sap.set("STCEG", TVariant(ws)); ws = clienti_campo.get(CLI_CODPAG).as_string(); //zterm TString* codpag = (TString*)_codpag_c.objptr(ws); if (codpag == NULL) //deve gestire la condpag assente ws = "R007"; else ws = *codpag; clienti_sap.set("ZTERM", TVariant(ws)); if (ws == "R000") //zwels clienti_sap.set("ZWELS", TVariant("2")); else clienti_sap.set("ZWELS", TVariant("D")); clienti_sap.set("EIKTO", clienti_campo.get(CLI_CODCF)); //eikto } //for(move_first().. //scrivitore in formato xls clienti_sap.save_as(path, fmt_silk); #ifdef DBG xvt_sys_goto_url(path, "open"); #endif } //Fornitori const TString& TEsporta_SAP_app::find_dencom_nasc(TString& codcom) const { TToken_string key; key.add(" "); key.add(codcom); return cache().get(LF_COMUNI, key, COM_DENCOM); } void TEsporta_SAP_app::esporta_fornitori(const TString& path) const { TString query; query << "USE CLIFO"; query << "\nFROM TIPOCF='F'"; query << "\nTO TIPOCF='F'"; TISAM_recordset fornitori_campo(query); TEsporta_SAP_fornitori_recordset fornitori_sap; const int cazzoni = fornitori_campo.items(); TProgind pi(cazzoni, "Trasferimento fornitori...", true, true); TString ws; for (bool ok = fornitori_campo.move_first(); ok; ok = fornitori_campo.move_next()) { if (!pi.addstatus(1)) break; const long codcf = fornitori_campo.get(CLI_CODCF).as_int(); if (!check_clifo('F', codcf)) continue; //creazione di un nuovo record di tipo fornitori.. fornitori_sap.new_rec(); //..e successivo riempimento fornitori_sap.set("ACCVE", codcf); //codcf const long conto = fornitori_campo.get(CLI_CONTO).as_int(); //account e recon switch (conto) { case 1: fornitori_sap.set("ACCOUNT", TVariant("Z009")); fornitori_sap.set("RECON", TVariant("40001000")); break; case 2: fornitori_sap.set("ACCOUNT", TVariant("Z003")); if (fornitori_campo.get(CLI_OCCAS).as_bool()) fornitori_sap.set("RECON", TVariant("43009006")); else fornitori_sap.set("RECON", TVariant("43009051")); break; case 3: fornitori_sap.set("ACCOUNT", TVariant("Z007")); fornitori_sap.set("RECON", TVariant("40001001")); break; case 13: fornitori_sap.set("ACCOUNT", TVariant("Z001")); fornitori_sap.set("RECON", TVariant("40001000")); break; default: fornitori_sap.set("ACCOUNT", TVariant("")); fornitori_sap.set("RECON", TVariant("")); break; } fornitori_sap.set("NAME1", fornitori_campo.get(CLI_RAGSOC)); //name1 e name2 fornitori_sap.set("STREET", fornitori_campo.get(CLI_INDCF)); //street fornitori_sap.set("HOUSEN", fornitori_campo.get(CLI_CIVCF)); //housen //pocci su comune localita' provincia const TRectype& com_rec = find_comune(fornitori_campo); fornitori_sap.set("DISTR", fornitori_campo.get(CLI_LOCCF)); //distr fornitori_sap.set("ZIP", fornitori_campo.get(CLI_CAPCF)); //zip fornitori_sap.set("CITY", TVariant(com_rec.get(COM_DENCOM))); //city fornitori_sap.set("COUNTRY", fornitori_campo.get(CLI_STATOCF)); //country fornitori_sap.set("REGION", TVariant(com_rec.get(COM_PROVCOM))); //region fornitori_sap.set("LANG", fornitori_campo.get(CLI_CODLIN)); //lang ws = fornitori_campo.get(CLI_PTEL).as_string(); //tel ws << fornitori_campo.get(CLI_TEL).as_string(); fornitori_sap.set("TEL", TVariant(ws)); ws = fornitori_campo.get(CLI_PTEL2).as_string(); //tel2 ws << fornitori_campo.get(CLI_TEL2).as_string(); fornitori_sap.set("TEL2", TVariant(ws)); ws = fornitori_campo.get(CLI_PFAX).as_string(); //fax ws << fornitori_campo.get(CLI_FAX).as_string(); fornitori_sap.set("FAX", TVariant(ws)); ws = fornitori_campo.get(CLI_COFI).as_string(); //taxc1 fornitori_sap.set("TAXC1", TVariant(ws)); //pocci per le persone fisiche (luogo e data nascita, sesso ed amenita' simili) if (is_cofi(ws)) { fornitori_sap.set("TIPOP", TVariant("X")); //tipop ws = fornitori_campo.get(CLI_CODANAGPER).as_string(); const TRectype& anafis_rec = cache().get(LF_ANAGFIS, ws); if (anafis_rec.get(ANF_SESSO) == "M") //sex fornitori_sap.set("SEX", TVariant("1")); else fornitori_sap.set("SEX", TVariant("2")); ws = fornitori_campo.get(CLI_COMNASC).as_string(); //birthl //se il luogo di nascita e' nel file clifo... if (ws.full()) ws = find_dencom_nasc(ws); //..senno' puo' essere in anagrafica persone fisiche else { ws = anafis_rec.get(ANF_COMNASC); if (ws.full()) ws = find_dencom_nasc(ws); } fornitori_sap.set("BIRTHL", TVariant(ws)); TDate datanasc = fornitori_campo.get(CLI_DATANASC).as_date(); //birthd //se la data di nascita non e' nel clifo puo' essere in anagrafica persone fisiche if (datanasc.empty()) datanasc = anafis_rec.get_date(ANF_DATANASC); fornitori_sap.set("BIRTHD", TVariant(datanasc)); } //if(is_cofi(... ws = fornitori_campo.get(CLI_STATOPAIV).as_string(); //vatrn ws << fornitori_campo.get(CLI_PAIV).as_string(); fornitori_sap.set("VATRN", TVariant(ws)); /* ws = fornitori_campo.get(CLI_CODABI).as_string(); //bankk ws << fornitori_campo.get(CLI_CODCAB).as_string(); fornitori_sap.set("BANKK", TVariant(ws)); fornitori_sap.set("BANKA", fornitori_campo.get(CLI_NUMCC));*/ //banka ws = fornitori_campo.get(CLI_CODPAG).as_string(); //paytr e paymt TToken_string* codpag = (TToken_string*)_codpag_f.objptr(ws); if(codpag != NULL) { fornitori_sap.set("PAYTR", TVariant(codpag->get(0))); fornitori_sap.set("PAYMT", TVariant(codpag->get(1))); } else //il codice non esiste in tabella! { fornitori_sap.set("PAYTR", TVariant("")); fornitori_sap.set("PAYMT", TVariant("")); } } //for(move_first().. //scrivitore in formato xls fornitori_sap.save_as(path, fmt_silk); #ifdef DBG xvt_sys_goto_url(path, "open"); #endif } const TString& TEsporta_SAP_app::format_data(const TDate& data) const { TString& ws = get_tmp_string(); //nuovo modo ws.format("%02d%02d%04d", data.day(), data.month(), data.year()); return ws; } const TString& TEsporta_SAP_app::trova_il_codsap(const char tipo, const char sezione) const { TString& ws = get_tmp_string(); if (tipo == 'C') { if (sezione == 'A') ws = "04"; else ws = "50"; } else { if (sezione == 'A') ws = "34"; else ws = "40"; } return ws; } //Partite void TEsporta_SAP_app::esporta_partite(const TMask& msk, const char tipo) const { TString query; query << "USE PART"; query << "\nSELECT CHIUSA!=\"X\""; if (tipo == 'C') { query << "\nFROM TIPOC=C"; query << "\nTO TIPOC=C"; } else { query << "\nFROM TIPOC=F"; query << "\nTO TIPOC=F"; } TISAM_recordset partite_campo(query); TEsporta_SAP_partite_recordset partite_sap; const int cazzoni = partite_campo.items(); TProgind pi(cazzoni, "Trasferimento partite...", true, true); TString ws; TDate data; TVariant datadoc, numdoc, descr, datareg; for (bool ok = partite_campo.move_first(); ok; ok = partite_campo.move_next()) { if (!pi.addstatus(1)) break; long nriga = partite_campo.get(PART_NRIGA).as_int(); if (nriga < 9999) { if (partite_campo.get(PART_TIPOMOV).as_int() == 1) { datadoc = partite_campo.get(PART_DATADOC); numdoc = partite_campo.get(PART_NUMDOC); descr = partite_campo.get(PART_DESCR); datareg = partite_campo.get(PART_DATAREG); } } else //e' la riga saldo { //creazione di un nuovo record di tipo partite.. //record tipo BBKPF+BBSEG(1)+BBSEG(2) partite_sap.new_rec(""); data = datadoc.as_date(); ws = format_data(data); partite_sap.set("BLDAT", TVariant(ws)); partite_sap.set("BLART", TVariant(tipo == 'C' ? "CA" : "V1")); data = msk.get_date(F_TODAY); ws = format_data(data); partite_sap.set("BUDAT", TVariant(ws)); partite_sap.set("XBLNR", numdoc); partite_sap.set("BKTXT", TVariant(tipo == 'C' ? "CONV. P.A. CLIENTI" : "CONV. P.A. FORNITORI")); const char sezione = partite_campo.get(PART_SEZ).as_string()[0]; //ws = trova_il_codsap(tipo, sezione); partite_sap.set("NEWBS", TVariant(tipo == 'C' ? "04" : "34")); //ws = trova_il_codsap(tipo, sezione == 'A' ? 'D' : 'A'); partite_sap.set("ZNEWBS", TVariant(tipo == 'C' ? "50" : "40")); partite_sap.set("NEWKO", partite_campo.get(PART_SOTTOCONTO)); partite_sap.set("ZNEWKO", TVariant(tipo == 'C' ? "48999998" : "48999999")); ws = partite_campo.get(PART_IMPORTO).as_string(); ws.replace('.', ','); partite_sap.set("WRBTR", TVariant(ws)); partite_sap.set("ZWRBTR", TVariant(ws)); data = datareg.as_date(); ws = format_data(data); partite_sap.set("ZFBDT", TVariant(ws)); partite_sap.set("SGTXT", descr); partite_sap.set("ZSGTXT", descr); } //else di if(nriga<9999... } //for(move_first().. //scrivitore in formato xls TString path; if (tipo == 'C') path = msk.get(F_PARTFILEC); else path = msk.get(F_PARTFILEF); partite_sap.save_as(path, fmt_silk); #ifdef DBG xvt_sys_goto_url(path, "open"); /* //se volessimo il report... TAS400_report rep(partite_sap); TReport_book book; book.add(rep); book.preview();*/ #endif } void TEsporta_SAP_app::main_loop() { open_files(LF_CLIFO, LF_MOV, LF_RMOV, LF_PARTITE, LF_COMUNI, 0); //crea tabella trascodifica clienti //condizione di pagamento _codpag_c.add("BB", new TString("R000")); _codpag_c.add("B09", new TString("R002")); _codpag_c.add("B01", new TString("R003")); _codpag_c.add("BB09", new TString("R004")); _codpag_c.add("B05", new TString("R004")); _codpag_c.add("B07", new TString("R005")); _codpag_c.add("B03", new TString("R007")); _codpag_c.add("B04", new TString("R007")); _codpag_c.add("B11", new TString("R007")); _codpag_c.add("BB30", new TString("R007")); _codpag_c.add("B08", new TString("R009")); _codpag_c.add("BB60", new TString("R009")); _codpag_c.add("B10", new TString("R010")); _codpag_c.add("BB90", new TString("R010")); //crea tabella trascodifica fornitori _codpag_f.add("BB", new TToken_string("P000|E")); _codpag_f.add("RB", new TToken_string("P000|I")); _codpag_f.add("RD", new TToken_string("P000|G")); _codpag_f.add("RD0", new TToken_string("P000|G")); _codpag_f.add("RD1", new TToken_string("P000|G")); _codpag_f.add("RID", new TToken_string("P000|G")); _codpag_f.add("", new TToken_string("P000|O")); //pagamento in contanti _codpag_f.add("B09", new TToken_string("P002|E")); _codpag_f.add("RB4", new TToken_string("P002|I")); _codpag_f.add("RD03", new TToken_string("P002|G")); _codpag_f.add("RD8", new TToken_string("P002|G")); _codpag_f.add("B01", new TToken_string("P003|E")); _codpag_f.add("RB5", new TToken_string("P003|I")); _codpag_f.add("RD7", new TToken_string("P003|G")); _codpag_f.add("BB09", new TToken_string("P004|E")); _codpag_f.add("RB09", new TToken_string("P004|I")); _codpag_f.add("RB7", new TToken_string("P004|I")); _codpag_f.add("RB9", new TToken_string("P004|I")); _codpag_f.add("RD10", new TToken_string("P004|G")); _codpag_f.add("RD90", new TToken_string("P004|G")); _codpag_f.add("RDD", new TToken_string("P004|G")); _codpag_f.add("B07", new TToken_string("P005|E")); _codpag_f.add("RBA", new TToken_string("P005|I")); _codpag_f.add("RDE", new TToken_string("P005|G")); _codpag_f.add("B03", new TToken_string("P007|E")); _codpag_f.add("B04", new TToken_string("P007|E")); _codpag_f.add("B11", new TToken_string("P007|E")); _codpag_f.add("BB30", new TToken_string("P007|E")); _codpag_f.add("RB3", new TToken_string("P007|I")); _codpag_f.add("RD2", new TToken_string("P007|G")); _codpag_f.add("RD30", new TToken_string("P007|G")); _codpag_f.add("B08", new TToken_string("P009|E")); _codpag_f.add("BB60", new TToken_string("P009|E")); _codpag_f.add("RB6", new TToken_string("P009|I")); _codpag_f.add("RD3", new TToken_string("P009|G")); _codpag_f.add("RD60", new TToken_string("P009|G")); _codpag_f.add("B10", new TToken_string("P047|E")); _codpag_f.add("BB90", new TToken_string("P047|E")); _codpag_f.add("RB61", new TToken_string("P047|I")); _codpag_f.add("RD4", new TToken_string("P047|G")); _codpag_f.add("RD41", new TToken_string("P048|G")); 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_PARTITEC)) { esporta_partite(m, 'C'); m.set(F_LASTDATAC, m.get(F_TODAY)); m.set(F_LASTNUMC, m.get(F_NEXTNUMC)); } if (m.get_bool(F_PARTITEF)) { esporta_partite(m, 'F'); m.set(F_LASTDATAF, m.get(F_TODAY)); m.set(F_LASTNUMF, m.get(F_NEXTNUMF)); } } } int pd0666100(int argc, char* argv[]) { TEsporta_SAP_app app; app.run(argc, argv, TR("Esportazione a SAP")); return 0; }