From dc03bcaac12edcf3e455682ff5d42ab943f5833e Mon Sep 17 00:00:00 2001 From: luca Date: Tue, 3 Aug 2010 13:36:41 +0000 Subject: [PATCH] Patch level :10.0 Files correlati : Ricompilazione Demo : [ ] Commento : aggiunti metodi jolly per ricavare le numerazioni dati i tipi documento git-svn-id: svn://10.65.10.50/branches/R_10_00@20745 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/velib.h | 12 +++++++++- ve/velib01.cpp | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/ve/velib.h b/ve/velib.h index 77536a65a..8bfe763da 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -9,6 +9,10 @@ #include #endif +#ifndef __RECSET_H +#include +#endif + #ifndef __VISWIN_H class TViswin; #endif @@ -349,7 +353,7 @@ public: const TTipo_documento& cached_tipodoc(const char* tipodoc); -class TCodice_numerazione : public TRectype +class TCodice_numerazione : public TRectype //velib01 { int _status; @@ -387,6 +391,12 @@ public: const TCodice_numerazione& cached_numerazione(const char * codnum); +//metodi jolly per ricavare le numerazioni dati i tipi documento (ca3800,ca3900,ps1001 ecc.) //velib01 +int numerazioni_documenti(TString_array& num_doc, TString_array& tip_doc, const int tipo); +int numerazioni_ordini(TString_array& num_ordini, TString_array& tip_ordini); +int numerazioni_fatture(TString_array& num_fatture, TString_array& tip_fatture); + + class TTipo_riga_documento : public TRectype // velib02 { static TAssoc_array _formule_riga; diff --git a/ve/velib01.cpp b/ve/velib01.cpp index f16816c03..151132561 100755 --- a/ve/velib01.cpp +++ b/ve/velib01.cpp @@ -61,6 +61,67 @@ int TCodice_numerazione::read(const char* codnum) return err; } +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// trova le numerazioni documenti in base ai tipi richiesti (ca3800,ca3900,ps1001) +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +int numerazioni_documenti(TString_array& num_doc, TString_array& tip_doc, const int tipo) +{ + //cominciamo con i tipi + TISAM_recordset tipi_recset("USE %TIP\nSELECT STR(I1=#TIPO)"); + tipi_recset.set_var("#TIPO", TVariant(long(tipo))); + for (bool ok = tipi_recset.move_first(); ok; ok = tipi_recset.move_next()) //giro sui vari tipi ordine + { + const TString4 tipo = tipi_recset.get("CODTAB").as_string(); + tip_doc.add(tipo); + } + + //e adesso cerca le numerazioni che contengono tipi ordine + TISAM_recordset num_recset("USE %NUM"); + for (bool ok = num_recset.move_first(); ok; ok = num_recset.move_next()) //giro sui vari tipi numerazione + { + const TString4 codtab = num_recset.get("CODTAB").as_string(); + + const TCodice_numerazione numerazione(codtab); + for (int t = numerazione.ntipi_doc() - 1; t >= 0; t--) + { + const TString& tipo_doc = numerazione.tipo_doc(t); + if (tip_doc.find(tipo_doc) >= 0) + { + if (num_doc.find(codtab) < 0) // Evito aggiunta di doppioni + num_doc.add(codtab); + break; + } + } //for (int t = codnum.. + } //for (bool ok = num_recset... + + return num_doc.items(); +} + + +int numerazioni_ordini(TString_array& num_ordini, TString_array& tip_ordini) +{ + //i documenti che vanno presi in cosiderazione sono quelli che generano un IMPEGNATO secondo le auree regole del.. + //..nostro invincibile Adolf! + num_ordini.destroy(); + tip_ordini.destroy(); + + numerazioni_documenti(num_ordini, tip_ordini, 3); + + return num_ordini.items(); +} + +int numerazioni_fatture(TString_array& num_fatture, TString_array& tip_fatture) +{ + //i documenti che vanno presi in cosiderazione sono quelli non ancora contabilizzati di tipo 0=Altro 2=Fattura + num_fatture.destroy(); + tip_fatture.destroy(); + + numerazioni_documenti(num_fatture, tip_fatture, 0); + numerazioni_documenti(num_fatture, tip_fatture, 2); + + return num_fatture.items(); +} + ///////////////////////////////////////////////////////////// // TSpesa_prest /////////////////////////////////////////////////////////////