campo-sirio/ba/ba3800.cpp

1712 lines
47 KiB
C++
Raw Normal View History

#include <mask.h>
#include <printapp.h>
#include <recarray.h>
#include <tabutil.h>
#include <utility.h>
#include <sort.h>
#include <comuni.h>
#include <nditte.h>
#include <unloc.h>
#include <clifo.h>
#include <pconti.h>
#include <anagr.h>
#include "ba3.h"
#include "ba3800.h"
class BA3800_application : public TPrintapp
{
TTable* _tabivd;
const char* _buff;
TSort* _sort;
TDate _datastampa;
bool _diffprod_fatto,_risimp_fatto;
TString _numr_tot,_num_tot,_numr,_numr_da_stamp,_num_da_stamp,_numr_stamp,_num_stamp, _cont_num, _num;
char _sez_da_stamp,_let_da_stamp,_sez_stamp,_let_stamp,_sez_tot,_let_tot,_let,_sez;
int _cont_let,_cont_numr,_cont_gcs,_i;
bool _reset_righe_stampa,_statopatr_no_stamp,_sbilancio_ordine;
bool _totale_attivita_gia_stampato,_totale_passivita_gia_stampato, _vaccata;
bool _sbilancio_patr_gia_stampato,_attivo_o_passivo;
TString _causale_ap, _causale_chi, _totale;
char _liv;
TString tmp;
public:
bool menu (MENU_TAG m) { return TPrintapp::menu(m) ; }
virtual bool user_create() ;
virtual bool user_destroy() { delete _tabivd; return true;}
virtual bool set_print(int);
virtual bool preprocess_page (int,int);
virtual print_action postprocess_page (int,int);
virtual void postclose_print ();
virtual void set_page(int,int);
void intestazione_ditta();
void intestazione_studio();
void stampa_totali_studio();
void stampa_totali_ditta();
bool preprocess_ditta(int);
bool preprocess_studio(int);
void setta_righe_studio(const char*);
void setta_righe_ditta(const char*);
void totale_numero_arabo();
void totale_numero_romano();
void totale_lettera();
void init_sort();
void crea_sort_tabella();
void crea_sort_piano_conti();
void scrivi_record(const TString&,const TString&,const TString&, const TString &,int,int,long);
void riempi_record(const TString&,const TString&,const TString&, const TString &,int,int,long);
void set_bil_key(TString & key, char sezione, char lettera,
const char* numero_romano, const char * numero,
bool conti_ordine = true, int conto = 0,
int gruppo = 0, long sottoconto = 0L);
const char* descrizione_lettera(char, char);
const char* descrizione_numeroromano(char, char, int);
const char* descrizione_numero(char, char, int, const TString &);
const char* descrizione_sottoconto(int, int, long);
void setta_righe_descr(const char *, const char *);
BA3800_application(char livello) : _liv(toupper(livello)) {}
};
const char * num2str(const TString & s)
{
TString & str = get_tmp_string(20);
str = s;
str.trim();
if (str.len() > 2)
{
str = s.left(2);
const int sub = atoi(s.mid(2));
switch (sub)
{
case 0:
case 1:
break;
case 2:
str << " bis";
break;
case 3:
str << " ter";
break;
case 4:
str << " quater";
break;
case 5:
str << " quinquies";
break;
case 6:
str << " sexies";
break;
default:
break;
}
}
return (const char *) str;
}
void BA3800_application::postclose_print()
{
if (_liv == 'D')
delete _sort;
}
void BA3800_application::set_bil_key(TString & key, char sezione, char lettera,
const char* numero_romano, const char * numero,
bool conti_ordine, int gruppo, int conto,
long sottoconto)
{
//Se esiste solamente la sezione,significa che e' un conto d'ordine
//Forzo la lettera della classe a Z, per ottenere, grazie
//all'ordinamento del sort, i record dei conti d'ordine per ultimi
if (sezione == '\0')
sezione = ' ';
if (lettera == '\0')
lettera = ' ';
key.format("%1c%1c%-4s%-4s", sezione, ((conti_ordine && lettera == '\0' && sezione < '3') ? 'Z' : lettera), numero_romano, numero);
if (gruppo < 0)
key << "ZZZZZZZZZZZZ";
else
key << format("%03d%03d%06ld", gruppo, conto, sottoconto);
}
void BA3800_application::scrivi_record(const TString& sez,
const TString& let, const TString& numerorom, const TString & numero,
int g,int c,long s)
{
//Se esiste solamente la sezione,significa che e' un conto d'ordine
//Forzo la lettera della classe a Z, per ottenere, grazie
//all'ordinamento del sort, i record dei conti d'ordine per ultimi
TString key;
set_bil_key(key, sez[0], let[0], numerorom, numero, true, g, c, s);
_sort->sort ((const char*) key);
}
void BA3800_application::riempi_record(const TString& sez,
const TString& let, const TString& numerorom, const TString & numero,
int g,int c,long s)
{
TString key;
set_bil_key(key, sez[0], let[0], numerorom, numero, false, g, c, s);
_sort->sort ((const char*) key);
}
void BA3800_application::crea_sort_tabella()
{
TTable tabivd(TAB_IVD);
// Compilo tanti record quante sono le classi IV direttiva trovate sulla
// tabella %IVD, usando dei gruppi, conti e sottoconti fittizi. Successivamente
// nel caso di stampa completa verranno stampati anche questi record; nel caso
// di stampa non completa non verranno stampati.
for (int err = tabivd.first(); err == NOERR; err = tabivd.next())
{
const TString & codtab = tabivd.get("CODTAB");
const char sez = codtab[0];
const char let = codtab[1];
const TString16 nrom(codtab.mid(2, 4));
const TString16 nu(codtab.mid(6));
TString key;
set_bil_key(key, sez, let,(const char*)nrom, nu, false,-1);
_sort->sort ((const char*) key);
}
}
// Passo al sort tutti i record presenti su piano dei conti, aventi la classe
// IV direttiva CEE.
void BA3800_application::crea_sort_piano_conti()
{
TLocalisamfile pconti(LF_PCON);
TString sez,let,numerorom, num_conto;
TString sez_conto,let_conto,numr_conto, numero;
int indbil;
char sezione,lettera,tmcf;
int g,c;
long s;
bool classe_conto = false;
bool conto_dettagliato = false;
bool stsottbil;
for (int err = pconti.first(); err == NOERR; err = pconti.next())
{
// _prog->addstatus(1);
g = pconti.get_int (PCN_GRUPPO);
c = pconti.get_int (PCN_CONTO);
s = pconti.get_long(PCN_SOTTOCONTO);
sez = pconti.get(PCN_SEZIVD);
let = pconti.get(PCN_LETTIVD);
sezione = sez[0];
lettera = let[0];
numerorom = pconti.get(PCN_NUMRIVD);
numero = pconti.get(PCN_NUMIVD);
if (atoi(numero) != 0 && numero.len() == 1)
numero.insert("0"); // pacco per fare andare anche i record vecchi cosa si deve fare!!!!
// Se si tratta di un conto e contiene la classe, allora lo passo al sort.
// Gli eventuali sottoconti avranno la stessa classe.
if ((g != 0) && (c != 0) && (s == 0))
{
stsottbil = pconti.get_bool(PCN_STSOTTBIL);
tmcf = pconti.get (PCN_TMCF)[0];
indbil = pconti.get_int (PCN_INDBIL);
//Se sono nello stesso gruppo, ma ho un conto diverso da quello precedentemente
//analizzato, e se questi contiene la classe IV dir. CEE,
//allore devo controllare se va dettagliato (se STSOTTBIL e' true il conto non
//va dettagliato, se false va dettagliato)
if (sez != "0")
{
if (stsottbil || tmcf == 'C' || tmcf == 'F')
conto_dettagliato = false;
else
conto_dettagliato = true;
sez_conto = sez;
if (let != "")
let_conto = let;
else
if ((sez == "1")||(sez == "2"))
let_conto = "Z";
else
let_conto = let;
numr_conto = numerorom;
num_conto = numero;
riempi_record(sez_conto,let_conto,numr_conto,num_conto,g,c,0);
classe_conto = true;
}
else
{
classe_conto = false; // Metto conto dettagliato = true perche' potrebbero esserci dei sottoconti
conto_dettagliato = true; // di questo conto che hanno la classe e quindi vanno stampati.
}
}
// Se si tratta di un sottoconto e contiene la classe, allora lo passo al sort.
if ((g != 0) && (c != 0) && (s != 0))
{
// classe_conto indica se il conto precedentemente letto conteneva
// la classe. In caso affermativo anche questo sottoconto appena
// letto avra' la stessa classe del conto.
if (classe_conto)
{
if (conto_dettagliato)
riempi_record(sez_conto,let_conto,numr_conto,num_conto,g,c,s);
}
else
if (sez != "0")
riempi_record(sez,let,numerorom,numero,g,c,s);
}
}
}
bool BA3800_application::set_print(int)
{
TMask msk("ba3800a");
const KEY tasto= msk.run();
if (tasto == K_ENTER)
{
_datastampa = msk.get(F_DATASTAMPA);
_cont_let = 0;
_cont_numr = 0;
_cont_num = "";
_cont_gcs = 0;
_totale = "XXXXXXXXXXX";
_sez_stamp = ' ';
_let_stamp = ' ';
_numr_stamp = "";
_num_stamp = "";
_sez_tot = ' ';
_let_tot = ' ';
_numr_tot = "";
_num_tot = "";
_statopatr_no_stamp = true;
_diffprod_fatto = false;
_risimp_fatto = false;
_totale_attivita_gia_stampato = false;
_totale_passivita_gia_stampato = false;
_sbilancio_ordine = false;
_sbilancio_patr_gia_stampato = false;
_attivo_o_passivo = false;
_vaccata = false;
printer().footerlen(5);
if (_liv == 'S')
intestazione_studio();
else
if (_liv == 'D')
{
init_sort();
crea_sort_tabella();
crea_sort_piano_conti();
_sort->endsort();
intestazione_ditta();
}
return true;
}
return false;
}
void BA3800_application::totale_numero_arabo()
{
if (_cont_gcs != 0)//(_cont_gcs >= 2)
{
//Fai il totale del numero arabo e stampalo
if (_num.not_empty())
{
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
}
void BA3800_application::totale_numero_romano()
{
if (_cont_num.not_empty())//(_cont_num >= 2)
{
//Fai il totale del numero romano e stampalo
int numeror = atoi(_numr);
TString numrom = itor(numeror);
if (numrom != "")
{
set_row (_i, FR("@14gTotale@21g%s"), (const char*) numrom);
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
}
void BA3800_application::totale_lettera()
{
if (_cont_numr != 0)//(_cont_numr >= 2)
{
//Fai il totale della lettera e stampalo
if (_let != ' ')
{
set_row (_i,FR("@3gTotale@10g%c@12g)"), _let);
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
}
void BA3800_application::stampa_totali_studio()
{
const TString16 diff_prod("9B");
const TString16 ris_imp ("9E 21");
_num = _num_tot;
_numr = _numr_tot;
_let = _let_tot;
if (_tabivd->eof())
{
_num_tot = "";
_numr_tot = "";
_let_tot = ' ';
_sez_tot = ' ';
}
if (_num_da_stamp != _num_tot)
{
totale_numero_arabo();
if (_sez_stamp == '9')
{
TString16 classe;
classe.format("%c%c%8s%-4s", _sez_da_stamp,_let_da_stamp,(const char*)_numr_da_stamp,(const char*)_num_da_stamp);
classe.rtrim();
if (classe > ris_imp && !_risimp_fatto)
{
if (_num_tot == "20" || _num_tot == "21")
{
set_row (_i, FR("@4gTotale delle partite straordinarie"));
set_row (_i++,"@86g%s", (const char*) _totale);
set_row (_i,FR("@4gRisultato prima delle imposte"));
set_row (_i++,"@86g%s", (const char*) _totale);
_risimp_fatto = true;
}
}
}
_cont_gcs = 0;
}
if (_numr_da_stamp != _numr_tot)
{
totale_numero_arabo();
totale_numero_romano();
_cont_gcs = 0;
_cont_num = "";
}
if (_let_da_stamp!=_let_tot)
{
if (_sez_stamp == '9')
{
TString16 classe;
classe.format("%c%c%8s%-4s",_sez_stamp,_let_stamp,(const char*)_numr_stamp,(const char*)_num_stamp);
classe.rtrim();
totale_numero_arabo();
totale_numero_romano();
if (_cont_numr != 0)//(_cont_numr >= 2)
{
//Fai il totale della lettera e stampalo
if (_let_stamp == 'D')
set_row (_i,FR("@4gTotale delle rettifiche"));
else
if (_let != ' ')
if (_sez_stamp == '9' && _let_stamp != 'E')
set_row (_i, FR("@3gTotale@10g%c@12g)"), _let);
else
if (_sez_stamp != '9')
set_row (_i,FR("@3gTotale@10g%c@12g)"), _let);
if (_let != ' ')
{
if (_sez_stamp == '9' && _let_stamp != 'E')
set_row (_i++,"@86g%s", (const char*) _totale);
else
if (_sez_stamp != '9')
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
if (classe > diff_prod && !_diffprod_fatto)
{
if (_let_tot == 'A' || _let_tot == 'B') //Solo se esiste una delle due lettere
{
set_row (_i++,FR("@4gDifferenza tra valore e costi della produzione@86g%s"), (const char*) _totale);
_diffprod_fatto = true;
}
}
}
else
{
totale_numero_arabo();
totale_numero_romano();
totale_lettera();
}
_cont_gcs = 0;
_cont_num = 0;
_cont_numr = 0;
}
if (_sez_da_stamp != _sez_tot)
{
totale_numero_arabo();
totale_numero_romano();
if (_cont_numr != 0)//(_cont_numr >= 2)
{
//Fai il totale della lettera e stampalo
if (_let != ' ')
{
if (_sez_stamp == '9' && _let_stamp != 'E')
{
set_row (_i,FR("@3gTotale@10g%c@12g)"), _let);
set_row (_i++,"@86g%s", (const char*) _totale);
}
else
if (_sez_stamp != '9')
{
set_row (_i,FR("@3gTotale@10g%c@12g)"), _let);
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
}
if (_sez_stamp == '1')
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i, FR("@0gTOTALE ATTIVO"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
if (_sez_stamp == '2') //&& (_let_stamp != 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i, FR("@0gTOTALE PASSIVO"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
if (_sez_stamp == '2')
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i++, FR("@0gSALDO STATO PATRIMONIALE"));
set_row (_i, FR("@0gSBILANCIO (ATTIVO - PASSIVO)"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
if (_sez_stamp == '9')
{
if (_tabivd->eof())
{
if ((_let_stamp == 'A' || _let_stamp == 'B') && !_diffprod_fatto)//Solo se esiste una delle due lettere
{
set_row (_i++, FR("@4gDifferenza tra valore e costi della produzione@86g%s"), (const char*) _totale);
_diffprod_fatto = true;
}
if (!_risimp_fatto)
{
set_row (_i, FR("@4gRisultato prima delle imposte"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i,FR("@0gRISULTATO CONTO ECONOMICO"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
_cont_gcs = 0;
_cont_num = 0;
_cont_numr = 0;
_cont_let = 0;
}
}
void BA3800_application::stampa_totali_ditta()
{
bool gia_stampato_conto_ord = false;
const TString16 diff_prod("9B");
const TString16 ris_imp ("9E 21");
_num = _num_tot;
_numr = _numr_tot;
_let = _let_tot;
if (_buff == NULL)
{
_num_tot = "";
_numr_tot = "";
_let_tot = ' ';
_sez_tot = ' ';
}
if ((_sez_stamp == '1' || _sez_stamp == '2') && _let_stamp != 'Z')
_attivo_o_passivo = true;
if (_num_da_stamp != _num_tot)
{
if (_let_stamp != 'Z')
{
if (_sez_stamp != '5')
if (_cont_gcs != 0)//(_cont_gcs >= 2)
{
//Fai il totale del numero arabo e stampalo
if (_num.not_empty())
{
set_row (_i, FR("@18gTotale@25g%s)"), num2str(_num));
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
}
if (_sez_stamp == '9')
{
TString16 classe;
classe.format("%c%c%8s%-4s", _sez_da_stamp,_let_da_stamp,(const char*)_numr_da_stamp,(const char*)_num_da_stamp);
classe.rtrim();
if (classe > ris_imp && !_risimp_fatto)
{
if (_num_tot == "20" || _num_tot == "21")
{
set_row (_i, FR("@4gTotale delle partite straordinarie"));
set_row (_i++,"@86g%s", (const char*) _totale);
set_row (_i, FR("@4gRisultato prima delle imposte"));
set_row (_i++,"@86g%s", (const char*) _totale);
_risimp_fatto = true;
}
}
}
_cont_gcs = 0;
}
if (_numr_da_stamp != _numr_tot)
{
if (_let_stamp != 'Z')
{
if (_sez_stamp != '5')
{
if (_cont_gcs != 0)//(_cont_gcs >= 2)
{
//Fai il totale del numero arabo e stampalo
if (_num.not_empty())
{
set_row (_i, FR("@18gTotale@25g%s)"), num2str(_num));
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
if (_cont_num.not_empty())//(_cont_num >= 2)
{
//Fai il totale del numero romano e stampalo
int numeror = atoi(_numr);
TString numrom = itor(numeror);
if (numrom != "")
{
set_row (_i,FR("@14gTotale@21g%s"), (const char*) numrom);
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
}
}
_cont_gcs = 0;
_cont_num = 0;
}
if (_let_da_stamp!=_let_tot)
{
if (_sez_stamp == '9')
{
TString16 classe;
classe.format("%c%c%8s%-4s",_sez_stamp,_let_stamp,(const char*)_numr_stamp,(const char*)_num_stamp);
classe.ltrim();
if (_cont_gcs != 0)//(_cont_gcs >= 2)
{
//Fai il totale del numero arabo e stampalo
if (_num.not_empty())
{
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
if (_cont_num.not_empty())//(_cont_num >= 2)
{
//Fai il totale del numero romano e stampalo
int numeror = atoi(_numr);
TString numrom = itor(numeror);
if (numrom != "")
{
set_row (_i, FR("@14gTotale@21g%s"), (const char*) numrom);
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
if (_cont_numr != 0)//(_cont_numr >= 2)
{
//Fai il totale della lettera e stampalo
if (_let_stamp == 'D')
set_row (_i, FR("@4gTotale delle rettifiche"));
else
if (_let != ' ')
if (_sez_stamp == '9' && _let_stamp != 'E')
set_row (_i,FR("@3gTotale@10g%c@12g)"), _let);
else
if (_sez_stamp != '9')
set_row (_i,FR("@3gTotale@10g%c@12g)"), _let);
if (_let != ' ')
{
if (_sez_stamp == '9' && _let_stamp != 'E')
set_row (_i++,"@86g%s", (const char*) _totale);
else
if (_sez_stamp != '9')
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
if (classe > diff_prod && _diffprod_fatto)
{
if (_let_tot == 'A' || _let_tot == 'B') //Solo se esiste una delle due lettere
{
set_row (_i++, FR("@4gDifferenza tra valore e costi della produzione@86g%s"), (const char*)_totale);
_diffprod_fatto = false;
}
}
}
else
{
if (_let_stamp != 'Z')
{
if (_sez_stamp != '5')
{
if (_cont_gcs != 0)//(_cont_gcs >= 2)
{
//Fai il totale del numero arabo e stampalo
if (_num.not_empty())
{
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
if (_cont_num.not_empty())//(_cont_num >= 2)
{
//Fai il totale del numero romano e stampalo
int numeror = atoi(_numr);
TString numrom = itor(numeror);
if (numrom != "")
{
set_row (_i,FR("@14gTotale@21g%s"), (const char*) numrom);
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
if (_cont_numr != 0)//(_cont_numr >= 2)
{
//Fai il totale della lettera e stampalo
if (_let != ' ')
{
set_row (_i,FR("@3gTotale@10g%c@12g)"), _let);
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
}
}
if ((_sez_stamp == '1')&&(_let_da_stamp == 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i,FR("@0gTOTALE ATTIVO"));
set_row (_i++,"@86g%s", (const char*) _totale);
_totale_attivita_gia_stampato = true;
}
if ((_sez_stamp == '2')&&(_let_da_stamp == 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i,FR("@0gTOTALE PASSIVO"));
set_row (_i++,"@86g%s", (const char*) _totale);
_totale_passivita_gia_stampato = true;
}
if ((_sez_stamp == '1')&&(_let_stamp == 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i, FR("@0gTOTALE CONTI D' ORDINE ATTIVI"));
set_row (_i++,"@86g%s", (const char*) _totale);
gia_stampato_conto_ord = true;
}
if ((_sez_stamp == '2')&&(_let_stamp == 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i, FR("@0gTOTALE CONTI D' ORDINE PASSIVI"));
set_row (_i++,"@86g%s", (const char*) _totale);
_i++;
gia_stampato_conto_ord = true;
if (!_attivo_o_passivo)
{
set_row (_i++,FR("@0gSALDO CONTI D' ORDINE"));
set_row (_i,FR("@0gSBILANCIO"));
set_row (_i++,"@86g%s", (const char*) _totale);
_sbilancio_ordine = true;
_sbilancio_patr_gia_stampato = true;
}
}
}
_cont_gcs = 0;
_cont_num = 0;
_cont_numr = 0;
}
if (_sez_da_stamp != _sez_tot)
{
if (_let_stamp != 'Z')
{
if (_sez_stamp != '5')
{
if (_cont_gcs != 0)//(_cont_gcs >= 2)
{
//Fai il totale del numero arabo e stampalo
if (_num .not_empty())
{
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
if (_cont_num .not_empty())//(_cont_num >= 2)
{
//Fai il totale del numero romano e stampalo
int numeror = atoi(_numr);
TString numrom = itor(numeror);
if (numrom != "")
{
set_row (_i, FR("@14gTotale@21g%s"), (const char*) numrom);
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
if (_cont_numr != 0)//(_cont_numr >= 2)
{
//Fai il totale della lettera e stampalo
if (_let != ' ')
{
if (_sez_stamp == '9' && _let_stamp != 'E')
{
set_row (_i,FR("@3gTotale@10g%c@12g)"), _let);
set_row (_i++,"@86g%s", (const char*) _totale);
}
else
if (_sez_stamp != '9')
{
set_row (_i,FR("@3gTotale@10g%c@12g)"), _let);
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
}
}
}
if (!_totale_attivita_gia_stampato)
if ((_sez_stamp == '1') && (_let_stamp != 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i,FR("@0gTOTALE ATTIVO"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
if (!_totale_passivita_gia_stampato)
if ((_sez_stamp == '2') && (_let_stamp != 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i,FR("@0gTOTALE PASSIVO"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
if (!gia_stampato_conto_ord)
{
if (_sez_stamp == '2')
{
if (!_sbilancio_patr_gia_stampato)
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i++, FR("@0gSALDO STATO PATRIMONIALE"));
set_row (_i, FR("@0gSBILANCIO (ATTIVO - PASSIVO)"));
set_row (_i++,"@86g%s", (const char*) _totale);
_sbilancio_patr_gia_stampato = true;
}
}
if ((_sez_stamp == '1')&&(_let_stamp == 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i, FR("@0gTOTALE CONTI D' ORDINE ATTIVI"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
if ((_sez_stamp == '2')&&(_let_stamp == 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i,FR("@0gTOTALE CONTI D' ORDINE PASSIVI"));
set_row (_i++,"@86g%s", (const char*) _totale);
_i++;
if (!_sbilancio_ordine)
{
set_row (_i++,"@0g%c", app);
set_row (_i++, FR("@0gSALDO CONTI D' ORDINE"));
set_row (_i, FR("@0gSBILANCIO"));
set_row (_i++,"@86g%s", (const char*) _totale);
_sbilancio_ordine = true;
}
}
}
if (_sez_stamp == '2')
{
char app = ' ';
if (!_sbilancio_patr_gia_stampato)
{
set_row (_i++,"@0g%c", app);
set_row (_i++, FR("@0gSALDO STATO PATRIMONIALE"));
set_row (_i, FR("@0gSBILANCIO (ATTIVO - PASSIVO)"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
if (!_sbilancio_ordine)
{
set_row (_i++,"@0g%c", app);
set_row (_i++, FR("@0gSALDO CONTI D' ORDINE"));
set_row (_i, FR("@0gSBILANCIO"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
if (_sez_stamp == '5')
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i, FR("@0gTOTALE CONTI D' ORDINE"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
if (_sez_stamp == '9')
{
if (_tabivd->eof())
{
if ((_let_stamp == 'A' || _let_stamp == 'B') && _diffprod_fatto)//Solo se esiste una delle due lettere
{
set_row (_i++,FR("@4gDifferenza tra valore e costi della produzione@86g%s"), (const char*) _totale);
_diffprod_fatto = false;
}
if (!_risimp_fatto)
{
set_row (_i, FR("@4gRisultato prima delle imposte"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
}
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i,FR("@0gRISULTATO CONTO ECONOMICO"));
set_row (_i++,"@86g%s", (const char*) _totale);
}
_cont_gcs = 0;
_cont_num = "";
_cont_numr = 0;
_cont_let = 0;
}
}
print_action BA3800_application::postprocess_page(int file, int counter)
{
if (_liv == 'S')
{
if (_sez_da_stamp != _sez_stamp)
{
if (_sez_da_stamp == '9')
{
reset_print();
_i = 1;
setta_righe_studio(TR("CONTO ECONOMICO"));
_reset_righe_stampa = false;
}
}
set_auto_ff(false);
if (_tabivd->eof())
return NEXT_PAGE;
}
else
if (_liv == 'D')
{
struct bil_ivd* bil = (struct bil_ivd*) _buff;
bil = (struct bil_ivd*) _buff;
if (_sez_da_stamp != _sez_stamp)
{
if (_sez_da_stamp == '5')
{
reset_print();
_i = 1;
setta_righe_ditta(TR("CONTI D' ORDINE"));
_reset_righe_stampa = false;
}
if (_sez_da_stamp == '9')
{
reset_print();
_i = 1;
setta_righe_ditta(TR("CONTO ECONOMICO"));
_reset_righe_stampa = false;
}
}
set_auto_ff(false);
if (_buff == NULL)
return NEXT_PAGE;
}
return REPEAT_PAGE;
}
bool BA3800_application::preprocess_page(int file, int counter)
{
if (_liv == 'S')
{
if (preprocess_studio(counter))
return true;
else
return false;
}
else if (_liv == 'D')
{
if (preprocess_ditta(counter))
return true;
else
return false;
}
return true;
}
bool BA3800_application::preprocess_studio(int counter)
{
TString saldostr,saldo_rafstr;
if (counter == 0)
{
_tabivd->setkey(1);
_tabivd->zero();
_tabivd->first();
reset_print();
_i = 1;
}
else
_tabivd->next();
if (_reset_righe_stampa)
{
reset_print();
_i = 1;
}
else
_reset_righe_stampa = true;
if (counter)
{
_sez_stamp = _sez_da_stamp;
_let_stamp = _let_da_stamp;
_numr_stamp = _numr_da_stamp;
_num_stamp = _num_da_stamp;
_sez_tot = _sez_da_stamp;
_let_tot = _let_da_stamp;
_numr_tot = _numr_da_stamp;
_num_tot = _num_da_stamp;
}
if (!_tabivd->eof())
{
TString16 codtab;
codtab = _tabivd->get("CODTAB");
_sez_da_stamp = codtab[0];
_let_da_stamp = codtab[1];
_numr_da_stamp = codtab.mid(2, 4);
_numr_da_stamp.ltrim();
_num_da_stamp = codtab.mid(6, 4);
_num_da_stamp.ltrim();
if (counter)
stampa_totali_studio();
}
else
{
stampa_totali_studio();
_sez_da_stamp = ' ';
_sez_stamp = ' ';
}
return true;
}
bool BA3800_application::preprocess_ditta(int counter)
{
TString key((const char*)_buff);
int g,c;
long s;
if (!counter)
{
reset_print();
_i = 1;
}
if (_reset_righe_stampa)
{
reset_print();
_i = 1;
}
else
_reset_righe_stampa = true;
if (counter)
{
_sez_stamp = key[0];
_let_stamp = key[1];
_numr_stamp = key.mid(2, 4);
_numr_stamp.ltrim();
_num_stamp = key.mid(6, 4);
_num_stamp.ltrim();
_sez_tot = _sez_stamp;
_let_tot = _let_stamp;
_numr_tot = _numr_stamp;
_num_tot = _num_stamp;
}
_buff = _sort->retrieve();
if (_buff != NULL)
{
key = (const char *) _buff;
_sez_da_stamp = key[0];
_let_da_stamp = key[1];
_numr_da_stamp = key.mid(2, 4);
_numr_da_stamp.ltrim();
_num_da_stamp = key.mid(6, 4);
_num_da_stamp.ltrim();
g = atoi(key.mid(10, 3));
c = atoi(key.mid(13, 3));
s = atol(key.mid(16));
if (counter)
stampa_totali_ditta();
}
else
{
stampa_totali_ditta();
_sez_da_stamp = ' ';
_sez_stamp = ' ';
}
return true;
}
void BA3800_application::set_page(int file, int counter)
{
if (_liv == 'S')
{
if (_sez_da_stamp != _sez_stamp)
{
if ((_sez_da_stamp=='1')||((_sez_da_stamp=='2')&&(_statopatr_no_stamp)))
{
setta_righe_studio(TR("STATO PATRIMONIALE"));
_statopatr_no_stamp = false;
}
if (_sez_da_stamp == '2')
setta_righe_studio("");
if (_sez_da_stamp == '9')
set_auto_ff(true);
}
else
{
if (!_tabivd->eof())
setta_righe_studio("");
}
}
else if (_liv == 'D')
{
if (_sez_da_stamp != _sez_stamp)
{
if ((_sez_da_stamp=='1')||((_sez_da_stamp=='2')&&(_statopatr_no_stamp)))
{
setta_righe_ditta (TR("STATO PATRIMONIALE"));
_statopatr_no_stamp = false;
}
if (_sez_da_stamp == '2')
setta_righe_ditta("");
if ((_sez_da_stamp == '5') || (_sez_da_stamp == '9'))
set_auto_ff(true);
}
else
{
if (_buff != NULL)
setta_righe_ditta("");
}
}
}
void BA3800_application::setta_righe_studio(const char * titolo)
{
int numeror;
TString numrom, numero;
bool stampa_classe = true;
numeror = atoi(_numr_da_stamp);
numrom = itor(numeror);
numero = _num_da_stamp;
numero.ltrim();
//Se la classe prelevata dal record corrente del sort e' diversa dalla classe
//prelevata dal record precedente, allora stampo la nuova classe con i relativi
//sottoconti. In caso contrario continuo a stampare solo i sottoconti.
if (_sez_da_stamp != _sez_stamp)
{
set_row (_i++,"@0g%s", titolo);
char app = ' ';
set_row(_i++,"@0g%c", app);
if (_sez_da_stamp == '1')
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i++, FR("@0gATTIVO"));
set_row (_i++,"@0g%c", app);
}
else
if (_sez_da_stamp == '2')
{
char app = ' ';
set_row(_i++,"@0g%c", app);
set_row (_i++, FR("@0gPASSIVO"));
set_row(_i++,"@0g%c", app);
}
if (stampa_classe)
{
if ((_sez_da_stamp=='1')||(_sez_da_stamp=='2')||(_sez_da_stamp== '9'))
{
_cont_let = 1;
_cont_numr = 1;
_cont_num = "1";
_cont_gcs = 1;
if (_let_da_stamp != ' ')
{
set_row(_i,"@0g%c)", _let_da_stamp);
const TString & descr = descrizione_lettera(_sez_da_stamp,_let_da_stamp);
setta_righe_descr(descr, "@3g%s");
}
if (numrom != "")
{
set_row(_i,"@3g%8s -", (const char*) numrom);
const TString & descr = descrizione_numeroromano(_sez_da_stamp,_let_da_stamp,numeror);
setta_righe_descr(descr, "@14g%s");
}
if (numero.not_empty())
{
set_row(_i,"@13g%s)", num2str(_num_da_stamp));
const TString & descr = descrizione_numero(_sez_da_stamp,_let_da_stamp,numeror,numero);
setta_righe_descr(descr,"@27g%s");
}
}
}
}
else
if ((_let_da_stamp != _let_stamp) && (_sez_da_stamp == _sez_stamp))
{
if (stampa_classe)
{
if ((_sez_da_stamp=='1') ||
(_sez_da_stamp=='2') ||
(_sez_da_stamp=='9'))
{
_cont_numr = 1;
_cont_num = "1";
_cont_gcs = 1;
if (_let_da_stamp != ' ')
{
set_row(_i,"@0g%c)", _let_da_stamp);
const TString & descr = descrizione_lettera(_sez_da_stamp,_let_da_stamp);
setta_righe_descr(descr, "@3g%s");
}
if (numrom != "")
{
set_row(_i,"@3g%8s -", (const char*) numrom);
const TString & descr = descrizione_numeroromano(_sez_da_stamp,_let_da_stamp,numeror);
setta_righe_descr(descr, "@14g%s");
}
if (numero.not_empty())
{
set_row(_i,"@13g%s)", num2str(_num_da_stamp));
const TString & descr = descrizione_numero(_sez_da_stamp,_let_da_stamp,numeror,numero);
setta_righe_descr(descr, "@27g%s");
}
}
}
}
else
if ((_numr_da_stamp != _numr_stamp) &&
(_sez_da_stamp == _sez_stamp) &&
(_let_da_stamp == _let_stamp))
{
if ((_sez_da_stamp=='1')||(_sez_da_stamp=='2')||(_sez_da_stamp=='9'))
{
_cont_num = "1";
_cont_gcs = 1;
if (numrom != "")
{
set_row(_i,"@3g%8s -", (const char*) numrom);
const TString & descr = descrizione_numeroromano(_sez_da_stamp,_let_da_stamp,numeror);
setta_righe_descr(descr, "@14g%s");
}
if (numero.not_empty())
{
set_row(_i,"@13g%s)", num2str(_num_da_stamp));
const TString & descr = descrizione_numero(_sez_da_stamp,_let_da_stamp,numeror,numero);
setta_righe_descr(descr, "@27g%s");
}
}
}
else
if ((_num_da_stamp != _num_stamp) &&
(_sez_da_stamp == _sez_stamp) &&
(_let_da_stamp == _let_stamp) &&
(_numr_da_stamp==_numr_stamp))
{
if ((_sez_da_stamp=='1')||(_sez_da_stamp=='2')||(_sez_da_stamp=='9'))
{
set_row(_i,"@13g%s)", num2str(_num_da_stamp));
const TString & descr = descrizione_numero(_sez_da_stamp,_let_da_stamp,numeror,numero);
setta_righe_descr(descr, "@27g%s");
_cont_gcs = 1;
}
}
}
void BA3800_application::setta_righe_ditta(const char* titolo)
{
TString key((const char *) _buff);
int gruppo, conto;
char sezione,lettera;
long sottoc;
TString numrom, numero, numr;
bool stampa_classe = true;
sezione = key[0];
lettera = key[1];
numr = key.mid(2, 4);
numr.ltrim();
numrom = itor(atoi(numr));
numero = key.mid(6, 4);
numero.ltrim();
gruppo = atoi(key.mid(10, 3));
conto = atoi(key.mid(13, 3));
sottoc = atol(key.mid(16));
//Se la classe prelevata dal record corrente del sort e' diversa dalla classe
//prelevata dal record precedente, allora stampo la nuova classe con i relativi
//sottoconti. In caso contrario continuo a stampare solo i sottoconti.
if (sezione == '1' && lettera == 'A' && !_vaccata)
{
set_row (_i, FR("@3gTotale )"));
set_row (_i++,"@86g%s", (const char*) _totale);
_vaccata = true;
}
if (_sez_da_stamp != _sez_stamp)
{
set_row (_i++,"@0g%s", titolo);
char app = ' ';
set_row(_i++,"@0g%c", app);
if ((_sez_da_stamp == '1')&&(_let_da_stamp == 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i++,FR("@0gCONTI D' ORDINE ATTIVI"));
set_row (_i++,"@0g%c", app);
stampa_classe = false;
}
else
if ((_sez_da_stamp == '1')&&(_let_da_stamp != 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i++,FR("@0gATTIVO"));
set_row (_i++,"@0g%c", app);
}
if ((_sez_da_stamp == '2')&&(_let_da_stamp == 'Z'))
{
char app = ' ';
set_row(_i++,"@0g%c", app);
set_row (_i++, FR("@0gCONTI D' ORDINE PASSIVI"));
set_row(_i++,"@0g%c", app);
stampa_classe = false;
}
else
if ((_sez_da_stamp == '2')&&(_let_da_stamp != 'Z'))
{
char app = ' ';
set_row(_i++,"@0g%c", app);
set_row (_i++, FR("@0gPASSIVO"));
set_row(_i++,"@0g%c", app);
}
if (stampa_classe)
{
if ((_sez_da_stamp=='1')||(_sez_da_stamp=='2')||(_sez_da_stamp== '9'))
{
_cont_let = 1;
_cont_numr = 1;
_cont_num = "1";
_cont_gcs = 1;
if (lettera != ' ')
{
const TString descr(descrizione_lettera(sezione, lettera));
set_row(_i,"@0g%c)", lettera);
setta_righe_descr(descr, "@3g%s");
}
if (numrom != "")
{
set_row(_i,"@3g%8s -", (const char*) numrom);
const TString & descr = descrizione_numeroromano(sezione, lettera, atoi(numr));
setta_righe_descr(descr, "@14g%s");
}
if (numero.not_empty())
{
set_row(_i,"@13g%s)", num2str(numero));
const TString & descr = descrizione_numero(sezione, lettera, atoi(numr), numero);
setta_righe_descr(descr, "@27g%s");
}
}
}
}
else
if ((_let_da_stamp != _let_stamp) &&
(_sez_da_stamp == _sez_stamp))
{
if ((_sez_da_stamp == '1') &&
(_let_da_stamp == 'Z'))
{
char app = ' ';
set_row (_i++,"@0g%c", app);
set_row (_i++,FR("@0gCONTI D' ORDINE ATTIVI"));
set_row (_i++,"@0g%c", app);
stampa_classe = false;
}
if ((_sez_da_stamp == '2')&&(_let_da_stamp == 'Z'))
{
char app = ' ';
set_row(_i++,"@0g%c", app);
set_row (_i++,FR("@0gCONTI D' ORDINE PASSIVI"));
set_row(_i++,"@0g%c", app);
stampa_classe = false;
}
if (stampa_classe)
{
if ((_sez_da_stamp=='1')||(_sez_da_stamp=='2')||(_sez_da_stamp=='9'))
{
set_row(_i,"@0g%c)", lettera);
const TString descr(descrizione_lettera(sezione, lettera));
setta_righe_descr(descr, "@3g%s");
_cont_numr = 1;
_cont_num = "1";
_cont_gcs = 1;
if (numrom != "")
{
set_row(_i,"@3g%8s -", (const char*) numrom);
const TString & descr = descrizione_numeroromano(sezione, lettera, atoi(numr));
setta_righe_descr(descr, "@14g%s");
}
if (numero.not_empty())
{
set_row(_i,"@13g%s)", num2str(numero));
const TString & descr = descrizione_numero(sezione, lettera, atoi(numr), numero);
setta_righe_descr(descr, "@27g%s");
}
}
}
}
else
if ((_numr_da_stamp != _numr_stamp) &&
(_sez_da_stamp == _sez_stamp) &&
(_let_da_stamp==_let_stamp))
{
if ((_sez_da_stamp=='1')||(_sez_da_stamp=='2')||(_sez_da_stamp=='9'))
{
set_row(_i,"@3g%8s -", (const char*) numrom);
const TString & descr = descrizione_numeroromano(sezione, lettera, atoi(numr));
setta_righe_descr(descr, "@14g%s");
_cont_num = "1";
_cont_gcs = 1;
if (numero.not_empty())
{
set_row(_i,"@13g%s)", num2str(numero));
const TString & descr = descrizione_numero(sezione, lettera, atoi(numr), numero);
setta_righe_descr(descr, "@27g%s");
}
}
}
else
if ((_num_da_stamp != _num_stamp) &&
(_sez_da_stamp == _sez_stamp) &&
(_let_da_stamp == _let_stamp) &&
(_numr_da_stamp == _numr_stamp))
{
if ((_sez_da_stamp == '1') ||
(_sez_da_stamp == '2') ||
(_sez_da_stamp == '9'))
{
set_row(_i,"@13g%s)", num2str(numero));
const TString & descr = descrizione_numero(sezione, lettera, atoi(numr), numero);
setta_righe_descr(descr, "@27g%s");
_cont_gcs = 1;
}
}
if (gruppo != 0)
{
_cont_gcs += 1;
set_row (_i,"@20g%d", gruppo);
set_row (_i,"@24g%d", conto);
if (sottoc != 0L) // Omette la stampa dello 0
set_row (_i,"@28g%ld", sottoc);
const TString & descr = descrizione_sottoconto(gruppo, conto, sottoc);
set_row (_i,"@35g%s", (const char*) descr);
set_row (_i,"@88g%s", (const char*) _totale);
_i++;
}
}
void BA3800_application::setta_righe_descr(const char * str, const char * formato)
{
TParagraph_string s(str, 40);
const char * r;
while ((r = s.get()) != NULL)
set_row (_i++, formato, r);
}
void BA3800_application::intestazione_ditta()
{
TString datastampastr;
TString sep(132),sep1(147);
TString app(8);
TLocalisamfile nditte (LF_NDITTE);
TLocalisamfile comuni (LF_COMUNI);
TLocalisamfile unloc (LF_UNLOC);
TLocalisamfile anag (LF_ANAG);
TString codice_ditta,ragsoc,indulc,civulc,capulc,com,prov,comulc;
TString cofi,paiv,tipoa,codanagr;
reset_header();
nditte.setkey(1);
codice_ditta << get_firm();
nditte.zero();
nditte.put(NDT_CODDITTA,codice_ditta);
nditte.read();
app = nditte.get(NDT_CODDITTA);
ragsoc = nditte.get(NDT_RAGSOC);
tipoa = nditte.get(NDT_TIPOA);
codanagr = nditte.get(NDT_CODANAGR);
unloc.setkey(1);
unloc.zero();
unloc.put(ULC_CODDITTA,app);
unloc.put(ULC_CODULC,"1");
unloc.read();
indulc = unloc.get(ULC_INDULC);
civulc = unloc.get(ULC_CIVULC);
capulc = unloc.get(ULC_CAPULC);
comulc = unloc.get(ULC_COMULC);
comuni.setkey(1);
comuni.zero();
comuni.put(COM_COM,comulc);
comuni.read();
com = comuni.get(COM_DENCOM);
prov = comuni.get(COM_PROVCOM);
anag.setkey(1);
anag.zero();
anag.put(ANA_TIPOA,tipoa);
anag.put(ANA_CODANAGR,codanagr);
anag.read();
cofi = anag.curr().get(ANA_COFI);
paiv = anag.curr().get(ANA_PAIV);
set_header (1, FR("@0gDITTA@6g%-5s"), (const char*) codice_ditta);
set_header (1, "@12g%-45s", (const char*) ragsoc);
set_header (1, "@59g%-25s", (const char*) indulc);
set_header (1, "@86g%-9s", (const char*) civulc);
set_header (1, "@97g%-5s", (const char*) capulc);
set_header (1, "@103g%-25s", (const char*) com);
set_header (1, "@129g%-3s", (const char*) prov);
sep << FR("Pag. @#");
sep.right_just(132);
set_header(2,(const char*) sep);
datastampastr = _datastampa.string();
set_header (2,FR("@0gPartita iva@12g%-11s"), (const char*) paiv);
set_header (2,FR("@30gCodice fiscale@45g%-16s"), (const char*) cofi);
set_header (2,FR("@105gData@110g%s"),(const char*) datastampastr);
set_header (3,FR("@0gSTAMPA TABELLA IV DIRETTIVA"));
sep.fill('-'); //Stampa 132 - (sep(132))
set_header (4, (const char *) sep);
}
void BA3800_application::intestazione_studio()
{
TString sep(132);
TString datastampastr;
reset_header();
sep << FR("Pag. @#");
sep.right_just(132);
set_header(1,(const char*) sep);
set_header (1,FR("@0gStudio"));
datastampastr = _datastampa.string();
set_header (1,FR("@105gData@110g%s"),(const char*) datastampastr);
set_header (2,FR("@0gSTAMPA TABELLA IV DIRETTIVA"));
sep.fill('-'); //Stampa 132 - (sep(132))
set_header (3, (const char *) sep);
}
const char* BA3800_application::descrizione_lettera(char sezione, char lettera)
{
TString16 key;
key.format("%1c%1c", sezione, lettera);
return cache().get(TAB_IVD, key, "S0");
}
const char* BA3800_application::descrizione_numeroromano(char sezione, char lettera, int numr)
{
TString16 key;
if (numr > 0)
key.format("%1c%1c%04d", sezione, lettera, numr);
else
key.format("%c%c ", sezione, lettera);
return cache().get(TAB_IVD, key, "S0");
}
const char* BA3800_application::descrizione_numero(char sezione, char lettera, int numr, const TString & numero)
{
TString16 key;
if (numr > 0)
key.format("%1c%1c%04d%-4s",sezione, lettera, numr, (const char *) numero);
else
key.format("%1c%1c %-4s",sezione,lettera, (const char *) numero);
return cache().get(TAB_IVD, key, "S0");
}
const char* BA3800_application::descrizione_sottoconto(int gruppo, int conto, long sottoc)
{
TString16 key;
key << gruppo;
if (conto != 0)
key << '|' << conto;
if (sottoc != 0)
key << '|' << sottoc;
return cache().get(LF_PCON, key, PCN_DESCR);
}
void BA3800_application::init_sort()
{
_sort = new TSort(23);
_sort -> addsortkey(0,22);
_sort->init();
}
bool BA3800_application::user_create()
{
open_files(LF_TAB, LF_TABCOM, LF_NDITTE, LF_COMUNI, LF_UNLOC, LF_ANAG, LF_PCON, LF_CLIFO, 0);
_tabivd = new TTable(TAB_IVD);
return true;
}
int ba3800 (int argc, char* argv[])
{
if (argc > 3)
{
BA3800_application a(*argv[2]);
a.run(argc, argv, TR("Stampa Tabella IV Direttiva CEE"));
}
else
error_box("Usage: BA3 -7 {D|S}");
return 0;
}