campo-sirio/ef/ef0301.cpp
paola 98aaa44159 aggiunti file per la gestione delle distinte(ef03*.*)
git-svn-id: svn://10.65.10.50/trunk@3899 c028cbd2-c16b-5b4b-a496-9718f37d4682
1996-11-14 17:40:05 +00:00

87 lines
2.2 KiB
C++
Executable File

#include "effetti.h"
#include "reffetti.h"
#include "cession.h"
#include "ef0301.h"
TDistinta::TDistinta(const TRectype& rec)
{
read(rec);
}
TDistinta::TDistinta(const char tipo, const long numero)
{
read(tipo,numero);
}
int TDistinta::read(const char tipo, const long numero)
{
int err = NOERR;
CHECK(tipo!='\0' && numero>0,"Can't read distinta from NULL elements");
for (int i=0; err == NOERR ; i++)
{
TEffetto* effetto = new TEffetto;
err = effetto->read(tipo, numero, i+1);
if (err == NOERR)
_righe_dist.add(effetto);
}
if ((_righe_dist.items()>0)||(err == _iseof))
err = NOERR;
return err;
}
int TDistinta::read(const TRectype& rec)
{
CHECK(rec.num() == LF_EFFETTI,"Can't read distinta from a different record type");
const char tipo = rec.get_char(EFF_TIPODIST);
const long numero = rec.get_long(EFF_NDIST);
return read(tipo,numero);
}
int TDistinta::write(bool force, TToken_string* dati_dist)
{
int err = NOERR;
const int elem = items();
for (int i=0; i<elem && err==NOERR; i++)
{
TEffetto& effetto = (TEffetto&)_righe_dist[i];
dati_dist->restart();
effetto.put("TIPODIST", dati_dist->get());
effetto.put("NDIST", dati_dist->get_long());
effetto.put("DATADIST", dati_dist->get());
effetto.put("CODABIP", dati_dist->get_long());
effetto.put("CODCABP", dati_dist->get_long());
effetto.put("NRIGADIST", i+1);
err = effetto.rewrite();
}
return err;
}
int TDistinta::remove(char tipodist, long ndist)
{
int err= NOERR;
err = reset() == NOERR;
//rimuovo dal file effetti
TLocalisamfile eff(LF_EFFETTI);
eff.put("TIPODIST",tipodist);
eff.put("NDIST",ndist);
eff.read(_isgteq);
char t = eff.get_char("TIPODIST");
long n = eff.get_long("NDIST");
while ((t==tipodist)&&(n==ndist))
{
eff.zero("TIPODIST");
eff.zero("NDIST");
eff.zero("DATADIST");
eff.zero("NRIGADIST");
eff.zero("CODABIP");
eff.zero("CODCABP");
eff.rewrite();
eff.next();
t = eff.get_char("TIPODIST");
n = eff.get_long("NDIST");
}
return err;
}