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:
parent
4f0b74ac8e
commit
e80cbcaaf4
128
src/ba/bacnv.cpp
128
src/ba/bacnv.cpp
@ -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;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
Loading…
x
Reference in New Issue
Block a user