campo-sirio/cg/cg1200.cpp
alex 5ba3a2cac4 Patch level : 10.0 430
Files correlati     : cg0.exe cg1.exe
Ricompilazione Demo : [ ]
Commento

Bug 0001462

Aggiungere secondi riga indirizzo di 35 caratteri nella scheda indirizzi presente nella’anagrafica clienti.
La seconda riga indirizzo deve essere inserita nella stampa clienti/fornitori (prospetto vendite)

Bug 0001463

il cliente segnala che gli indirizzi di spedizione del cliente 1, se vengono annullati tutti, al nuovo richiamo del cliente ricompaiono come prima.

Ho verificato che sul file indsped in realtà quegli indirizzi sono relativi al cliente 17 (e sono i primi del file). Il cliente 17 mi sembra formalmente valido.

l'area dati cui fare riferimento è nella cartella ftp://www.aga.it/Ilaria/20090928.zip [^]


git-svn-id: svn://10.65.10.50/trunk@19370 c028cbd2-c16b-5b4b-a496-9718f37d4682
2009-10-04 22:20:51 +00:00

990 lines
28 KiB
C++
Executable File

#include <config.h>
#include <execp.h>
#include <mask.h>
#include <mailbox.h>
#include <printapp.h>
#include <recarray.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;
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;
int _ges_ven;
TString _cod_from,_cod_to,_data_stampa,_cofi,_d_c_ric,_d_alleg;
TString _datanas,_comprov,_comnasc,_comune,_prov,_descpag;
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) ;
virtual bool 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 ---------------------------------- */
/* -------------------------------------------------------------------- */
bool 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();
*/
TToken_string str(txt);
TRectype clifo(LF_CLIFO);
clifo.put(CLI_TIPOCF, str.get(0));
clifo.put(CLI_CODCF, str.get());
return clifo.edit(LF_CLIFO, NULL, "cg0 -1");
}
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;
}
_descpag = get_field(LF_CLIFO, CLI_CODPAG);
_descpag = cache().get("%CPG", _descpag, "S0");
}
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)
{
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);
set_row(7,"@9g@s@15g#t",FLD(LF_CLIFO, CLI_CODPAG),&_descpag);
for(int i = 0; i < _interline; i++)
set_row(i+7,"");
}
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#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();
int i;
for (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_CLIFO,CLI_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("@17gIndirizzo aggiuntivo"));
set_row(15,FR("@17gTelefono @60gFax @102gRiduzione IVA"));
set_row(16,"@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 //
//////////////////////////////////////////////////
{
int row = 1;
set_row(row++,"@9g@pn @17g@s",FLD(LF_INDSP,IND_CODIND,"@@@"),
FLD(LF_INDSP,IND_RAGSOC));
set_row(row++,"@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(row++,"@17g@s",FLD(LF_INDSP,IND_INDIR2));
set_row(row++,"@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;
}