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 _elaborazioni; // array delle elaborazioni selezionate
|
||||||
TString_array _tipidoc; // Array di stringhe contenente i tipi documenti da elaborare
|
TString_array _tipidoc; // Array di stringhe contenente i tipi documenti da elaborare
|
||||||
TScarico_file* _trasfile; // file di scarico dati
|
TScarico_file* _trasfile; // file di scarico dati
|
||||||
TDate _datadocprec;
|
|
||||||
TAssoc_array _tracciati;
|
TAssoc_array _tracciati;
|
||||||
|
|
||||||
protected: // TApplication
|
protected: // TApplication
|
||||||
@ -43,11 +42,10 @@ class TScaricoAS400: public TSkeleton_application
|
|||||||
// costruisce l'array dei tipi doc e relativi stati per una elaborazione
|
// costruisce l'array dei tipi doc e relativi stati per una elaborazione
|
||||||
void build_tipidoc(const TContabilizzazione& cont);
|
void build_tipidoc(const TContabilizzazione& cont);
|
||||||
void scrivi_righe(TAssoc_array& arr_imponibile, TAssoc_array& arr_imposta);
|
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"; }
|
virtual const char * extra_modules() const { return "BA"; }
|
||||||
public:
|
public:
|
||||||
TString16& provenienza() {return _provenienza;};
|
TString16& provenienza() {return _provenienza;};
|
||||||
TDate& datadocprec() {return _datadocprec;};
|
|
||||||
TScaricoAS400() {_msk = NULL;};
|
TScaricoAS400() {_msk = NULL;};
|
||||||
virtual ~TScaricoAS400() { }
|
virtual ~TScaricoAS400() { }
|
||||||
};
|
};
|
||||||
@ -77,7 +75,10 @@ void TScarico_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, T
|
|||||||
if (code == "_PROVENIENZA")
|
if (code == "_PROVENIENZA")
|
||||||
valore = app().provenienza();
|
valore = app().provenienza();
|
||||||
else if (code == "_DATADOC")
|
else if (code == "_DATADOC")
|
||||||
valore = app().datadocprec().string(brief,'\0');
|
{
|
||||||
|
TDate tmp(str);
|
||||||
|
valore = tmp.string(brief,'\0');
|
||||||
|
}
|
||||||
else if (code == "_CURRENCY")
|
else if (code == "_CURRENCY")
|
||||||
{
|
{
|
||||||
valore = str;
|
valore = str;
|
||||||
@ -193,13 +194,14 @@ bool TScaricoAS400::doc_tipo_stato_ok(const TDocumento* doc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//emetto un record
|
//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();
|
TTracciato_record& oggetto = (TTracciato_record&)lavoro.obj();
|
||||||
const TString& tipo = oggetto.type();
|
const TString& tipo = oggetto.type();
|
||||||
TRecord_text rec(tipo);
|
TRecord_text rec(tipo);
|
||||||
//carico il record da emettere
|
//carico il record da emettere
|
||||||
_trasfile->autoload(rec, LF_RIGHEDOC);
|
_trasfile->autoload(rec, LF_RIGHEDOC);
|
||||||
|
_trasfile->add_field(rec, "DATADOC", (const char*) datadoc);
|
||||||
_trasfile->add_field(rec, "CODARTMAG", (const char*) codartmag);
|
_trasfile->add_field(rec, "CODARTMAG", (const char*) codartmag);
|
||||||
TCurrency c(valimponibile);
|
TCurrency c(valimponibile);
|
||||||
TString80 str = c.string();
|
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()
|
void TScaricoAS400::transfer()
|
||||||
{
|
{
|
||||||
_tracciati = _trasfile->tracciati();
|
_tracciati = _trasfile->tracciati();
|
||||||
@ -330,11 +313,6 @@ void TScaricoAS400::transfer()
|
|||||||
#else
|
#else
|
||||||
TProgind p(cur_items,msg,FALSE,TRUE,1);
|
TProgind p(cur_items,msg,FALSE,TRUE,1);
|
||||||
#endif
|
#endif
|
||||||
// assoc array per imposta e imponibile
|
|
||||||
TAssoc_array arr_imposta, arr_imponibile;
|
|
||||||
arr_imposta.destroy();
|
|
||||||
arr_imponibile.destroy();
|
|
||||||
_datadocprec = NULLDATE;
|
|
||||||
long j = 0;
|
long j = 0;
|
||||||
// Comportamento:
|
// Comportamento:
|
||||||
// - scorre i documenti della numerazione corrente.
|
// - 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
|
doc_tipo_stato_ok(doc)) // controlla che il tipo documento e lo stato siano coerenti con la ELD selezionata
|
||||||
{
|
{
|
||||||
TDate datadoc = doc->data();
|
TDate datadoc = doc->data();
|
||||||
TString16 tipodoc = doc->get(DOC_TIPODOC);
|
TString80 codartmag;
|
||||||
// controllo se sono arrivato al punto di rottura (data diversa da precedente)
|
real valimponibile, valimposta;
|
||||||
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;
|
|
||||||
const int items = doc->physical_rows();
|
const int items = doc->physical_rows();
|
||||||
int numrig = 1;
|
int numrig = 1;
|
||||||
for (int i=1; i<=items; i++)
|
for (int i=1; i<=items; i++)
|
||||||
@ -374,18 +339,16 @@ void TScaricoAS400::transfer()
|
|||||||
const TRiga_documento& rr = (*doc)[i];
|
const TRiga_documento& rr = (*doc)[i];
|
||||||
if (rr.is_articolo())
|
if (rr.is_articolo())
|
||||||
{
|
{
|
||||||
str = rr.get(RDOC_CODARTMAG);
|
codartmag = rr.get(RDOC_CODARTMAG);
|
||||||
key = "";
|
valimponibile = rr.imponibile();
|
||||||
//key << tipodoc;
|
valimposta = rr.imposta();
|
||||||
key << str;
|
THash_object* lavoro = _tracciati.get_hashobj();
|
||||||
if (!arr_imponibile.is_key(key))
|
//scandisco tutti i record di un effetto
|
||||||
arr_imponibile.add(key, new real);
|
for (int i = 0; lavoro != NULL; i++)
|
||||||
real& rl1 = (real&) arr_imponibile[key];
|
{
|
||||||
rl1 += rr.imponibile();
|
record(*lavoro, datadoc, codartmag, valimponibile, valimposta); //emetto il record
|
||||||
if (!arr_imposta.is_key(key))
|
lavoro = _tracciati.get_hashobj();
|
||||||
arr_imposta.add(key, new real);
|
}
|
||||||
real& rl2 = (real&) arr_imposta[key];
|
|
||||||
rl2 += rr.imposta();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cont.change_doc_status(*doc);
|
cont.change_doc_status(*doc);
|
||||||
@ -394,9 +357,6 @@ void TScaricoAS400::transfer()
|
|||||||
else
|
else
|
||||||
delete doc;
|
delete doc;
|
||||||
}
|
}
|
||||||
if (_datadocprec.ok())
|
|
||||||
// devo scrivere i record su file di testo
|
|
||||||
scrivi_righe(arr_imponibile, arr_imposta);
|
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
if (p.iscancelled()) break;
|
if (p.iscancelled()) break;
|
||||||
#endif
|
#endif
|
||||||
|
@ -14,7 +14,7 @@ POSITION(0) = 0
|
|||||||
|
|
||||||
MESSAGE(1) = _DATADOC
|
MESSAGE(1) = _DATADOC
|
||||||
LENGTH(1) = 6
|
LENGTH(1) = 6
|
||||||
NAME(1) = Data documento
|
NAME(1) = DATADOC
|
||||||
POSITION(1) = 4
|
POSITION(1) = 4
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user