campo-sirio/ps/ps0713lib.cpp

130 lines
2.9 KiB
C++
Executable File

#include <lffiles.h>
#include <recarray.h>
#include "ps0713lib.h"
#include "../ca/commesse.h"
////////////////////////////////
//// TCOMMESSA_STRING ////
////////////////////////////////
//IDLAVORO: metodo che restituisce l'Idlavoro
const TString16 TCommessa_string::idlavoro()
{
return get(0);
}
//GRUPPO: metodo che restituisce il gruppo
const int TCommessa_string::gruppo()
{
return get_int(1);
}
//CONTO: metodo che restituisce il conto
const int TCommessa_string::conto()
{
return get_int(2);
}
//SOTCO: metodo che restituisce il sottoconto
const long TCommessa_string::sotco()
{
return get_long(3);
}
const TString16 TCommessa_string::contostr()
{
TString & str = get_tmp_string(24);
str.format("%d|%d|%ld", gruppo(), conto(), sotco());
return str;
}
//metodo costruttore
TCommessa_string::TCommessa_string(const char* idlavoro, const int gruppo, const int conto, const long sotco)
{
add(idlavoro);
add(gruppo);
add(conto);
add(sotco);
}
/////////////////////////
//// TCOMMESSA ////
/////////////////////////
/*
//CODICE: metodo che restituisce il codice di ripartizione
const TString& TCommessa::codice() const
{ return _codice; }
*/
//CMSSTR: metodo che restituisce la TToken_string contenente le informazioni di codcms e del conto
const TCommessa_string& TCommessa::cmsstr() const
{ return _commessa; }
//metodo costruttore
TCommessa::TCommessa(const char* codcms)
{
TString80 str = cache().get(LF_COMMESSE, codcms, COMMESSE_CODCONTO);
const int gruppo = atoi(str.left(3)) > 0 ? atoi(str.left(3)) : 0;
const int conto = atoi(str.mid(3,3)) > 0 ? atoi(str.mid(3,3)) : 0;
const long sotco = atol(str.right(6)) > 0L ? atol(str.right(6)) : 0L;
const TCommessa_string cms(codcms, gruppo, conto, sotco);
_commessa = cms;
}
//////////////////////////
//// TVB_RECSET ////
//////////////////////////
TRecnotype TVB_recset::new_rec(const char* buf)
{
TToken_string str(256,'\t'); //nuovo record tab separator
if(buf && *buf)
{
bool apici=false;
for (const char* c = buf; *c ; c++)
{
if (*c == '"')
{
apici = !apici;
}
else
{
if (*c == separator())
{
if (!apici)
str << str.separator();
else
str << *c;
}
else
str << *c;
}
}
}
const TRecnotype n = TText_recordset::new_rec(str);
if (n >= 0)
row(n).separator(str.separator());
return n;
}
TVB_recset::TVB_recset(const char * fileName, const char s)
: TCSV_recordset("CSV(,)")
{
set_separator(s);
load_file(fileName);
}