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
This commit is contained in:
luca 2010-08-03 13:36:41 +00:00
parent 9237436c3b
commit dc03bcaac1
2 changed files with 72 additions and 1 deletions

View File

@ -9,6 +9,10 @@
#include <multirec.h>
#endif
#ifndef __RECSET_H
#include <recset.h>
#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;

View File

@ -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
/////////////////////////////////////////////////////////////