Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@20366 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			1086 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			1086 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include "pd0666.h"
 | ||
| #include "pd0666100a.h"
 | ||
| 
 | ||
| #include <applicat.h>
 | ||
| #include <automask.h>
 | ||
| #include <progind.h>
 | ||
| #include <recarray.h>
 | ||
| #include <relation.h>
 | ||
| #include <reprint.h>
 | ||
| #include <reputils.h>
 | ||
| #include <textset.h>
 | ||
| 
 | ||
| #include "../cg/cglib01.h"
 | ||
| #include "../ce/cespi.h"
 | ||
| 
 | ||
| #include <anafis.h>
 | ||
| #include <clifo.h>
 | ||
| #include <comuni.h>
 | ||
| #include <mov.h>
 | ||
| #include <partite.h>
 | ||
| #include <rmov.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();
 | ||
| 	~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);
 | ||
| 		}
 | ||
| 	case F_NEXTNUMCESPI:
 | ||
| 		if (e == fe_init)
 | ||
| 		{
 | ||
| 			const int n = get(F_LASTDATACESPI) != get(F_TODAY) ? 1 : get_int(F_LASTNUMCESPI)+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);
 | ||
| 	}
 | ||
| 	//.. 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);
 | ||
| 	}
 | ||
| 	//..e dei cespiti
 | ||
| 	if (get(F_CESPI).empty())
 | ||
| 	{
 | ||
| 		file.tempdir();
 | ||
| 		file.add("cespiti.xls");
 | ||
| 		set(F_CESPI, 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);
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| //Cespiti
 | ||
| class TEsporta_SAP_cespiti_recordset : public TAS400_recordset
 | ||
| {
 | ||
| public:
 | ||
| 	TEsporta_SAP_cespiti_recordset();
 | ||
| };
 | ||
| 
 | ||
| TEsporta_SAP_cespiti_recordset::TEsporta_SAP_cespiti_recordset()
 | ||
| : TAS400_recordset("AS400(512)")
 | ||
| {
 | ||
| 	create_field("ANLKL", -1, 8, _alfafld);
 | ||
| 	create_field("AKTIV", -1, 8, _alfafld);
 | ||
| 	create_field("TXT50", -1, 50, _alfafld);
 | ||
| 	create_field("TXAT50", -1, 50, _alfafld);	
 | ||
| 	create_field("MEINS", -1, 3, _alfafld, true, "PZ");
 | ||
| 	create_field("MENGE", -1, 17, _alfafld);
 | ||
| 	create_field("ORD41", -1, 4, _alfafld);
 | ||
| 	create_field("ORD42", -1, 4, _alfafld, true, "I009");
 | ||
| 	create_field("ORD43", -1, 4, _alfafld);
 | ||
| 	create_field("ORD44", -1, 4, _alfafld);
 | ||
| 	create_field("GDLGRP", -1, 4, _alfafld);
 | ||
| 	create_field("AIBN1", -1, 12, _alfafld);
 | ||
| 	create_field("EAUFN", -1, 12, _alfafld);
 | ||
| 	create_field("KOSTL", -1, 10, _alfafld);
 | ||
| 	create_field("AFABE01", -1, 2, _alfafld, true, "01");
 | ||
| 	create_field("KANSW01", -1, 16, _alfafld);
 | ||
| 	create_field("KNAFA01", -1, 16, _alfafld);
 | ||
| 	create_field("AFABG02", -1, 8, _alfafld);
 | ||
| 	create_field("NDJAR02", -1, 3, _alfafld);
 | ||
| 	create_field("AFABE02", -1, 2, _alfafld);
 | ||
| 	create_field("KANSW02", -1, 16, _alfafld);
 | ||
| 	create_field("KNAFA02", -1, 16, _alfafld);
 | ||
| 	create_field("AFABG03", -1, 8, _alfafld);
 | ||
| 	create_field("NDJAR03", -1, 3, _alfafld);
 | ||
| 	create_field("AFABE03", -1, 2, _alfafld);
 | ||
| 	create_field("KANSW03", -1, 16, _alfafld);
 | ||
| 	create_field("KNAFA03", -1, 16, _alfafld);
 | ||
| }
 | ||
| 
 | ||
| ///////////////////////////////////////////////////////////
 | ||
| // TEsporta_SAP applicazione
 | ||
| ///////////////////////////////////////////////////////////
 | ||
| 
 | ||
| class TEsporta_SAP_app : public TSkeleton_application
 | ||
| {
 | ||
| 	TAssoc_array _codpag_c, _codpag_f, _codcat, _cesloc;
 | ||
| 
 | ||
| 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;
 | ||
| 	void esporta_cespiti(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;
 | ||
| }
 | ||
| 
 | ||
| //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);
 | ||
| 	int gruppo = rec_clifo.get_int(CLI_GRUPPO);
 | ||
| 	int conto = rec_clifo.get_int(CLI_CONTO);
 | ||
| 
 | ||
| 	//se il fottuto cliente non ha mastro gli assegna gr.4 co.7
 | ||
| 	if (tipo == 'C' && gruppo == 0)
 | ||
| 	{
 | ||
| 		gruppo = 4;
 | ||
| 		conto = 7;
 | ||
| 	}
 | ||
| 	//se invece e' il fornitore bastardo a non avere mastro...
 | ||
| 	if (tipo == 'F' && gruppo == 0)
 | ||
| 	{
 | ||
| 		gruppo = 4;
 | ||
| 		conto = 1;
 | ||
| 	}
 | ||
| 	
 | ||
| 	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_html);
 | ||
| #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_html);
 | ||
| #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)
 | ||
| 		{
 | ||
| 			const int tipomov = partite_campo.get(PART_TIPOMOV).as_int();
 | ||
| 
 | ||
| 			if (numdoc.is_empty() || tipomov == 1)
 | ||
| 			{
 | ||
| 				numdoc  = partite_campo.get(PART_NUMDOC);
 | ||
| 			  datadoc = partite_campo.get(PART_DATADOC);
 | ||
| 				descr   = partite_campo.get(PART_DESCR);
 | ||
| 				datareg = partite_campo.get(PART_DATAREG);
 | ||
| 			}
 | ||
| 		}
 | ||
| 		else //e' la riga saldo
 | ||
| 		{
 | ||
| 			//controlla se la partita risulta gia' chiusa anche se il flag CHIUSA non e' true
 | ||
| 			const real importo = partite_campo.get(PART_IMPORTO).as_real();
 | ||
| 			// se l'importo e' nullo la partita e' chiusa!
 | ||
| 			// se il numero documento <20> nullo allora ho un saldo "volante" di nulla di buono
 | ||
| 			if (!importo.is_zero() && !numdoc.is_empty()) 
 | ||
| 			{
 | ||
| 				//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];
 | ||
| 				TImporto imp(sezione, importo);
 | ||
| 				imp.normalize();
 | ||
| 
 | ||
| 				const char sez_corretta = tipo == 'C' ? 'D' : 'A';
 | ||
| 
 | ||
| 				if (imp.sezione() != sez_corretta)
 | ||
| 				{
 | ||
| 					partite_sap.set("NEWBS", TVariant(tipo == 'C' ? "14" : "24"));
 | ||
| 					partite_sap.set("ZNEWBS", TVariant(tipo == 'C' ? "40" : "50"));
 | ||
| 				}
 | ||
| 				else
 | ||
| 				{
 | ||
| 					partite_sap.set("NEWBS", TVariant(tipo == 'C' ? "04" : "34"));
 | ||
| 					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 = imp.valore().stringa();
 | ||
| 				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);
 | ||
| 			}	//if(!importo.is_zero...
 | ||
| 
 | ||
| 			numdoc = descr = datadoc = datareg = NULL_VARIANT;
 | ||
| 		}	//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_html);
 | ||
| #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::esporta_cespiti(const TString& path) const
 | ||
| {
 | ||
| 	TString query;
 | ||
|   query << "USE CESPI\n";
 | ||
| 	query << "JOIN SALCE INTO IDCESPITE=IDCESPITE CODES=2006 TPSALDO=2\n";
 | ||
| 	query << "JOIN AMMCE INTO IDCESPITE=IDCESPITE CODES=2006 TPSALDO=2 TPAMM=1";
 | ||
| 
 | ||
| 	TISAM_recordset cespiti_campo(query);
 | ||
| 
 | ||
| 	TEsporta_SAP_cespiti_recordset cespiti_sap;
 | ||
| 
 | ||
| 	const int culoni = cespiti_campo.items();
 | ||
| 	TProgind pi(culoni, "Trasferimento cespiti...", true, true);
 | ||
| 	TString ws;
 | ||
| 	TDate data;
 | ||
| 	TVariant datavar;
 | ||
| 	for (bool ok = cespiti_campo.move_first(); ok; ok = cespiti_campo.move_next())
 | ||
| 	{
 | ||
|     if (!pi.addstatus(1))
 | ||
|       break;
 | ||
| 
 | ||
| 		cespiti_sap.new_rec("");
 | ||
| 
 | ||
| 		//riempimento campi del file di output
 | ||
| 		ws = cespiti_campo.get(CESPI_CODCAT).as_string();							//anlkl e ord41
 | ||
| 		TToken_string* codcat = (TToken_string*)_codcat.objptr(ws);
 | ||
| 		if(codcat != NULL)
 | ||
| 		{
 | ||
| 			cespiti_sap.set("ANLKL", TVariant(codcat->get(0)));
 | ||
| 			cespiti_sap.set("ORD41", TVariant(codcat->get(1)));
 | ||
| 		}
 | ||
| 		else	//il codice non esiste in tabella!
 | ||
| 		{
 | ||
| 			cespiti_sap.set("ANLKL", TVariant(""));
 | ||
| 			cespiti_sap.set("ORD41", TVariant(""));
 | ||
| 		}
 | ||
| 
 | ||
| 		data = cespiti_campo.get(CESPI_DTFUNZ).as_date();							//aktiv
 | ||
| 		ws = format_data(data);
 | ||
| 		cespiti_sap.set("AKTIV", TVariant(ws));
 | ||
| 
 | ||
| 		cespiti_sap.set("TXT50", cespiti_campo.get(CESPI_DESC));			//txt50
 | ||
| 
 | ||
| 		cespiti_sap.set("MENGE", cespiti_campo.get("SALCE.NUMELE"));	//menge
 | ||
| 
 | ||
| 		ws = cespiti_campo.get(CESPI_CODLOC).as_string();							//ord43 e //kostl
 | ||
| 		TToken_string* cesloc = (TToken_string*)_cesloc.objptr(ws);
 | ||
| 		if (cesloc != NULL)	//localita' e c.costo da tabella
 | ||
| 		{
 | ||
| 			cespiti_sap.set("ORD43", TVariant(cesloc->get(0)));
 | ||
| 			cespiti_sap.set("KOSTL", TVariant(cesloc->get(1)));
 | ||
| 		}
 | ||
| 		else	//localita' vuota -> localita' e c.costo di default
 | ||
| 		{
 | ||
| 			cespiti_sap.set("ORD43", TVariant("I761"));
 | ||
| 			cespiti_sap.set("KOSTL", TVariant("7062420804"));
 | ||
| 		}
 | ||
| 
 | ||
| 		cespiti_sap.set("AIBN1", cespiti_campo.get(CESPI_IDCESPITE));	//aibn1
 | ||
| 
 | ||
| 		const real csto = cespiti_campo.get("SALCE.CSTO").as_real();	//kansw01
 | ||
| 		ws = csto.stringa();
 | ||
| 		cespiti_sap.set("KANSW01", TVariant(ws));
 | ||
| 
 | ||
| 		real fondo;																										//knafa01
 | ||
| 		fondo += cespiti_campo.get("AMMCE.QNORP").as_real();
 | ||
| 		fondo += cespiti_campo.get("AMMCE.QNOR").as_real();
 | ||
| 		fondo += cespiti_campo.get("AMMCE_QANTP").as_real();
 | ||
| 		fondo += cespiti_campo.get("AMMCE_QANT").as_real();
 | ||
| 		fondo += cespiti_campo.get("AMMCE_QACCP").as_real();
 | ||
| 		fondo += cespiti_campo.get("AMMCE_QACC").as_real();
 | ||
| 		fondo += cespiti_campo.get("AMMCE_QPERSEP").as_real();
 | ||
| 		fondo += cespiti_campo.get("AMMCE_QPERSE").as_real();
 | ||
| 		fondo += cespiti_campo.get("AMMCE_QPPRIVATEP").as_real();
 | ||
| 		fondo += cespiti_campo.get("AMMCE_QPPRIVATE").as_real();
 | ||
| 		fondo += cespiti_campo.get("AMMCE_FPRIVATOP").as_real();
 | ||
| 		fondo += cespiti_campo.get("AMMCE_FPRIVATO").as_real();
 | ||
| 
 | ||
| 		ws = fondo.stringa();
 | ||
| 		cespiti_sap.set("KNAFA01", TVariant(ws));
 | ||
| 	}
 | ||
| 
 | ||
| 	cespiti_sap.save_as(path, fmt_html);
 | ||
| #ifdef DBG
 | ||
| 	xvt_sys_goto_url(path, "open");
 | ||
| /*
 | ||
| 	//se volessimo il report...	
 | ||
| 	TAS400_report rep(cespiti_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"));
 | ||
| 
 | ||
| 	
 | ||
| 	//crea tabella trascodifica categorie cespiti
 | ||
| 	_codcat.add("2", new TToken_string("67000|1610"));
 | ||
| 	_codcat.add("3", new TToken_string("67000|1611"));
 | ||
| 	_codcat.add("18", new TToken_string("50000|1516"));
 | ||
| 	_codcat.add("22", new TToken_string("68000|1612"));
 | ||
| 	_codcat.add("24", new TToken_string("36000|1339"));
 | ||
| 	_codcat.add("25", new TToken_string("35000|1332"));
 | ||
| 	_codcat.add("26", new TToken_string("34000|1342"));
 | ||
| 	_codcat.add("27", new TToken_string("91000|2311"));
 | ||
| 	_codcat.add("28", new TToken_string("90100|2319"));
 | ||
| 	_codcat.add("29", new TToken_string("90000|2101"));
 | ||
| 	_codcat.add("30", new TToken_string("91000|2309"));
 | ||
| 	_codcat.add("31", new TToken_string("91000|2305"));
 | ||
| 	_codcat.add("56", new TToken_string("94050|2320"));
 | ||
| 
 | ||
| 	//crea tabella localita' cespiti
 | ||
| 	_cesloc.add("0000000001", new TToken_string("I770|7062420504"));	//rm
 | ||
| 	_cesloc.add("0000000002", new TToken_string("I761|7062426140"));	//mi
 | ||
| 	_cesloc.add("0000000003", new TToken_string("I764|7062420204"));	//ct
 | ||
| 	_cesloc.add("0000000004", new TToken_string("I765|7062420254"));	//cz
 | ||
| 	_cesloc.add("0000000005", new TToken_string("I774|7062420104"));	//at
 | ||
| 	_cesloc.add("0000000006", new TToken_string("I768|7062420404"));	//na
 | ||
| 	_cesloc.add("0000000007", new TToken_string("I777|7062420704"));	//ud
 | ||
| 	_cesloc.add("0000000008", new TToken_string("I773|7062420554"));	//vallo
 | ||
| 	_cesloc.add("0000000009", new TToken_string("Palmi|Palmi"));	//palmi???
 | ||
| 	_cesloc.add("0000000010", new TToken_string("I775|7062420654"));	//tv
 | ||
| 	_cesloc.add("0000000011", new TToken_string("I769|7062420454"));	//pa
 | ||
| 	_cesloc.add("0000000012", new TToken_string("I771|7062420514"));	//pe
 | ||
| 
 | ||
|   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));
 | ||
| 		}
 | ||
| 		if (m.get_bool(F_CESPI))
 | ||
| 		{
 | ||
| 			esporta_cespiti(m.get(F_CESPIFILE));
 | ||
| 			m.set(F_LASTDATACESPI, m.get(F_TODAY));
 | ||
| 			m.set(F_LASTNUMCESPI, m.get(F_NEXTNUMCESPI));
 | ||
| 		}
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| int pd0666100(int argc, char* argv[])
 | ||
| {
 | ||
|   TEsporta_SAP_app app;
 | ||
|   app.run(argc, argv, TR("Esportazione a SAP"));
 | ||
|   return 0;
 | ||
| }
 |