campo-sirio/cg/cg1200.cpp
alex 981678913a Patch level : 2.0.369
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Riportata la versione P@rtners  2.0 patch 349


git-svn-id: svn://10.65.10.50/trunk@10709 c028cbd2-c16b-5b4b-a496-9718f37d4682
2002-12-20 17:08:30 +00:00

984 lines
28 KiB
C++
Executable File

#include <config.h>
#include <execp.h>
#include <mask.h>
#include <mailbox.h>
#include <printapp.h>
#include <tabutil.h>
#include <utility.h>
#include <comuni.h>
#include <cfven.h>
#include <clifo.h>
#include <indsp.h>
#include <mov.h>
#include <nditte.h>
#include <pconti.h>
#include "cg1.h"
#include "cg1200a.h"
#include "cg1200b.h"
#define COMRF_ALIAS 50
#define COMNASC_ALIAS 51
enum pt { undefined = 0, elenco = 1, rubriche = 2, etichette = 3, vendite = 4 };
enum pw { clienti = 1, fornitori = 2, both = 3 };
bool mask2_reset_fields(TMask_field& mf, KEY k);
class TPrintclifo_app : public TPrintapp
{
friend bool mask2_reset_fields(TMask_field& mf, KEY k);
pt _pr_type;
pw _pr_what;
TRelation* _rel;
int _cur_1, _cur_2;
int _sort;
int _interline;
bool _mov_only;
int _ges_ven;
TLocalisamfile* _mov;
TLocalisamfile* _comuni;
// etichette
int _startrow, _rows_et, _cols_et, _startcol;
// variable field slots
TString _piva,_cpercip,_fax,_telex,_email,_name,_telefono,_indir,_localita;
TString _cod_from,_cod_to,_data_stampa,_cofi,_d_c_ric,_d_alleg;
TString _datanas,_comprov,_comnasc,_comune,_prov;
long _codice;
char _tipocf,_tipoaper;
bool _gia_iniziati_fornitori;
TString tmp; // Stringa per porcate galattiche
public:
// @cmember Disabilita la verifica del modulo : essendo una anagrafica, va sempre abilitata
virtual bool check_autorization() const
{return FALSE;}
virtual void on_firm_change();
virtual bool preprocess_page(int file, int counter);
virtual bool preprocess_print(int file, int counter);
virtual print_action postprocess_print(int file, int counter);
virtual void preprocess_header();
virtual bool user_create();
virtual bool user_destroy();
virtual bool set_print(int);
int ccur() { return _sort == 1 ? _cur_1 : _cur_2; }
const char* look_tab(const char* tabname, TString& cod,
const char* fld = "S0");
const char* get_field(int ln, const char* fn)
{ return current_cursor()->curr(ln).get(fn); }
virtual void set_page (int file, int counter);
bool ges_ven();
void set_elenco();
void set_rubriche();
void set_etichette();
void set_vendite(int f, int c) ;
void process_link(int id, const char* txt);
void ultimo_codice(char tipo);
const char* compatta_ragsoc(TString& ragsoc,char tipoaper);
void header_elenco();
void header_rubriche();
TRectype& look_comuni(const TString&, const TString&);
const char* descrizione_conto_ric(int,int,long);
const char* descrizione_allegato(char,long);
TPrintclifo_app() : TPrintapp(),_piva(18), _cpercip(10), _fax(50), _telex(50),
_name(60), _telefono(90), _indir(70), _localita(90), _ges_ven(-1)
{
_rel = NULL; _pr_type = undefined; _startrow = 2; _startcol = 3;
_rows_et = 9; _cols_et = 40;
}
};
/* -------------------------------------------------------------------- */
/* ---------------------------- Code ---------------------------------- */
/* -------------------------------------------------------------------- */
void TPrintclifo_app::process_link(int id, const char* txt)
{
TString ss = "1|";
ss << txt;
TMessage fs("cg0 -1", MSG_LN, ss);
TMailbox m;
m.send(fs);
TExternal_app cg0("cg0 -1");
if (cg0.run()) beep();
}
const char* TPrintclifo_app::look_tab(const char* tabname, TString& cod,
const char* fld)
{
TTable tab(tabname);
tab.curr().zero();
tab.curr().put("CODTAB",cod);
tab.read();
if (tab.bad()) tab.curr().zero();
return tab.curr().get(fld);
}
const char* TPrintclifo_app::descrizione_conto_ric(int gruppo, int conto, long sottoc)
{
TLocalisamfile pconti(LF_PCON);
pconti.setkey(1);
pconti.zero();
pconti.put(PCN_GRUPPO, gruppo);
pconti.put(PCN_CONTO, conto);
pconti.put(PCN_SOTTOCONTO, sottoc);
pconti.read();
if (pconti.bad())
pconti.zero();
tmp = pconti.get(PCN_DESCR);
return tmp;
}
const char* TPrintclifo_app::descrizione_allegato(char tipocf,long cod)
{
TLocalisamfile clifo(LF_CLIFO);
clifo.setkey(1);
clifo.zero();
clifo.put(CLI_TIPOCF, tipocf);
clifo.put(CLI_CODCF , cod);
clifo.read();
if (clifo.bad())
clifo.zero();
_tipoaper = clifo.get_char(CLI_TIPOAPER);
tmp = clifo.get(CLI_RAGSOC);
return tmp;
}
TRectype& TPrintclifo_app::look_comuni(const TString& stato, const TString& cod)
{
_comuni->zero();
_comuni->put(COM_COM, cod);
_comuni->put(COM_STATO, stato);
_comuni->read();
if (_comuni->bad())
_comuni->zero();
return _comuni->curr();
}
bool TPrintclifo_app::preprocess_page(int file, int counter)
{
TString s;
int g_ric,c_ric;
long s_ric,codall;
switch (file)
{
case LF_CLIFO:
{
if (_mov_only)
{
const TString16 tipocf(get_field(LF_CLIFO,CLI_TIPOCF));
const TString16 codice(get_field(LF_CLIFO,CLI_CODCF));
_mov->curr().zero();
_mov->curr().put(MOV_TIPO, tipocf);
_mov->curr().put(MOV_CODCF, codice);
_mov->read();
if (_mov->get(MOV_TIPO) != tipocf ||
_mov->get(MOV_CODCF) != codice)
return FALSE;
}
_tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
// set variable fields
_cofi = get_field(LF_CLIFO, CLI_COFI);
//_piva = get_field(LF_CLIFO, CLI_COFI);
//if (_piva.empty()) _piva = get_field(LF_CLIFO, CLI_PAIV);
_piva = get_field(LF_CLIFO, CLI_PAIV);
_telefono = get_field(LF_CLIFO, CLI_PTEL);
if (!_telefono.empty()) _telefono << "/";
_telefono << get_field(LF_CLIFO, CLI_TEL) << " ";
s = get_field(LF_CLIFO, CLI_PTEL2);
if (!s.empty()) s << "/";
_telefono << s << get_field(LF_CLIFO, CLI_TEL2) << " ";
s = get_field(LF_CLIFO, CLI_PTEL3);
if (!s.empty()) s << "/";
_telefono << s << get_field(LF_CLIFO, CLI_TEL3);
_fax = get_field(LF_CLIFO, CLI_PFAX);
if (!_fax.empty()) _fax << "/";
_fax << get_field(LF_CLIFO, CLI_FAX);
_telex = get_field(LF_CLIFO, CLI_PTELEX);
if (!_telex.empty()) _telex << "/";
_telex << get_field(LF_CLIFO, CLI_TELEX);
_email = get_field(LF_CLIFO, CLI_MAIL);
const int at = _email.find('@');
if (at > 0) _email.insert("@", at); // Raddoppia la chiocciola!
_indir = get_field(LF_CLIFO, CLI_INDCF);
g_ric = atoi(get_field(LF_CLIFO, CLI_GRUPPORIC));
c_ric = atoi(get_field(LF_CLIFO, CLI_CONTORIC));
s_ric = atol(get_field(LF_CLIFO, CLI_SOTTOCRIC));
codall = atol(get_field(LF_CLIFO, CLI_CODALLEG));
_datanas = get_field(LF_CLIFO, CLI_DATANASC);
const TString16 tipoaper(get_field(LF_CLIFO, CLI_TIPOAPER));
_d_alleg = "";
if (codall != 0)
{
_d_alleg = descrizione_allegato(_tipocf,codall);
if (_tipoaper == 'F')
{
TString surname = _d_alleg.mid(30,50); surname.trim();
_d_alleg = _d_alleg.mid(0,30); _d_alleg.trim();
_d_alleg << " " << surname;
}
}
_d_c_ric = descrizione_conto_ric(g_ric,c_ric,s_ric);
_d_c_ric = _d_c_ric.mid(0,31);
_d_alleg = _d_alleg.mid(0,26);
if (!_indir.empty()) _indir << " ";
_indir << get_field(LF_CLIFO, CLI_CIVCF);
_localita = get_field(LF_CLIFO, CLI_LOCCF);
if (!_localita.empty())
_localita.trim();
//modifica del 27/04/1995
TString16 comcf = get_field(LF_CLIFO, CLI_COMCF);
TString16 stacf = get_field(LF_CLIFO, CLI_STATOCF);
TRectype com = look_comuni(stacf,comcf);
_comune.cut(0);
_comprov.cut(0);
if (_localita.not_empty())
{
_comune << _localita << " ";
_comprov = _comune;
}
if (com.empty())
_prov = "";
else
{
_comprov << com.get(COM_DENCOM);
_comprov << " ";
_comprov << com.get(COM_PROVCOM);
_comune << (com.get(COM_DENCOM));
_comune = _comune.left(20);
_prov = com.get(COM_PROVCOM);
}
TString16 comnasc = get_field(LF_CLIFO, CLI_COMNASC);
TString16 stanasc = get_field(LF_CLIFO, CLI_STATONASC);
TRectype comn = look_comuni(stanasc, comnasc);
_comnasc = (comn.get(COM_DENCOM)).left(29);
_comnasc << " ";
_comnasc << comn.get(COM_PROVCOM);
//fine modifica
_name = get_field(LF_CLIFO, CLI_RAGSOC);
s = get_field(LF_CLIFO, CLI_CODANAGPER);
_cpercip = "";
if (s.not_empty()) _cpercip << tipoaper << " " << s;
if (tipoaper == "F")
{
TString surname = _name.mid(30,50); surname.trim();
_name = _name.mid(0,30); _name.trim();
_name << " " << surname;
}
switch(_pr_type)
{
case elenco:
case rubriche:
if (_pr_what == both)
if (_tipocf == 'F' && !_gia_iniziati_fornitori)
{
_gia_iniziati_fornitori = TRUE;
printer().formfeed();
}
break;
default:
break;
}
}
break;
case LF_INDSP:
current_cursor()->items();
if (atoi(get_field(LF_INDSP,IND_CODIND)) == 0)
return FALSE;
_telefono = get_field(LF_INDSP, IND_PTEL);
if (!_telefono.empty()) _telefono << "/";
_telefono << get_field(LF_INDSP, IND_TEL);
_fax = get_field(LF_INDSP, IND_PFAX);
if (!_fax.empty()) _fax << "/";
_fax << get_field(LF_INDSP, IND_FAX);
_localita = get_field(LF_INDSP,IND_LOCALITA);
if (!_localita.empty())
_localita << " - ";
_comuni->curr().zero();
_comuni->curr().put(COM_STATO,get_field(LF_INDSP,IND_STATO));
_comuni->curr().put(COM_COM,get_field(LF_INDSP,IND_COM));
_comuni->read();
_localita << _comuni->curr().get(COM_DENCOM);
_localita << " ";
_localita << _comuni->curr().get(COM_PROVCOM);
break;
default:
break;
}
return TRUE;
}
print_action TPrintclifo_app::postprocess_print(int file, int counter)
{
/*
static bool more = FALSE;
if (_pr_what == both)
{
if (more)
{
more = FALSE;
select_cursor(ccur());
return NEXT_PAGE;
}
else
{
more = TRUE;
select_cursor(ccur());
return REPEAT_PAGE;
}
}
*/
return NEXT_PAGE;
}
bool rdbtype_handler(TMask_field& f, KEY k)
{
if (k == K_TAB)
//every time that change focus or value, check flag to enable button
{
TPrintclifo_app& a = (TPrintclifo_app&)main_app();
if (a.ges_ven())
f.mask().enable(BUT_CG12_VENDITE);
else
f.mask().disable(BUT_CG12_VENDITE);
}
return TRUE;
}
bool mask_ctrl_handler(TMask_field& mf, KEY k)
{
if (k == K_SPACE)
{
mf.set_focusdirty(FALSE);
return mf.mask().stop_run(mf.dlg());
}
return TRUE;
}
// set printrows
void TPrintclifo_app::set_page(int file, int counter)
{
switch(_pr_type)
{
case elenco:
if (file == LF_CLIFO)
set_elenco();
break;
case rubriche:
if (file == LF_CLIFO)
set_rubriche();
break;
case etichette:
if (file == LF_CLIFO)
set_etichette();
break;
case vendite:
set_vendite(file, counter);
default:
break;
}
}
void TPrintclifo_app::ultimo_codice(char tipocf)
{
TLocalisamfile clifo(LF_CLIFO);
char tipopr = tipocf;
clifo.setkey(1);
clifo.zero();
clifo.put(CLI_TIPOCF,tipocf);
for (clifo.read();!clifo.eof();clifo.next())
{
char tipo = clifo.get_char(CLI_TIPOCF);
if (tipo != tipopr) break;
_codice = clifo.get_long(CLI_CODCF);
}
}
const char* TPrintclifo_app::compatta_ragsoc(TString& ragsoc,char tipoa)
{
if (tipoa == 'F')
{
TString80 cognome, nome;
cognome = ragsoc.mid(0,30);
nome = ragsoc.mid(30,20);
cognome.trim(); nome.trim();
ragsoc = cognome;
ragsoc << " " << nome;
}
tmp = ragsoc;
return tmp;
}
void TPrintclifo_app::preprocess_header()
{
switch(_pr_type)
{
case elenco:
header_elenco();
break;
case rubriche:
header_rubriche();
break;
default:
break;
}
}
void TPrintclifo_app::header_elenco()
{
reset_header();
// intestazione
const long firm = get_firm();
TString var;
int j = 1;
char tipocf;
TLocalisamfile ditte(LF_NDITTE);
ditte.zero();
ditte.put(NDT_CODDITTA, firm);
ditte.read();
if (ditte.bad()) ditte.zero();
TString s(ditte.get(NDT_RAGSOC));
set_header(j, FR("Ditta %ld %s@125gPag @#"), firm, (const char*) s);
set_header(j++, FR("@102gData %s"), (const char*) _data_stampa);
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
if (tipocf == 'C')
var = TR("Clienti");
else
if (tipocf == 'F')
var = TR("Fornitori");
set_header(j, FR("Elenco %s"),(const char*) var);
if (_sort == 1)
var = TR("Ordine di codice");
else
var = TR("Ordine alfabetico");
set_header(j, "@30g%s", (const char*) var);
if (_mov_only)
set_header(j, FR("@55gSolo i movimentati"));
ultimo_codice(_tipocf);
set_header(j++, FR("@102gUltimo cod.utilizzato %ld") , _codice);
if (_pr_what != both)
{
if (_cod_from.not_empty() || _cod_to.not_empty())
{
set_header(j, TR("Estremi selezione"));
if (_cod_from.not_empty())
set_header(j, FR(" da %s"), (const char*) _cod_from);
if (_cod_to.not_empty())
set_header(j, FR(" a %s"), (const char*) _cod_to);
j++;
}
}
set_header(j++, (const char *)(TString(132).fill('-')));
set_header(j++, TR(" Codice Ragione sociale"));
set_header(j++, FR("@9gIndirizzo@56gC.A.P.@63gLocalita'"));
set_header(j++, FR("@9gTelefoni@90gFAX @115gTelex"));
set_header(j++, FR("@9gIndirizzo posta elettronica"));
set_header(j++, FR("@9gLuogo di nascita@45gData@56gPartita IVA Codice fiscale"));
set_header(j++, FR("@9gConto di costo/ricavo@56gCodice allegato@90gPercipiente 770"));
set_header(j, (const char *)(TString(132).fill('-')));
}
void TPrintclifo_app::header_rubriche()
{
reset_header();
// intestazione
const long firm = get_firm();
TString var;
int j = 1;
char tipocf;
TLocalisamfile ditte(LF_NDITTE);
ditte.zero();
ditte.put(NDT_CODDITTA, firm);
ditte.read();
if (ditte.bad()) ditte.zero();
TString s(ditte.get(NDT_RAGSOC));
set_header(j, FR("Ditta %ld %s@125gPag @#"), firm, (const char*) s);
set_header(j++, FR("@102gData %s"), (const char*) _data_stampa);
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
if (tipocf == 'C')
var = TR("Clienti");
else
if (tipocf == 'F')
var = TR("Fornitori");
set_header(j, FR("Rubrica %s"),(const char*) var);
if (_sort == 1)
var = TR("Ordine di codice");
else
var = TR("Ordine alfabetico");
set_header(j, "@30g%s", (const char*) var);
if (_mov_only)
set_header(j, FR("@55gSolo i movimentati"));
ultimo_codice(_tipocf);
set_header(j++, FR("@102gUltimo cod.utilizzato %ld") , _codice);
if (_pr_what != both)
{
if (_cod_from.not_empty() || _cod_to.not_empty())
{
set_header(j, TR("Estremi selezione"));
if (_cod_from.not_empty())
set_header(j, FR(" da %s"), (const char*) _cod_from);
if (_cod_to.not_empty())
set_header(j, FR(" a %s"), (const char*) _cod_to);
j++;
}
}
set_header(j++, (const char *)(TString(132).fill('-')));
set_header(j++, FR(" Codice Ragione sociale@60gIndirizzo@100gC.A.P.@106gLocalita'@127gProv."));
set_header(j++, FR("@9gPartita iva@25gTelefoni"));
set_header(j++, (const char *)(TString(132).fill('-')));
}
void TPrintclifo_app::set_elenco()
{
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF),
FLD(LF_CLIFO, CLI_CODCF,"@@@@@@"), &_name);
set_row(2,"@9g#t@56g@s@63g#t", &_indir, FLD(LF_CLIFO, CLI_CAPCF),&_comprov);
set_row(3,"@9g#t@90g#t@115g#t", &_telefono, &_fax, &_telex);
set_row(4,"@9g#t", &_email);
set_row(5,"@9g#t@45g#t@56g#t@69g#t",&_comnasc, &_datanas, &_piva,&_cofi);
set_row(6,"@9g@3n @3n @6n #t@56g@t #t@90g#t",FLD(LF_CLIFO,CLI_GRUPPORIC),
FLD(LF_CLIFO,CLI_CONTORIC), FLD(LF_CLIFO, CLI_SOTTOCRIC),&_d_c_ric,
FLD(LF_CLIFO, CLI_CODALLEG), &_d_alleg, &_cpercip);
for(int i = 0; i < _interline; i++)
set_row(i+6,"");
}
void TPrintclifo_app::set_rubriche()
{
// body
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO,CLI_TIPOCF),
FLD(LF_CLIFO,CLI_CODCF,"@@@@@@"), &_name);
//set_row(1,"@60g#t@100g@s@106g#t@127g@s", &_indir, FLD(LF_CLIFO, CLI_CAPCF),
// &_localita, FLD(-COMRF_ALIAS,COM_PROVCOM));
set_row(1,"@60g#t@100g@s@106g#t@127g#t", &_indir, FLD(LF_CLIFO, CLI_CAPCF), &_comune, &_prov);
set_row(2,"@9g#t@25g#t", &_piva,&_telefono);
for(int i = 0; i < _interline; i++)
set_row(i+4,"");
}
bool mask2_reset_fields(TMask_field& mf, KEY k)
{
if (k == K_SPACE)
{
TPrintclifo_app& a = (TPrintclifo_app&)main_app();
TMask& m = mf.mask();
m.set(FLD_CGB_STARTROW, a._startrow);
m.set(FLD_CGB_STARTCOL, a._startcol);
m.set(FLD_CGB_ROWSET,a._rows_et);
m.set(FLD_CGB_COLSET, a._cols_et);
}
return TRUE;
}
void TPrintclifo_app::set_etichette()
{
int r=_startrow;
TString loccf=get_field(LF_CLIFO,CLI_LOCCF);
reset_header();
for (int i = 1; i < _startrow; i++)
set_row(i,"");
set_row(r++, format("@%dg#-%dt",_startcol, _cols_et - _startcol),
&_name);
set_row(r++, format("@%dg#-%dt",_startcol, _cols_et - _startcol),
&_indir);
if (!loccf.empty())
set_row(r++,format("@%dg#-%dt",_startcol, _cols_et - _startcol), &_localita);
set_row(r++, format("@%dg@5s @%ds @2s",_startcol,
_cols_et - _startcol - 9),
FLD(LF_CLIFO, CLI_CAPCF),
FLD(-COMRF_ALIAS, COM_DENCOM),
FLD(-COMRF_ALIAS, COM_PROVCOM));
for (i = r; i <= _rows_et; i++)
set_row(i,"");
}
void TPrintclifo_app::set_vendite(int f, int c)
{ TString* rigs = new TString(132);
rigs->fill('-');
reset_header();
// intestazione
const long firm = get_firm();
TLocalisamfile ditte(LF_NDITTE);
ditte.zero();
ditte.put(NDT_CODDITTA, firm);
ditte.read();
if (ditte.bad()) ditte.zero();
TString s(ditte.get(NDT_RAGSOC));
switch (f)
{
case LF_CFVEN:
/////////////////////////////////
// Prints CFVEN information //
/////////////////////////////////
set_header(1, FR("Ditta %ld %s @102gData @<@125gPag @#"), firm, (const char*) s);
set_header(2, FR("Dati Clienti/Fornitori per Vendite"));
set_header(3, (const char *)(TString(132).fill('-')));
set_header(4,FR(" Codice Ragione sociale"));
set_header(5,FR("@9gNote Cli/For @25gLegale per contenz. @46gCat.Finanziaria @63gCat.Vendita @76gAss.Fiscale @93gZona @101gAgente @112gProvvigione"));
set_header(6,FR("@9gCod.Listino @25gCod. Magazzino @46gSpese da Addeb. @63gBolli @76gSpese incasso") );
set_header(7,FR("@9gCli/For ass. @25gCod. Meccanografico @46gGest. Contratto @63gRid. Iva @76gUltimo sollecito @93gUltimo estr. conto @112gTitolo onorifico"));
set_header(8,FR("@9gSconto @46gSconto Cliente@63gFatt. Sosp. @76gVs. Lettera Esenzione @112gNs. Lettera Esenz."));
set_header(9,FR("@9gCod. ABI p.e. @25gCod. CAB p.e. @46gInd. Effetti @63gEmiss. Eff. @76gImporto Minimo @93gEffetti non acc. @112gScadenza effetti"));
set_header(10,FR("@9gInd.Documento @25gInd. Spedizione @46gNote Documento @63gCod.Mezzo @76gPorto @93gVettori"));
set_header(11,FR("@9gRaggr. ordini @25gImporto Minimo @46gImporto Massimo @63gPriorita ev. @76gTipo Evasione"));
set_header(12, (const char *)(TString(132).fill('-')));
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF),
FLD(LF_CLIFO, CLI_CODCF,"@@@@@@"), &_name);
set_row(2,"@9g@2s @25g@2s @46g@2s @63g@2s @76g@2s @93g@2s @101g@3s @112g@n",
FLD(LF_CFVEN, CFV_CODNOTE),FLD(LF_CFVEN,CFV_CODLEG),
FLD(LF_CFVEN,CFV_CATFIN),FLD(LF_CFVEN,CFV_CATVEN),
FLD(LF_CFVEN,CFV_ASSFIS),FLD(LF_CFVEN,CFV_CODZONA),
FLD(LF_CFVEN,CFV_CODAG),FLD(LF_CFVEN,CFV_PERCPROVV));
set_row(3,"@9g@5s @25g@3s @46g@3s @3s @3s @3s @63g@f @76g@n ",
FLD(LF_CFVEN,CFV_CODLIST),FLD(LF_CFVEN,CFV_CODMAG),
FLD(LF_CFVEN,CFV_CODSP1),FLD(LF_CFVEN,CFV_CODSP2),
FLD(LF_CFVEN,CFV_CODSP3),FLD(LF_CFVEN,CFV_CODSP4),
FLD(LF_CFVEN,CFV_ADDBOLLI),
FLD(LF_CFVEN,CFV_PERCSPINC));
set_row(4,"@9g@pn @25g@s @46g@f @63g@f @76g@d @93g@d @112g@2s",
FLD(LF_CFVEN,CFV_CODCFASS,"@@@@@@"),
FLD(LF_CFVEN,CFV_CODPRCF),FLD(LF_CFVEN,CFV_GESTCONTR),
FLD(LF_CFVEN,CFV_IVARID),FLD(LF_CFVEN,CFV_DATAESC),
FLD(LF_CFVEN,CFV_DATASOLL),FLD(LF_CFVEN,CFV_TITOLO));
set_row(5,"@9g@25s @46g@4s @63g@f @76g@s del @d @112g@s del @d",
FLD(LF_CFVEN,CFV_SCONTO),
FLD(LF_CFVEN,CFV_CODSCC),FLD(LF_CFVEN,CFV_FATTSOSP),
FLD(LF_CFVEN,CFV_VSNRPROT),FLD(LF_CFVEN,CFV_VSDATAREG),
FLD(LF_CFVEN,CFV_NSNPROT),FLD(LF_CFVEN,CFV_NSDATAREG));
set_row(6,"@9g@5pn @25g@5pn @46g@3,rn @63g@f @76g@pn @93g@s @112g@s",
FLD(LF_CFVEN,CFV_CODABIPR,"@@@@@"),
FLD(LF_CFVEN,CFV_CODCABPR,"@@@@@"),
FLD(LF_CFVEN,CFV_CODINDEFF),FLD(LF_CFVEN,CFV_EMEFFRICH),
FLD(LF_CFVEN,CFV_IMPMINEFF,"."),
FLD(LF_CFVEN,CFV_NONACCEFF),
FLD(LF_CFVEN,CFV_NONSCADEFF));
set_row(7,"@9g@3,rn @25g@3,rn @46g@2s @53g@2s @63g@2s @76g@2s @93g@3pn @96g@3pn @103g@3pn",
FLD(LF_CFVEN,CFV_CODINDDOC),FLD(LF_CFVEN,CFV_CODINDSP),
FLD(LF_CFVEN,CFV_CODNOTESP1),FLD(LF_CFVEN,CFV_CODNOTESP2),
FLD(LF_CFVEN,CFV_CODSPMEZZO),FLD(LF_CFVEN,CFV_CODPORTO),
FLD(LF_CFVEN,CFV_CODVETT1,"@@@"),
FLD(LF_CFVEN,CFV_CODVETT2,"@@@"),
FLD(LF_CFVEN,CFV_CODVETT3,"@@@"));
set_row(8,"@9g@s @25g@15,rpn @46g@15,rpn @63g@n @76g@2s",
FLD(LF_CFVEN,CFV_RAGGOR),FLD(LF_CFVEN,CFV_MINORD,"."),
FLD(LF_CFVEN,CFV_MAXORD,"."),FLD(LF_CFVEN,CFV_PREVORD),
FLD(LF_CFVEN,CFV_TIPOEVORD));
if (current_cursor()->is_first_match(LF_INDSP))
{ // Test whether there are any Addresses. If so, prints
// the header.
set_row(9,"");
set_row(10,FR("@9gIndirizzi di Spedizione"));
set_row(11,"@9g%t",rigs);
set_row(12,FR("@9gCodice @17gRagione Sociale"));
set_row(13,FR("@17gIndirizzo @65gC.A.P. @72gLocalita"));
set_row(14,FR("@17gTelefono @60gFax @102gRiduzione IVA"));
set_row(15,"@9g%t",rigs);
} else
for (int i=0;i<_interline;i++)
set_row(i+9,"");
break;
/////////////////////////////////////////
// End of printing CFVEN information //
/////////////////////////////////////////
case LF_INDSP:
//////////////////////////////////////////////////
// Prints INDSP information for each customer //
//////////////////////////////////////////////////
set_row(1,"@9g@pn @17g@s",FLD(LF_INDSP,IND_CODIND,"@@@"),
FLD(LF_INDSP,IND_RAGSOC));
set_row(2,"@17g@s @s @65g@s @72g#t",FLD(LF_INDSP,IND_INDIR),
FLD(LF_INDSP,IND_CIV),FLD(LF_INDSP,IND_CAP), &_localita);
set_row(3,"@17g#t @60g#t @102g@f",&_telefono,&_fax,
FLD(LF_INDSP,IND_IVARID));
current_cursor()->save_status();
if (!current_cursor()->next_match(LF_INDSP))
for (int i=0;i<_interline;i++)
set_row(i+4,"");
else
set_row(4,"");
current_cursor()->restore_status();
/////////////////////////////////////////
// End of printing INDSP information //
/////////////////////////////////////////
break;
default:
break;
}
delete rigs;
}
bool TPrintclifo_app::set_print(int)
{
disable_links();
set_multiple_link(FALSE);
TMask mask("cg1200a.msk");
mask.set_handler(RDB_CG12_TYPE, rdbtype_handler);
mask.set_handler(BUT_CG12_ELENCO, mask_ctrl_handler);
mask.set_handler(BUT_CG12_RUBRICHE, mask_ctrl_handler);
mask.set_handler(BUT_CG12_ETICHETTE, mask_ctrl_handler);
mask.run();
force_setpage(FALSE);
// set print type
switch (mask.last_key())
{
case K_ESC:
case K_QUIT:
return FALSE;
break;
case BUT_CG12_ELENCO:
_pr_type = elenco;
break;
case BUT_CG12_ETICHETTE:
{
TMask mask2("cg1200b.msk");
/* TBI read/save from - to config file */
_pr_type = etichette;
mask2.set_handler(BUT_CGB_RESET, mask2_reset_fields);
mask2.field(FLD_CGB_ROWSET).set(format("%d",_rows_et));
mask2.field(FLD_CGB_COLSET).set(format("%d",_cols_et));
mask2.field(FLD_CGB_STARTROW).set(format("%d",_startrow));
mask2.field(FLD_CGB_STARTCOL).set(format("%d",_startcol));
// set defaults
if (mask2.run() == K_ESC)
return FALSE;
_startrow = atoi(mask2.get(FLD_CGB_STARTROW));
_startcol = atoi(mask2.get(FLD_CGB_STARTCOL));
_rows_et = atoi(mask2.get(FLD_CGB_ROWSET));
_cols_et = atoi(mask2.get(FLD_CGB_COLSET));
force_setpage();
break;
}
case BUT_CG12_RUBRICHE:
_pr_type = rubriche;
break;
case BUT_CG12_VENDITE:
_pr_type = vendite;
force_setpage();
break;
}
if (_pr_type != etichette)
{
set_multiple_link(TRUE);
enable_link(TR("Collegamento clienti e fornitori : "), 'b');
}
_sort = mask.get_int(RDB_CG12_SORT);
_pr_what = (pw) mask.get_int(RDB_CG12_TYPE);
_interline = mask.get_int(LST_CG12_INTERLINE);
_mov_only = mask.get_bool(CHK_CG12_MOVIM);
char tipoafr = mask.get(F_TIPOAPERFR)[0];
char tipoato = mask.get(F_TIPOAPERTO)[0];
TDate data_stampa (mask.get(F_DATA_STAMPA));
_data_stampa = data_stampa.string();
_codice = 0;
select_cursor(ccur());
TRectype tr1(current_cursor()->curr());
tr1.zero();
TRectype tr2(tr1);
if (_pr_what != both)
{
// filter
tr1.put(CLI_TIPOCF, _pr_what == clienti ? "C" : "F");
tr2.put(CLI_TIPOCF, _pr_what == clienti ? "C" : "F");
short fromid, toid;
TString16 nome_campo;
if (_sort == 1)
{
fromid = (_pr_what == clienti) ? FLD_CLI_CODFR : FLD_FOR_CODFR;
toid = (_pr_what == clienti) ? FLD_CLI_CODTO : FLD_FOR_CODTO;
nome_campo = CLI_CODCF;
}
else
{
fromid = (_pr_what == clienti) ? FLD_CLI_RAGSOCFR : FLD_FOR_RAGSOCFR;
toid = (_pr_what == clienti) ? FLD_CLI_RAGSOCTO : FLD_FOR_RAGSOCTO;
nome_campo = CLI_RAGSOC;
}
TString cod_from(mask.get(fromid));
TString cod_to(mask.get(toid));
if (cod_from.not_empty()) tr1.put(nome_campo, cod_from);
if (cod_to.not_empty()) tr2.put(nome_campo, cod_to);
if (_sort == 1)
{
_cod_from = cod_from;
_cod_to = cod_to;
}
else
{
_cod_from = compatta_ragsoc(cod_from,tipoafr);
_cod_to = compatta_ragsoc(cod_to,tipoato);
}
}
current_cursor()->setregion(tr1, tr2);
return TRUE;
}
bool TPrintclifo_app::preprocess_print(int file, int counter)
{
reset_print();
if (_pr_type == undefined)
return set_print(counter);
if (file == LF_CLIFO)
if (_pr_what == both)
_gia_iniziati_fornitori = FALSE;
return TRUE;
}
void TPrintclifo_app::on_firm_change()
{
TConfig c(CONFIG_DITTA, "cg");
_ges_ven = c.get_bool("GesVen");
}
bool TPrintclifo_app::ges_ven()
{
if (_ges_ven < 0)
on_firm_change();
return _ges_ven != 0;
}
bool TPrintclifo_app::user_create()
{
// set relation and cursors
_rel = new TRelation(LF_CLIFO);
_rel->add(LF_COMUNI, "STATO==STATOCF|COM==COMCF", 1, 0, COMRF_ALIAS);
_rel->add(LF_COMUNI, "STATO==STATONASC|COM==COMNASC", 1, 0, COMNASC_ALIAS);
if (ges_ven())
{
_rel->add(LF_CFVEN,"TIPOCF=TIPOCF|CODCF=CODCF");
_rel->add(LF_INDSP,"TIPOCF=TIPOCF|CODCF=CODCF");
}
_mov = new TLocalisamfile(LF_MOV); _mov->setkey(3);
_comuni = new TLocalisamfile(LF_COMUNI);
_cur_1 = add_cursor(new TCursor(_rel,"",1));
_cur_2 = add_cursor(new TCursor(_rel,"",2));
add_file(LF_CLIFO);
if (ges_ven())
{
add_file(LF_CFVEN,LF_CLIFO);
add_file(LF_INDSP,LF_CLIFO);
}
set_magic_currency(TRUE);
enable_print_menu();
return TRUE;
}
bool TPrintclifo_app::user_destroy()
{
if (_rel)
delete _rel;
delete _mov;
delete _comuni;
return TRUE;
}
int cg1200(int argc, char* argv[])
{
TPrintclifo_app app;
app.run(argc, argv, TR("Stampa Clienti/Fornitori"));
return 0;
}