From f5d05ffce90e869ae1a7e967bfaa5e7543615af3 Mon Sep 17 00:00:00 2001
From: luca <luca@c028cbd2-c16b-5b4b-a496-9718f37d4682>
Date: Thu, 15 Mar 2007 14:33:33 +0000
Subject: [PATCH] Patch level         :4.0 nopatch Files correlati     :
 Ricompilazione Demo : [ ] Commento            :importazione movimenti di
 budget: adesso sistema la sezione D/A del movimento in base all'indicatore di
 bilancio del conto

git-svn-id: svn://10.65.10.50/trunk@15063 c028cbd2-c16b-5b4b-a496-9718f37d4682
---
 crpa/crpa1.cpp | 55 +++++++++++++++++++++++++++++++++++---------------
 1 file changed, 39 insertions(+), 16 deletions(-)

diff --git a/crpa/crpa1.cpp b/crpa/crpa1.cpp
index 0a297225a..6d7be0e51 100755
--- a/crpa/crpa1.cpp
+++ b/crpa/crpa1.cpp
@@ -3,9 +3,9 @@
 #include <config.h>
 #include <execp.h>
 #include <filetext.h>
-//#include <log.h>
 #include <progind.h>
 #include <reprint.h>
+#include <reputils.h>
 #include <tabutil.h>
 #include <utility.h>
 
@@ -140,7 +140,7 @@ protected:
 	void mask2ini();
 	void ini2mask();
 	bool transfer();
-	void transfer_movimento(const TRecord_text& curr); //, TError_log& log);
+	void transfer_movimento(const TRecord_text& curr, TLog_report& log);
 	const TString& ana2bill(const TString& contone) const;
 
 	long get_next_key();
@@ -190,7 +190,7 @@ const TString& TBudget_Import::ana2bill(const TString& contone) const
 	return tmp;
 }
 
-void TBudget_Import::transfer_movimento(const TRecord_text& curr) //, TError_log& log)
+void TBudget_Import::transfer_movimento(const TRecord_text& curr, TLog_report& log)
 {
   //formato definitivo del tracciato record dei CSV da importare (vedi anche il file crpa1.ini):
   //codice commessa|conto|importo|inizio cms|fine cms
@@ -241,18 +241,43 @@ void TBudget_Import::transfer_movimento(const TRecord_text& curr) //, TError_log
 	TISAM_recordset pconana(query);
 	const TRecnotype items = pconana.items();
 	if (items <= 0)
-		warning_box(FR("Il sottoconto %s NON esiste!"), (const char*)codconto);
+  {
+    TString errore;
+    errore << "Il sottoconto " << codconto << " NON esiste!";
+    log.log(2, errore);
+    return;
+  }
 
 	if (items > 1)
-		warning_box(FR("Esiste piu' di un sottoconto %s!"), (const char*)codconto);
-
+  {
+    TString errore;
+    errore << "Esiste piu' di un sottoconto " << codconto ;
+    log.log(1, errore);
+  }
 	pconana.move_last();	//si posiziona sul record corretto
 	const TString& contone = pconana.get(PCONANA_CODCONTO).as_string();
+
   const TString& contcon = ana2bill(contone);
 	if (contcon.empty())
-		warning_box(FR("Il conto analitico %s non corrisponde ad alcun conto contabile!"), (const char*)contone);
-
-	const TString& sezione = pconana.get(PCONANA_SEZSALDI).as_string();
+  {
+    TString errore;
+    errore << "Il conto analitico " << contone <<  " non corrisponde ad alcun conto contabile!";
+    log.log(2, errore);
+    return;
+  }
+  //deve stabilire se la sezione e' D o A in base all'indbil del conto analitico
+  TAnal_bill anazio(contone);
+  const int indbil = anazio.indicatore_bilancio();
+  char sezione = 'D';
+  if (indbil > 0)
+    sezione = (indbil == 1 || indbil == 3) ? 'D' : 'A';
+  else
+  {
+    TString errore;
+    errore << "Il conto analitico " << contone <<  " non ha un indicatore di bilancio!";
+    log.log(2, errore);
+    return;
+  }
 	//mette quella bastarda di sezione nel record
 	movana.put(MOVANA_SEZIONE, sezione);
 
@@ -279,7 +304,6 @@ void TBudget_Import::transfer_movimento(const TRecord_text& curr) //, TError_log
 
 bool TBudget_Import::transfer()
 {	
-
 	//azzeramento preventivo di movimenti, righe e saldi di tipo P
 	if (_msk->get(F_KILLOLD))
 	{
@@ -311,25 +335,24 @@ bool TBudget_Import::transfer()
 	//la causale!!!
 	_codcaus = _msk->get(F_COD_CAUS);
 
-	//*** prima va inserito il log in libreria preparazione del log
-//	TError_log log;
-//	log.set_header(TR("Importazione movimenti"));
-
 	const long dimension = fsize(file);
   TProgind pi(dimension,TR("Importazione movimenti in corso..."));
 
 	int err = NOERR;
   TRecord_text curr;
+  //log degli errori di trasferimento con soppressione degli errori ripetuti!
+  TLog_report log("Errori");
+  log.kill_duplicates();
 
   while (_trasfile->read(curr) == NOERR && !pi.iscancelled() && err == NOERR) 
   {
     pi.setstatus(_trasfile->read_file()->tellg());
-		transfer_movimento(curr); //, log);
+		transfer_movimento(curr, log);
 	}
   _trasfile->close();
 	delete _trasfile;
 
-//	log.show();
+	log.preview();
 	_lastfile = _msk->get(F_NAMEFILE);
 
 	return true;