Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
prima stesura programma di conversione CONAI; da provare completamente


git-svn-id: svn://10.65.10.50/trunk@19335 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2009-09-25 13:19:21 +00:00
parent be364c121f
commit 2d0815469f

View File

@ -1,4 +1,5 @@
#include <applicat.h>
#include <extcdecl.h>
#include <mailbox.h>
#include <progind.h>
#include <relation.h>
@ -7,16 +8,18 @@
#include <tabutil.h>
#include <urldefid.h>
#include <utility.h>
#include <extcdecl.h>
#include <varrec.h>
#include <causali.h>
#include <clifo.h>
#include <mov.h>
#include <pconti.h>
#include <rdoc.h>
#include <rmov.h>
#include <saldi.h>
#include "..\cg\cglib02.h"
#include "..\ve\velib.h"
/*
///////////////////////////////////////////////////////////////////////////////////////////////////////
@ -192,7 +195,7 @@ public:
void convert_clifo_privati();
void convert_pcon_ivd();
void convert_profile(const char * profile_name);
void convert_conai_righe();
TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {}
};
@ -359,10 +362,13 @@ bool TConversione_archivi::menu(MENU_TAG)
case 23:
convert_profile(argv(2));
break;
case 24:
convert_conai_righe();
break;
default:
break;
}
return FALSE;
return false;
}
///////////////////////////////////////////////////////////
@ -2176,6 +2182,63 @@ void TConversione_archivi::convert_profile(const char* profile_name)
}
}
////////////////////////////////////////////////////////////////////
// Converte le righe documento in modo da riassegnare i campi CONAI
////////////////////////////////////////////////////////////////////
void TConversione_archivi::convert_conai_righe()
{
//deve considerare tutte le righe documento che abbiano almeno uno tra codagg1 e codagg2 compilato
TString query;
query << "USE RDOC\n";
query << "SELECT (CODAGG1?=\"??\")||(CODAGG2?=\"????\")";
TISAM_recordset righedoc(query);
const long righedoc_items = righedoc.items();
TProgind pi(righedoc_items, "Ricostruzione righe CONAI...", false);
//ci vuole un TVariable_rectype perchè il TRectype non ha campi virtuali!
TVariable_rectype rdoc(LF_RIGHEDOC);
rdoc.set_memo_fld(RDOC_RG1);
for (bool ok = righedoc.move_first(); ok; ok = righedoc.move_next())
{
//deve prendere dalla riga il valore di codagg2 e confrontarlo con una delle nuove sottocategorie conai
pi.addstatus(1);
rdoc = righedoc.cursor()->curr();
TString4 codagg2 = rdoc.get(RDOC_CODAGG2);
TString4 codagg1 = rdoc.get(RDOC_CODAGG1);
//se codagg2 non è 4 caratteri o è cazzato (<4) oppure non c'entra un cavolo (>4); quindi deve considerare..
//..codagg1; se codagg1 è lungo 2 va bene lui
if (codagg2.len() < 4 && codagg1.len() == 2)
{
codagg2 = codagg1;
codagg2 << "99";
}
//per prima cosa sistema i codici categoria
//quale è la classe conai? (plastica,carta,vetro,ecc.??)
const TCONAI_class cc = conai_str2class(codagg2);
//come si chiama il campo virtuale su rdoc in cui anrà inserito il codice categoria?
const char* csn = conai_sottocat_name(cc);
//noto il campo di destinazione ci mette il codice corretto
rdoc.put(csn, codagg2);
rdoc.zero(RDOC_CODAGG1);
rdoc.zero(RDOC_CODAGG2);
//adesso tocca ai pesi conai
real qtagg1 = rdoc.get_real(RDOC_QTAGG1);
//la classe è sempre quella di prima;il campo virtuale no
const char* cpn = conai_peso_name(cc);
//noto il campo di destinazione ci mette il peso conai
rdoc.put(cpn, qtagg1);
rdoc.zero(RDOC_QTAGG1);
//scrittura finale del record
TLocalisamfile f(LF_RIGHEDOC);
int err = rdoc.rewrite(f);
}
}
///////////////////////////////////////////////////////////
// Programma di conversione archivi speciale
///////////////////////////////////////////////////////////