campo-sirio/cg/cg1700.cpp
nik e00b2a76f8 Correzzioni varie a causalki lista movimenti, mastrini e stampa causali
git-svn-id: svn://10.65.10.50/trunk@100 c028cbd2-c16b-5b4b-a496-9718f37d4682
1994-08-30 10:59:55 +00:00

300 lines
7.0 KiB
C++
Executable File

//Stampa causali
#include <mask.h>
#include <printapp.h>
#include <scanner.h>
#include <relation.h>
#include <tabutil.h>
#include <utility.h>
#include <lffiles.h>
#include <nditte.h>
#include <comuni.h>
#include <anagr.h>
#include <causali.h>
#include <rcausali.h>
#include "cg1.h"
#include "cg1700.h"
enum descr {causale, conto};
class CG1700_application : public TPrintapp
{
TLocalisamfile * _caus, * _rcaus, * _clifo, * _pcon, * _nditte, * _anag, * _com;
TRelation * _rel;
TCursor * _cur;
TMask * _msk;
TParagraph_string * _descr_causale, * _descr_conto;
TDate _data;
TString _cofi, _cap, _paiva, _ragsoc, _comunefis, _provfis, _viafis;
protected:
virtual void preprocess_header();
virtual bool preprocess_print(int,int);
virtual bool preprocess_page(int,int);
virtual bool set_print(int);
public:
void user_create() ;
void user_destroy();
void get_dati_ditta();
void setta_righe_descr(TParagraph_string*,enum descr);
int stampa_intestazione_ditta();
CG1700_application() {}
};
TRectype& leggi_com (const char * cod, TLocalisamfile *comuni)
{
comuni->zero();
comuni->put(COM_COM, cod);
comuni->read();
if (comuni->bad())
comuni->zero();
return comuni->curr();
}
void CG1700_application::get_dati_ditta()
{
TLocalisamfile nditte(LF_NDITTE);
TLocalisamfile anag(LF_ANAG);
TString codanagr;
TString tipoa;
nditte.zero();
nditte.put(NDT_CODDITTA, get_firm());
nditte.read();
if (nditte.bad()) nditte.zero();
codanagr = nditte.get(NDT_CODANAGR);
tipoa = nditte.get(NDT_TIPOA);
_ragsoc = nditte.get(NDT_RAGSOC);
anag.setkey(1);
anag.zero();
anag.put (ANA_TIPOA, tipoa);
anag.put (ANA_CODANAGR, codanagr);
anag.read();
if (anag.bad()) anag.zero();
_cofi = anag.get(ANA_COFI);
_paiva = anag.get(ANA_PAIV);
_comunefis = anag.get(ANA_COMRF);
if (_comunefis.empty())
_comunefis = anag.get(ANA_COMRES);
TRectype dep = leggi_com (_comunefis, _com);
_comunefis = dep.get(COM_DENCOM);
_provfis = dep.get(COM_PROVCOM);
_cap = dep.get(COM_CAPCOM);
if (_comunefis.empty())
{
_viafis = anag.get(ANA_INDRF);
_viafis.rtrim();
_viafis << " " << anag.get (ANA_CIVRF);
}
else
{
_viafis = anag.get(ANA_INDRES);
_viafis.rtrim();
_viafis << " " << anag.get (ANA_CIVRES);
}
}
int CG1700_application::stampa_intestazione_ditta()
{
int r = 1;
TString codice_ditta;
TString riga(132);
get_dati_ditta();
codice_ditta << get_firm();
set_header (r, "Ditta %s %s %s %s %s %s", (const char*)codice_ditta,
(const char*)_ragsoc, (const char*)_viafis,
(const char*)_cap, (const char*)_comunefis,
(const char*)_provfis);
r++;
printer().setdate(_data);
riga = "Data @< Pag. @#";
riga.right_just(127);
riga.overwrite (format ("Partita iva %s Codice fiscale %s", (const char*)_paiva, (const char*)_cofi));
set_header (r, "%s", (const char*) riga);
r++;
return r;
}
void CG1700_application::preprocess_header()
{
int r;
TString riga (132);
reset_header();
r = stampa_intestazione_ditta();
set_header(r, "ELENCO CAUSALI");
r++;
riga.fill('-');
set_header(r++, (const char*) riga);
//riga = "";
//set_header(r, (const char*) riga);
set_header(r++, "@5gDescrizione@30gTipo Codice@55gDescrizione@80gDes Reg. All. Mod Gest Num. Data Cau. Intr. Fat");
set_header(r++, "Cod. Causale@30gDoc. Conto@51gD/A Conto@80gAgg IVA IVA 770 Cesp Sald Doc. Doc. Rif. Op/v. Rit");
set_header(r++, (const char*) riga);
}
bool CG1700_application::preprocess_print(int file, int counter)
{
switch (file)
{
case LF_CAUSALI:
reset_print();
if (current_cursor()->items() == 0)
{
warning_box ("Non ci sono causali. La stampa e' annullata");
return FALSE;
}
set_wait_message("Stampa in corso");
break;
case LF_RCAUSALI:
break;
default:
break;
}
return TRUE;
}
bool CG1700_application::preprocess_page(int file,int count)
{
TString cau_descr, rcau_descr;
reset_print();
switch (file)
{
case LF_CAUSALI:
cau_descr = current_cursor()->file(LF_CAUSALI)->get(CAU_DESCR);
*_descr_causale = (const char*) cau_descr;
setta_righe_descr(_descr_causale,causale);
set_row(1, "@0g@3s", FLD(LF_CAUSALI,CAU_CODCAUS));
set_row(1, "@30g@2s", FLD(LF_CAUSALI,CAU_TIPODOC));
set_row(1, "@84g@3s", FLD(LF_CAUSALI,CAU_REG));
set_row(1, "@89g@f", FLD(LF_CAUSALI,CAU_ALLEG));
set_row(1, "@95g@1s", FLD(LF_CAUSALI,CAU_M770));
set_row(1, "@99g@1s", FLD(LF_CAUSALI,CAU_COLLCESP));
set_row(1, "@104g@1n", FLD(LF_CAUSALI,CAU_TIPOMOV));
set_row(1, "@108g@f", FLD(LF_CAUSALI,CAU_NUMDOC));
set_row(1, "@113g@f", FLD(LF_CAUSALI,CAU_DATADOC));
set_row(1, "@118g@3s", FLD(LF_CAUSALI,CAU_CODCAUSIM));
set_row(1, "@123g@f", FLD(LF_CAUSALI,CAU_INTRACOM));
set_row(1, "@126g@f", FLD(LF_CAUSALI,CAU_MOVVAL));
set_row(1, "@130g@f", FLD(LF_CAUSALI,CAU_RITFATT));
break;
case LF_RCAUSALI:
rcau_descr = current_cursor()->file(LF_RCAUSALI)->get(RCA_DESC);
*_descr_conto = (const char*) rcau_descr;
setta_righe_descr(_descr_conto,conto);
set_row (1, "@35g@3n", FLD(LF_RCAUSALI,RCA_GRUPPO));
set_row (1, "@39g@3n", FLD(LF_RCAUSALI,RCA_CONTO));
set_row (1, "@43g@6n", FLD(LF_RCAUSALI,RCA_SOTTOCONTO));
set_row (1, "@51g@1s", FLD(LF_RCAUSALI,RCA_SEZIONE));
set_row (1, "@80g@3s", FLD(LF_RCAUSALI,RCA_CODDESC));
break;
default:
break;
}
return TRUE;
}
void CG1700_application::setta_righe_descr(TParagraph_string* str, enum descr desc)
{
const char* r;
int i = 1;
TString frm;
switch (desc)
{
case causale:
frm = "@5g%s";
break;
case conto:
frm = "@55g%s";
break;
default:
break;
}
while ((r = str->get()) != NULL)
{
set_row (i, (const char*)frm, r);
i++;
}
}
bool CG1700_application::set_print(int)
{
KEY tasto;
tasto = _msk->run();
if (tasto == K_ENTER)
{
_data = _msk->get(F_DATASTAMPA);
return TRUE;
}
return FALSE;
}
void CG1700_application::user_create()
{
_msk = new TMask("cg1700a");
_rel = new TRelation (LF_CAUSALI);
_rel->add(LF_RCAUSALI,"CODCAUS=CODCAUS",1);
_cur = new TCursor (_rel,"", 1);
add_cursor(_cur);
_caus = new TLocalisamfile(LF_CAUSALI);
_rcaus = new TLocalisamfile(LF_RCAUSALI);
_com = new TLocalisamfile(LF_COMUNI);
_pcon = new TLocalisamfile(LF_PCON);
_clifo = new TLocalisamfile(LF_CLIFO);
_nditte = new TLocalisamfile(LF_NDITTE);
_anag = new TLocalisamfile(LF_ANAG);
_descr_conto = new TParagraph_string ("",23);
_descr_causale = new TParagraph_string ("",23);
add_file(LF_CAUSALI);
add_file(LF_RCAUSALI,LF_CAUSALI);
}
void CG1700_application::user_destroy()
{
delete _msk;
delete _cur;
delete _rel;
delete _clifo;
delete _caus;
delete _com;
delete _rcaus;
delete _pcon;
delete _nditte;
delete _anag;
delete _descr_conto;
delete _descr_causale;
}
int cg1700(int argc, char* argv[])
{
CG1700_application a;
a.run(argc, argv, "Stampa causali");
return 0;
}