From 04573681dfbf20f991baa0c4f22802d5b6be163c Mon Sep 17 00:00:00 2001 From: cris Date: Wed, 6 Mar 2002 14:13:52 +0000 Subject: [PATCH] =?UTF-8?q?Patch=20level=20=20=20=20=20=20=20=20=20:=201.7?= =?UTF-8?q?=20aga=20nopatch=20Files=20correlati=20=20=20=20=20:=20si0400a.?= =?UTF-8?q?ini=20si0.exe=20Ricompilazione=20Demo=20:=20[=20]=20Commento=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20:=20sistemato=20scarico=20ad?= =?UTF-8?q?=20as400=20perch=C3=A9=20non=20raggruppi=20per=20data=20e=20art?= =?UTF-8?q?icolo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://10.65.10.50/trunk@10110 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- si/si0400.cpp | 80 +++++++++++++------------------------------------- si/si0400a.ini | 2 +- 2 files changed, 21 insertions(+), 61 deletions(-) diff --git a/si/si0400.cpp b/si/si0400.cpp index e5d99770d..bdff2790f 100755 --- a/si/si0400.cpp +++ b/si/si0400.cpp @@ -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;itracciati(); @@ -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 diff --git a/si/si0400a.ini b/si/si0400a.ini index 098943cfc..27dafbc98 100755 --- a/si/si0400a.ini +++ b/si/si0400a.ini @@ -14,7 +14,7 @@ POSITION(0) = 0 MESSAGE(1) = _DATADOC LENGTH(1) = 6 -NAME(1) = Data documento +NAME(1) = DATADOC POSITION(1) = 4