Patch level : 1.7 aga nopatch
Files correlati : si0400a.ini si0.exe Ricompilazione Demo : [ ] Commento : sistemato scarico ad as400 perché non raggruppi per data e articolo git-svn-id: svn://10.65.10.50/trunk@10110 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
d55cff9819
commit
04573681df
@ -25,7 +25,6 @@ class TScaricoAS400: public TSkeleton_application
|
||||
TString_array _elaborazioni; // array delle elaborazioni selezionate
|
||||
TString_array _tipidoc; // Array di stringhe contenente i tipi documenti da elaborare
|
||||
TScarico_file* _trasfile; // file di scarico dati
|
||||
TDate _datadocprec;
|
||||
TAssoc_array _tracciati;
|
||||
|
||||
protected: // TApplication
|
||||
@ -43,11 +42,10 @@ class TScaricoAS400: public TSkeleton_application
|
||||
// costruisce l'array dei tipi doc e relativi stati per una elaborazione
|
||||
void build_tipidoc(const TContabilizzazione& cont);
|
||||
void scrivi_righe(TAssoc_array& arr_imponibile, TAssoc_array& arr_imposta);
|
||||
void record(THash_object& lavoro, TString& codartmag, real& valimponibile, real& valimposta);
|
||||
void record(THash_object& lavoro, TDate& datadoc, TString& codartmag, real& valimponibile, real& valimposta);
|
||||
virtual const char * extra_modules() const { return "BA"; }
|
||||
public:
|
||||
TString16& provenienza() {return _provenienza;};
|
||||
TDate& datadocprec() {return _datadocprec;};
|
||||
TScaricoAS400() {_msk = NULL;};
|
||||
virtual ~TScaricoAS400() { }
|
||||
};
|
||||
@ -76,8 +74,11 @@ void TScarico_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, T
|
||||
TString valore;
|
||||
if (code == "_PROVENIENZA")
|
||||
valore = app().provenienza();
|
||||
else if (code == "_DATADOC")
|
||||
valore = app().datadocprec().string(brief,'\0');
|
||||
else if (code == "_DATADOC")
|
||||
{
|
||||
TDate tmp(str);
|
||||
valore = tmp.string(brief,'\0');
|
||||
}
|
||||
else if (code == "_CURRENCY")
|
||||
{
|
||||
valore = str;
|
||||
@ -193,13 +194,14 @@ bool TScaricoAS400::doc_tipo_stato_ok(const TDocumento* doc)
|
||||
}
|
||||
|
||||
//emetto un record
|
||||
void TScaricoAS400::record(THash_object& lavoro, TString& codartmag, real& valimponibile, real& valimposta)
|
||||
void TScaricoAS400::record(THash_object& lavoro, TDate& datadoc, TString& codartmag, real& valimponibile, real& valimposta)
|
||||
{
|
||||
TTracciato_record& oggetto = (TTracciato_record&)lavoro.obj();
|
||||
const TString& tipo = oggetto.type();
|
||||
TRecord_text rec(tipo);
|
||||
//carico il record da emettere
|
||||
_trasfile->autoload(rec, LF_RIGHEDOC);
|
||||
_trasfile->add_field(rec, "DATADOC", (const char*) datadoc);
|
||||
_trasfile->add_field(rec, "CODARTMAG", (const char*) codartmag);
|
||||
TCurrency c(valimponibile);
|
||||
TString80 str = c.string();
|
||||
@ -263,25 +265,6 @@ void TScaricoAS400::main_loop()
|
||||
}
|
||||
}
|
||||
|
||||
void TScaricoAS400::scrivi_righe(TAssoc_array& arr_imponibile, TAssoc_array& arr_imposta)
|
||||
{
|
||||
TString_array arrimp;
|
||||
arr_imponibile.get_keys(arrimp, TRUE);
|
||||
for (int i=0;i<arrimp.items();i++)
|
||||
{
|
||||
TString80 codartmag = arrimp.row(i).get(0);
|
||||
real& valimponibile = (real&) arr_imponibile[codartmag];
|
||||
real& valimposta = (real&) arr_imposta[codartmag];
|
||||
THash_object* lavoro = _tracciati.get_hashobj();
|
||||
//scandisco tutti i record di un effetto
|
||||
for (int i = 0; lavoro != NULL; i++)
|
||||
{
|
||||
record(*lavoro, codartmag, valimponibile, valimposta); //emetto il record
|
||||
lavoro = _tracciati.get_hashobj();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TScaricoAS400::transfer()
|
||||
{
|
||||
_tracciati = _trasfile->tracciati();
|
||||
@ -330,11 +313,6 @@ void TScaricoAS400::transfer()
|
||||
#else
|
||||
TProgind p(cur_items,msg,FALSE,TRUE,1);
|
||||
#endif
|
||||
// assoc array per imposta e imponibile
|
||||
TAssoc_array arr_imposta, arr_imponibile;
|
||||
arr_imposta.destroy();
|
||||
arr_imponibile.destroy();
|
||||
_datadocprec = NULLDATE;
|
||||
long j = 0;
|
||||
// Comportamento:
|
||||
// - scorre i documenti della numerazione corrente.
|
||||
@ -352,21 +330,8 @@ void TScaricoAS400::transfer()
|
||||
doc_tipo_stato_ok(doc)) // controlla che il tipo documento e lo stato siano coerenti con la ELD selezionata
|
||||
{
|
||||
TDate datadoc = doc->data();
|
||||
TString16 tipodoc = doc->get(DOC_TIPODOC);
|
||||
// controllo se sono arrivato al punto di rottura (data diversa da precedente)
|
||||
if (datadoc != _datadocprec)
|
||||
{
|
||||
if (_datadocprec.ok())
|
||||
// devo scrivere i record su file di testo
|
||||
scrivi_righe(arr_imponibile, arr_imposta);
|
||||
// devo azzerare l'assoc array con tipodoc e codartmag
|
||||
arr_imposta.destroy();
|
||||
arr_imponibile.destroy();
|
||||
_datadocprec = datadoc;
|
||||
}
|
||||
// scorre tutte le righe del documento
|
||||
TString key;
|
||||
TString80 str;
|
||||
TString80 codartmag;
|
||||
real valimponibile, valimposta;
|
||||
const int items = doc->physical_rows();
|
||||
int numrig = 1;
|
||||
for (int i=1; i<=items; i++)
|
||||
@ -374,18 +339,16 @@ void TScaricoAS400::transfer()
|
||||
const TRiga_documento& rr = (*doc)[i];
|
||||
if (rr.is_articolo())
|
||||
{
|
||||
str = rr.get(RDOC_CODARTMAG);
|
||||
key = "";
|
||||
//key << tipodoc;
|
||||
key << str;
|
||||
if (!arr_imponibile.is_key(key))
|
||||
arr_imponibile.add(key, new real);
|
||||
real& rl1 = (real&) arr_imponibile[key];
|
||||
rl1 += rr.imponibile();
|
||||
if (!arr_imposta.is_key(key))
|
||||
arr_imposta.add(key, new real);
|
||||
real& rl2 = (real&) arr_imposta[key];
|
||||
rl2 += rr.imposta();
|
||||
codartmag = rr.get(RDOC_CODARTMAG);
|
||||
valimponibile = rr.imponibile();
|
||||
valimposta = rr.imposta();
|
||||
THash_object* lavoro = _tracciati.get_hashobj();
|
||||
//scandisco tutti i record di un effetto
|
||||
for (int i = 0; lavoro != NULL; i++)
|
||||
{
|
||||
record(*lavoro, datadoc, codartmag, valimponibile, valimposta); //emetto il record
|
||||
lavoro = _tracciati.get_hashobj();
|
||||
}
|
||||
}
|
||||
}
|
||||
cont.change_doc_status(*doc);
|
||||
@ -394,9 +357,6 @@ void TScaricoAS400::transfer()
|
||||
else
|
||||
delete doc;
|
||||
}
|
||||
if (_datadocprec.ok())
|
||||
// devo scrivere i record su file di testo
|
||||
scrivi_righe(arr_imponibile, arr_imposta);
|
||||
#ifdef DBG
|
||||
if (p.iscancelled()) break;
|
||||
#endif
|
||||
|
@ -14,7 +14,7 @@ POSITION(0) = 0
|
||||
|
||||
MESSAGE(1) = _DATADOC
|
||||
LENGTH(1) = 6
|
||||
NAME(1) = Data documento
|
||||
NAME(1) = DATADOC
|
||||
POSITION(1) = 4
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user