Patch level : 12.0 952

Files correlati     : bacnv.exe
Commento            :

Aggiunta conversione sottocategorie alla conversione  CONAI documenti
Velocizzata la conversione CONAI documenti
This commit is contained in:
Alessandro Bonazzi 2020-02-24 00:02:11 +01:00
parent 4f0b74ac8e
commit e80cbcaaf4

View File

@ -146,6 +146,7 @@ class TConversione_archivi : public TApplication
long _codditta;
long _oldditta;
int _error;
long _exitcode;
protected: // TApplication
virtual bool create() ;
@ -203,9 +204,9 @@ public:
void convert_CONAI_righe();
//roba per il file della rilevazione ore
void convert_rilore();
void convert_CONAI();
long convert_CONAI();
TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {}
TConversione_archivi() : _oldditta(0), _codditta(0), _error(0), _exitcode(1) {}
};
bool TConversione_archivi::create()
@ -228,7 +229,7 @@ bool TConversione_archivi::create()
}
}
dispatch_e_menu(MENU_ITEM_ID(1));
return TRUE;
return true;
}
bool TConversione_archivi::destroy()
@ -243,7 +244,9 @@ bool TConversione_archivi::destroy()
TMessage msg("ba1100", 0, format("%d", _error));
msg.send();
}
return TRUE;
if (_exitcode != 0)
exit(_exitcode);
return true;
}
bool TConversione_archivi::menu(MENU_TAG)
@ -377,7 +380,7 @@ bool TConversione_archivi::menu(MENU_TAG)
convert_rilore();
break;
case 26:
convert_CONAI();
_exitcode = convert_CONAI();
break;
default:
break;
@ -2211,47 +2214,123 @@ void TConversione_archivi::convert_profile(const char* profile_name)
void TConversione_archivi::convert_CONAI_righe()
{
const char* const old_conai_cod[CONAI_CLASSES] = { "CONSCACC", "CONSCALL", "CONSCCAR", "CONSCPLA", "CONSCLEG", "CONSCVET" };
const char* const old_conai_peso[CONAI_CLASSES] = { "CONPUACC", "CONPUALL", "CONPUCAR", "CONPUPLA", "CONPULEG", "CONPUVET" };
/*
TArray old_conai_cod;
TArray old_conai_peso;
TArray new_conai_cod;
TArray new_conai_peso;
*/
TFast_isamfile f(LF_RIGHEDOC);
TCursor c(new TRelation(LF_DOC));
c.relation()->lfile().set_curr(new TDocumento);
TCursor c(new TRelation(LF_RIGHEDOC));
/* c.relation()->add(LF_DOC, "PROVV==PROVV|ANNO==ANNO|CODNUM==CODNUM|NDOC==NDOC");
c.relation()->add("%TIP", "CODTAB==TIPODOC", 1, LF_DOC, 200);
c.setfilter("200@->B6==\"X\""); */
c.relation()->lfile().set_curr(new TAuto_variable_rectype(LF_RIGHEDOC));
TRectype & r = c.curr();
TToken_string key;
const long items = c.items();
TProgind pi(items, TR("Conversione righe documento..."), false);
for (c = 0L; c.pos() < items; ++c)
/*old_conai_cod.add(new TRecfield(r, "RG1:CONSCACC"));
old_conai_cod.add(new TRecfield(r, "RG1:CONSCALL"));
old_conai_cod.add(new TRecfield(r, "RG1:CONSCCAR"));
old_conai_cod.add(new TRecfield(r, "RG1:CONSCPLA"));
old_conai_cod.add(new TRecfield(r, "RG1:CONSCLEG"));
old_conai_cod.add(new TRecfield(r, "RG1:CONSCVET"));
old_conai_peso.add(new TRecfield(r, "RG1:CONPUACC"));
old_conai_peso.add(new TRecfield(r, "RG1:CONPUALL"));
old_conai_peso.add(new TRecfield(r, "RG1:CONPUCAR"));
old_conai_peso.add(new TRecfield(r, "RG1:CONPUPLA"));
old_conai_peso.add(new TRecfield(r, "RG1:CONPULEG"));
old_conai_peso.add(new TRecfield(r, "RG1:CONPUVET"));
new_conai_cod.add(new TRecfield(r, "RG1:CCON(1)"));
new_conai_cod.add(new TRecfield(r, "RG1:CCON(2)"));
new_conai_cod.add(new TRecfield(r, "RG1:CCON(3)"));
new_conai_cod.add(new TRecfield(r, "RG1:CCON(4)"));
new_conai_cod.add(new TRecfield(r, "RG1:CCON(6)"));
new_conai_cod.add(new TRecfield(r, "RG1:CCON(6)"));
new_conai_peso.add(new TRecfield(r, "RG1:PCON(1)"));
new_conai_peso.add(new TRecfield(r, "RG1:PCON(2)"));
new_conai_peso.add(new TRecfield(r, "RG1:PCON(3)"));
new_conai_peso.add(new TRecfield(r, "RG1:PCON(4)"));
new_conai_peso.add(new TRecfield(r, "RG1:PCON(5)"));
new_conai_peso.add(new TRecfield(r, "RG1:PCON(6)")); */
const char * const old_conai_cod[CONAI_CLASSES] = { "CONSCACC", "CONSCALL", "CONSCCAR", "CONSCPLA", "CONSCLEG", "CONSCVET" };
const char * const old_conai_peso[CONAI_CLASSES] = { "CONPUACC", "CONPUALL", "CONPUCAR", "CONPUPLA", "CONPULEG", "CONPUVET" };
for (c = 0L; c.pos() < items; ++c)
{
//deve prendere dalla riga il valore di codagg2 e confrontarlo con una delle nuove sottocategorie conai
if (!pi.addstatus(1))
break;
TDocumento & doc = (TDocumento &)c.curr();
const int rows = doc.physical_rows();
key = r.get(RDOC_PROVV);
key.add(r.get(RDOC_ANNO));
key.add(r.get(RDOC_CODNUM));
key.add(r.get(RDOC_NDOC));
const TString4 tipodoc = cache().get(LF_DOC, key, DOC_TIPODOC);
const bool has_conai = cache().get("%TIP", tipodoc, "B6");
for (int i = 1; i <= rows; i++)
if (has_conai)
{
TRiga_documento & r = doc[i];
const TString4 tipo = r.get(RDOC_TIPORIGA);
const TTipo_riga_documento & tiporiga = TRiga_documento::tipo(tipo);
if (r.is_merce() || r.is_omaggio())
if (tiporiga.is_merce() || tiporiga.is_omaggio())
{
// int pos = 0;
int pos = 1;
bool changed = false;
for (int j = 0; j < CONAI_CLASSES; j++)
{
const TString & cat = r.get(old_conai_cod[j]);
// TString16 cat = (const char *)((TRecfield&)old_conai_cod[j]);
TString16 cat = r.get(old_conai_cod[j]);
if (cat.full())
{
const TString & new_cat = cache().get("&VECSC", cat, "S1");
if (new_cat.full() && new_cat != cat)
cat = new_cat;
/*
(TRecfield&) new_conai_cod[pos] = cat;
(TRecfield&) new_conai_peso[pos++] = (const char *)((TRecfield&) old_conai_peso[j]);
(TRecfield&) old_conai_cod[j] = "";
(TRecfield&) old_conai_peso[j] = "";
*/
r.put(conai_sottocat_name(pos), cat);
r.put(conai_peso_name(pos++), r.get_real(old_conai_peso[j]));
r.put(conai_peso_name(pos++), r.get(old_conai_peso[j]));
r.zero(old_conai_cod[j]);
r.zero(old_conai_peso[j]);
changed = true;
}
else
{
cat = r.get(conai_sottocat_name(j + 1));
if (cat.full())
{
const TString & new_cat = cache().get("&VECSC", cat, "S1");
if (new_cat.full() && new_cat != cat)
{
/// (TRecfield&)new_conai_cod[j] = new_cat;
r.put(conai_sottocat_name(j + 1), new_cat);
changed = true;
}
}
}
r.zero(old_conai_cod[j]);
r.zero(old_conai_peso[j]);
}
if (r.rewrite(f) != NOERR)
cantwrite_box(f.description());
if (changed)
{
if (r.rewrite(f) != NOERR)
cantwrite_box(f.description());
}
}
}
}
@ -2307,7 +2386,7 @@ void TConversione_archivi::convert_rilore()
}
}
void TConversione_archivi::convert_CONAI()
long TConversione_archivi::convert_CONAI()
{
TConfig ditta(CONFIG_DITTA, "ve");
TString_array conai_default_vals;
@ -2354,7 +2433,7 @@ void TConversione_archivi::convert_CONAI()
if (err)
{
log.print_or_preview();
return;
return 1;
}
}
@ -2393,6 +2472,7 @@ void TConversione_archivi::convert_CONAI()
conart.write(true);
}
log.print_or_preview();
return 0;
}
///////////////////////////////////////////////////////////