Files correlati : lv4.exe Ricompilazione Demo : [ ] Commento : NUovo programma per esportazione bolle in txt (CHIMA) git-svn-id: svn://10.65.10.50/branches/R_10_00@21335 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			120 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <applicat.h>
 | 
						|
 | 
						|
#include "../ve/velib.h"
 | 
						|
#include <utility.h>
 | 
						|
 | 
						|
                                                    //////////////////////////////////////////
 | 
						|
                                                    ////    TSpedisci Bolla    ////
 | 
						|
                                                    //////////////////////////////////////////
 | 
						|
 | 
						|
//Classe TAggiungi_listini_app
 | 
						|
class TSpedisci_bolla : public TSkeleton_application
 | 
						|
{
 | 
						|
private:
 | 
						|
  TFilename _ini_name;
 | 
						|
    
 | 
						|
protected:
 | 
						|
  virtual bool check_autorization() const {return false;}
 | 
						|
 | 
						|
  virtual void main_loop();
 | 
						|
  void output_doc(const char * outdir);
 | 
						|
 | 
						|
public:
 | 
						|
  bool load_ini();  
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
//LOAD_INI: carica il file ini che contiene il documento
 | 
						|
bool TSpedisci_bolla::load_ini()
 | 
						|
{   
 | 
						|
  if (argc() <= 3)
 | 
						|
    return false;                                     
 | 
						|
 | 
						|
	const TFixed_string arg = argv(3);
 | 
						|
  if ((arg[0] != '-' && arg[0] != '/') || (arg[1] != 'i' && arg[1] != 'I'))
 | 
						|
    return false;
 | 
						|
    
 | 
						|
  _ini_name = arg.mid(2);
 | 
						|
 | 
						|
	//controlla che il file su cui deve scrivere ci sia; se non c'é dá una segnalazione di errore
 | 
						|
  if (!_ini_name.exist())
 | 
						|
    return false;
 | 
						|
  
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
//CHECK_DOC: scorro il file ini e aggiungo alla tabella dei listini le righe mancanti
 | 
						|
void TSpedisci_bolla::output_doc(const char * outdir)
 | 
						|
{              
 | 
						|
  TConfig ini(_ini_name, "33");
 | 
						|
  TString4 para;  para.format("%d", LF_DOC);
 | 
						|
	const char provv = ini.get(DOC_PROVV, para)[0];
 | 
						|
	const int anno = ini.get_int(DOC_ANNO, para);
 | 
						|
	const TString4 codnum = ini.get(DOC_CODNUM, para);
 | 
						|
	const long ndoc = ini.get_long(DOC_NDOC, para);
 | 
						|
	const long codcf = ini.get_long(DOC_CODCF, para);
 | 
						|
	const TDate datadoc(ini.get(DOC_DATADOC, para));
 | 
						|
	const int codaut = ini.get_int(DOC_CODAG, para);
 | 
						|
	const int codage2 = ini.get_int(DOC_CODAGVIS, para);
 | 
						|
	const int codindsp = ini.get_int(DOC_CODINDSP, para);
 | 
						|
	TDocumento doc(provv, anno, codnum,ndoc);
 | 
						|
 | 
						|
	const int rows = doc.physical_rows();
 | 
						|
	TString outrow(30);
 | 
						|
	TFilename outname(outdir);
 | 
						|
 | 
						|
	outname.add(format("bo%06ld%06ld", codcf, ndoc));
 | 
						|
	outname.ext("dat");
 | 
						|
 | 
						|
	ofstream outfile(outname);
 | 
						|
 | 
						|
  for(int r = 1; r <= rows; r++)
 | 
						|
  {
 | 
						|
		const TRiga_documento row = doc[r];
 | 
						|
		real qta = row.get_real(RDOC_QTA); qta.floor();
 | 
						|
		TString16 sqta = qta.string(6, 0, '0');
 | 
						|
		const TString codart = row.get(RDOC_CODART);
 | 
						|
		const TString caus = row.get(RDOC_CODAGG1);
 | 
						|
		real qtarit = row.get_real(RDOC_QTA); qtarit.floor();
 | 
						|
		TString16 sqtarit = qtarit.string(6, 0, '0');
 | 
						|
		
 | 
						|
		outrow.cut(0);
 | 
						|
    outrow.format("%06ld%2s%06ld%08ld%-20s%6s%04d%3s%06s%04d%04d", codcf, (const char *) codnum.mid(1), ndoc, datadoc.date2ansi(), (const char *) codart, (const char *)sqta, codaut, (const char *)caus, (const char *) sqtarit, codage2, codindsp);
 | 
						|
		outfile << outrow << '\n';
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void TSpedisci_bolla::main_loop() //definizione della member function main_loop, della classe TSpedisci_bolla
 | 
						|
{
 | 
						|
 	TFilename outdir(argv(2)); outdir.lower(); 
 | 
						|
 | 
						|
	if (outdir.starts_with("-d"))
 | 
						|
	{
 | 
						|
		outdir = outdir.mid(2);
 | 
						|
 | 
						|
		if (outdir.exist())
 | 
						|
		{
 | 
						|
			open_files(LF_TAB, LF_DOC, LF_RIGHEDOC, 0);
 | 
						|
 | 
						|
			//mostra un messaggio di errore se non riesce ad aprire  il file richiesto; nota la conversione dei tipi che
 | 
						|
			//é da eseguire quando devo passare una TString ad un %s
 | 
						|
			if(load_ini())
 | 
						|
				output_doc(outdir);
 | 
						|
			else
 | 
						|
			{
 | 
						|
				error_box(TR("Impossibile aprire il file '%s'"), (const char*)_ini_name);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
//////  Esecuzione del programma  ///////////
 | 
						|
 | 
						|
int lv4800(int argc, char* argv[])
 | 
						|
{
 | 
						|
  TSpedisci_bolla app;
 | 
						|
  app.run(argc,argv,"Esporta Bolle");
 | 
						|
  return 0;
 | 
						|
}
 |