aggiunti file relativi al programma di emissione effetti e distinte
git-svn-id: svn://10.65.10.50/trunk@3972 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
78d2592a19
commit
f9e12e3dff
239
ef/dse.frm
Executable file
239
ef/dse.frm
Executable file
@ -0,0 +1,239 @@
|
||||
USE 31
|
||||
JOIN 14 INTO NPROGTR==NPROGTR
|
||||
JOIN 20 INTO TIPOCF=="C" CODCF==CODCF
|
||||
JOIN 13 TO 20 INTO COM==COMCF
|
||||
JOIN %BAN ALIAS 201 INTO CODTAB[1,5]==CODABI
|
||||
JOIN %BAN ALIAS 203 INTO CODTAB==CODABI+CODCAB
|
||||
JOIN %BAN ALIAS 202 INTO CODTAB==CODABIP+CODCABP
|
||||
END
|
||||
|
||||
DESCRIPTION
|
||||
BEGIN
|
||||
31->* "Effetti"
|
||||
14->* "Righe effetto"
|
||||
20->* "Clienti e Fornitori"
|
||||
13->* "Comuni"
|
||||
201@->* "Tabella banche"
|
||||
202@->* "Tabella banche"
|
||||
203@->* "Tabella banche"
|
||||
END
|
||||
|
||||
GENERAL
|
||||
BEGIN
|
||||
OFFSET 0 0
|
||||
FONT "Roman 17cpi"
|
||||
SIZE 12
|
||||
END
|
||||
|
||||
SECTION HEADER ODD 9
|
||||
|
||||
STRING 1 50
|
||||
BEGIN
|
||||
KEY "denominazione banca presentazione"
|
||||
PROMPT 5 1 ""
|
||||
FIELD 202@->S0
|
||||
END
|
||||
|
||||
STRING 2 20
|
||||
BEGIN
|
||||
KEY "scritta elenco riba"
|
||||
PROMPT 64 1 "ELENCO RI.BA. "
|
||||
END
|
||||
|
||||
NUMBER 3 8
|
||||
BEGIN
|
||||
KEY "numero di pagina"
|
||||
PROMPT 123 1 "pag. "
|
||||
MESSAGE _PAGENO
|
||||
END
|
||||
|
||||
STRING 4 20
|
||||
BEGIN
|
||||
KEY "scritta presentati il"
|
||||
PROMPT 5 3 "PRESENTATI IL : "
|
||||
END
|
||||
|
||||
DATA 5 10
|
||||
BEGIN
|
||||
KEY "data"
|
||||
PROMPT 0 0 ""
|
||||
FLAGS "AH"
|
||||
MESSAGE COPY,6
|
||||
END
|
||||
|
||||
DATA 6 10
|
||||
BEGIN
|
||||
KEY "data emissione"
|
||||
PROMPT 21 3 ""
|
||||
END
|
||||
|
||||
STRING 7 3
|
||||
BEGIN
|
||||
KEY "scritta DA"
|
||||
PROMPT 5 4 "DA "
|
||||
END
|
||||
|
||||
STRING 8 70
|
||||
BEGIN
|
||||
KEY "ditta"
|
||||
PROMPT 8 4 ""
|
||||
MESSAGE _DITTA,!RAGSOC
|
||||
END
|
||||
|
||||
STRING 9 20
|
||||
BEGIN
|
||||
KEY "scritta titolo righe del body"
|
||||
PROMPT 2 7 "DEBITORE O TRASSATO"
|
||||
END
|
||||
|
||||
STRING 10 10
|
||||
BEGIN
|
||||
KEY "scritta titolo righe del body"
|
||||
PROMPT 32 7 "INDIRIZZO"
|
||||
END
|
||||
|
||||
STRING 11 17
|
||||
BEGIN
|
||||
KEY "scritta titolo righe del body"
|
||||
PROMPT 62 7 "BANCA D'APPOGGIO"
|
||||
END
|
||||
|
||||
STRING 12 11
|
||||
BEGIN
|
||||
KEY "scritta titolo righe del body"
|
||||
PROMPT 94 7 "FATTURA DEL"
|
||||
END
|
||||
|
||||
STRING 13 8
|
||||
BEGIN
|
||||
KEY "scritta titolo righe del body"
|
||||
PROMPT 111 7 "SCADENZA"
|
||||
END
|
||||
|
||||
STRING 14 7
|
||||
BEGIN
|
||||
KEY "scritta titolo righe del body"
|
||||
PROMPT 129 7 "IMPORTO"
|
||||
END
|
||||
|
||||
STRING 15
|
||||
BEGIN
|
||||
KEY "riga separazione dalle righe del body"
|
||||
PROMPT 2 8 "---------------------------------------------------------------------------------------------------------------------------------------------"
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
SECTION BODY ODD 8
|
||||
|
||||
STRING 16 30 2
|
||||
BEGIN
|
||||
KEY "debitore"
|
||||
PROMPT 2 1 ""
|
||||
FIELD 20->RAGSOC
|
||||
END
|
||||
|
||||
STRING 18 30 2
|
||||
BEGIN
|
||||
KEY "indirizzo debitore"
|
||||
PROMPT 32 1 ""
|
||||
FIELD 20->INDCF
|
||||
END
|
||||
|
||||
STRINGA 19
|
||||
BEGIN
|
||||
KEY "LOCALITA"
|
||||
PROMPT 0 0 ""
|
||||
FLAGS "H"
|
||||
MESSAGE COPY,21
|
||||
FIELD 20->LOCALITACF
|
||||
END
|
||||
|
||||
STRINGA 20
|
||||
BEGIN
|
||||
KEY "PROV"
|
||||
PROMPT 0 0 ""
|
||||
FLAGS "H"
|
||||
MESSAGE APPEND,21
|
||||
FIELD 13->PROVCOM
|
||||
END
|
||||
|
||||
STRINGA 21 50
|
||||
BEGIN
|
||||
KEY "PIAZZA(LOCALITA+PROV)"
|
||||
PROMPT 32 2 ""
|
||||
END
|
||||
|
||||
STRING 22 30 2
|
||||
BEGIN
|
||||
KEY "banca d'appoggio denominazione"
|
||||
PROMPT 55 1 ""
|
||||
FIELD 201@->S0
|
||||
END
|
||||
|
||||
STRING 23 50 2
|
||||
BEGIN
|
||||
KEY "banca d'appoggio succursale"
|
||||
PROMPT 55 3 ""
|
||||
FIELD 203@->S0
|
||||
END
|
||||
|
||||
LISTA 28 8
|
||||
BEGIN
|
||||
KEY "a saldo/in conto"
|
||||
FIELD 31->ULTRATA
|
||||
PROMPT 95 1 ""
|
||||
ITEM " |IN CONTO"
|
||||
ITEM "X|A SALDO"
|
||||
END
|
||||
|
||||
STRING 24 17 5
|
||||
BEGIN
|
||||
KEY "dati fattura"
|
||||
PROMPT 92 2 ""
|
||||
MESSAGE _FATT,!DATIFATT
|
||||
END
|
||||
|
||||
DATA 26 10
|
||||
BEGIN
|
||||
KEY "data scadenza"
|
||||
PROMPT 112 1 ""
|
||||
FIELD 31->DATASCAD
|
||||
END
|
||||
|
||||
NUMERO 27 18
|
||||
BEGIN
|
||||
KEY "importo"
|
||||
PROMPT 122 1 ""
|
||||
FIELD 31->IMPORTO
|
||||
PICTURE "###.###.###.###,@@"
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
SECTION FOOTER ODD 2
|
||||
|
||||
STRING 25
|
||||
BEGIN
|
||||
KEY "riga separazione dalle righe del body"
|
||||
PROMPT 2 1 "---------------------------------------------------------------------------------------------------------------------------------------------"
|
||||
END
|
||||
|
||||
NUMERO 26 13
|
||||
BEGIN
|
||||
KEY "scritta n. documenti"
|
||||
PROMPT 5 2 "N. DOCUMENTI "
|
||||
MESSAGE _FOOTER,!NDOC
|
||||
END
|
||||
|
||||
NUMERO 28 18
|
||||
BEGIN
|
||||
KEY "Totale"
|
||||
PROMPT 111 2 "TOTALE "
|
||||
PICTURE "###.###.###.###,@@"
|
||||
MESSAGE _FOOTER,!TOTALE
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
END
|
503
ef/ef0500.cpp
Executable file
503
ef/ef0500.cpp
Executable file
@ -0,0 +1,503 @@
|
||||
#include <applicat.h>
|
||||
#include <form.h>
|
||||
#include <mask.h>
|
||||
#include <relation.h>
|
||||
#include <utility.h>
|
||||
#include <urldefid.h>
|
||||
#include <printer.h>
|
||||
#include <progind.h>
|
||||
#include <lffiles.h>
|
||||
#include <effetti.h>
|
||||
#include <reffetti.h>
|
||||
#include "ef0.h"
|
||||
#include "ef0301.h"
|
||||
#include "ef0500.h"
|
||||
|
||||
class TRiba_form;
|
||||
class TDistinta_form;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
// Classe per l'emissione di effetti e distinte su carta o su floppy //
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
class TEmissione: public TApplication
|
||||
{
|
||||
TMask* _msk;
|
||||
TRelation* _firmrel; // relazione di gestione dei dati della ditta corrente
|
||||
TLocalisamfile *_eff, *_reff, *_cession;
|
||||
TRiba_form *_formrb;
|
||||
TDistinta_form *_formdse;
|
||||
int _base_page_no; // numero della pagina base per la stampa del numero di pagina
|
||||
protected:
|
||||
virtual bool create(void);
|
||||
virtual bool destroy(void) ;
|
||||
virtual void on_firm_change(void);
|
||||
virtual bool menu(MENU_TAG);
|
||||
void conferma(void);
|
||||
virtual void print_rb(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis);
|
||||
virtual void print_dse(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis);
|
||||
virtual void print(void);
|
||||
void floppy(void);
|
||||
void aggiorna_rb(TCursor*);
|
||||
void aggiorna_dist(TCursor*);
|
||||
static bool annulla_handler(TMask_field& f, KEY k);
|
||||
public:
|
||||
int base_no() { return _base_page_no;}
|
||||
TEmissione() {};
|
||||
virtual ~TEmissione() {};
|
||||
};
|
||||
|
||||
// restituisce un riferimento all' applicazione
|
||||
inline TEmissione& app() { return (TEmissione&) main_app();}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
// Classe TRiba_form customizzata dalla Form per le Ri.Ba.//
|
||||
////////////////////////////////////////////////////////////
|
||||
class TRiba_form: public TForm
|
||||
{
|
||||
protected:
|
||||
virtual bool validate(TForm_item &, TToken_string &);
|
||||
public:
|
||||
TRiba_form(const char *);
|
||||
virtual ~TRiba_form(){};
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Classe TDistinta_form customizzata dalla Form per le Distinte //
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
class TDistinta_form: public TForm
|
||||
{
|
||||
TRelation *_firmrel; // relazione di gestione dei dati della ditta corrente
|
||||
TSorted_cursor *_cursor; // curosore che permette l'ordinamento degli effetti nella distinta
|
||||
protected: // per data scadenza o per dati fattura
|
||||
virtual bool validate(TForm_item &, TToken_string &);
|
||||
public:
|
||||
void set_order(const char tipo); // setta l'ordinamento del cursore
|
||||
virtual TCursor* cursor() const { return (TCursor*)_cursor;} // restituisce il cursore
|
||||
TDistinta_form(const char*, TRelation *);
|
||||
virtual ~TDistinta_form();
|
||||
};
|
||||
|
||||
// creazione dell'applicazione
|
||||
bool TEmissione::create()
|
||||
{
|
||||
TApplication::create();
|
||||
_formrb = NULL; // l'inizializzazione avviene nel metodo print()
|
||||
_formdse = NULL; // a seconda che si stampino le riba o la distinta
|
||||
_msk = new TMask("ef0500a");
|
||||
_firmrel= new TRelation(LF_NDITTE);
|
||||
_firmrel->add(LF_ANAG, "TIPOA=TIPOA|CODANAGR=CODANAGR");
|
||||
_firmrel->add(LF_UNLOC,"CODDITTA=CODDITTA"); // si posiziona sulla prima unita' locale della ditta
|
||||
_eff = new TLocalisamfile(LF_EFFETTI);
|
||||
_reff = new TLocalisamfile(LF_REFFETTI);
|
||||
_cession = new TLocalisamfile(LF_CESS);
|
||||
_msk->set_handler(DLG_CANCEL, annulla_handler);
|
||||
dispatch_e_menu(BAR_ITEM(1));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// distruzione dell'applicazione
|
||||
bool TEmissione::destroy()
|
||||
{
|
||||
if (_formrb) delete _formrb;
|
||||
if (_formdse) delete _formdse;
|
||||
delete _msk;
|
||||
delete _firmrel;
|
||||
delete _eff;
|
||||
delete _reff;
|
||||
delete _cession;
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
// carica la ditta corrente
|
||||
void TEmissione::on_firm_change()
|
||||
{
|
||||
TLocalisamfile &firmfile= _firmrel->lfile();
|
||||
firmfile.put("CODDITTA", get_firm());
|
||||
_firmrel->read();
|
||||
}
|
||||
|
||||
// carica la maschera per emissione effetti e distinte
|
||||
bool TEmissione::menu(MENU_TAG)
|
||||
{
|
||||
KEY key = K_ENTER;
|
||||
while (key != K_QUIT) // rimane in esecuzione finchè non si chiude la maschera
|
||||
{
|
||||
key = _msk->run();
|
||||
if (key == K_ENTER) // se si confermano i dati inseriti
|
||||
conferma();
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// gestisce la scelta fra le due possibili emissioni
|
||||
void TEmissione::conferma()
|
||||
{
|
||||
int tipoemis = _msk->get_int(F_TIPOEMIS);
|
||||
if (tipoemis == 1) // emissione su floppy
|
||||
floppy();
|
||||
else
|
||||
print(); // emissione su carta
|
||||
}
|
||||
|
||||
// gestione emissione su floppy
|
||||
void TEmissione::floppy()
|
||||
{
|
||||
}
|
||||
|
||||
// aggiorna, su file, numero e data di emissione ed il flag di stampa
|
||||
// su tutti gli effetti nel cursore
|
||||
void TEmissione::aggiorna_rb(TCursor* cur)
|
||||
{
|
||||
TLocalisamfile &eff = cur->file(LF_EFFETTI);
|
||||
for (*cur = 0; cur->pos() < cur->items(); ++(*cur))
|
||||
{
|
||||
TEffetto effetto = eff.curr();
|
||||
long numero = effetto.numero();
|
||||
effetto.put("NUMEMISS", numero);
|
||||
TDate data = _msk->get_date(F_DATAEMIS);
|
||||
effetto.put("DATAEMISS", data);
|
||||
bool cond = TRUE;
|
||||
effetto.put("EFFSTAMP", cond);
|
||||
effetto.rewrite(eff);
|
||||
}
|
||||
}
|
||||
|
||||
// aggiorna, su file, il flag di stampa della distinta
|
||||
// su tutti gli effetti nel cursore
|
||||
void TEmissione::aggiorna_dist(TCursor* cur)
|
||||
{
|
||||
TLocalisamfile &eff = cur->file(LF_EFFETTI);
|
||||
for (*cur = 0; cur->pos() < cur->items(); ++(*cur))
|
||||
{
|
||||
TEffetto effetto = eff.curr();
|
||||
bool cond = TRUE;
|
||||
effetto.put("DISTSTAM", cond);
|
||||
effetto.rewrite(eff);
|
||||
}
|
||||
}
|
||||
|
||||
// gestione emissione su carta delle riba
|
||||
void TEmissione::print_rb(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis)
|
||||
{
|
||||
TCursor* fcur = _formrb->cursor();
|
||||
TLocalisamfile &eff = fcur->file(LF_EFFETTI);
|
||||
TString16 filter;
|
||||
if (tipost == 'D') // se stampa definitiva effetti
|
||||
if (!_msk->get_bool(F_RIST)) // se non deve ristampare le riba
|
||||
filter = "EFFSTAMP=\" \""; // setta il filtro del cursore per ...
|
||||
fcur->setfilter(filter,TRUE); // ... stampare solo gli effetti non ancora stampati
|
||||
// setta la chiave 4 per il cursore per poter leggere tutti gli effetti della distinta
|
||||
fcur->setkey(4);
|
||||
TRectype darec(eff.curr()); // fissa i dati per la scelta degli ...
|
||||
darec.zero(); // ... effetti nel primo e nell'ultimo record del cursore
|
||||
darec.put("NDIST", ndist);
|
||||
darec.put("TIPODIST", tipodist);
|
||||
TRectype arec(darec);
|
||||
fcur->setregion(darec, arec);
|
||||
long n = fcur->items();
|
||||
fcur->freeze(); // congela lo stato del cursore
|
||||
// se la stampa non si fa a video istanzia puntatore per la gestione della barra di attesa
|
||||
for (int j=0; j < ncopie; j++)
|
||||
{
|
||||
TProgind* pi;
|
||||
if (!is_vis)
|
||||
pi = new TProgind(n,"Stampa Effetti/Distinte...",FALSE,TRUE,10);
|
||||
for (*fcur = 0; fcur->pos() < n; ++(*fcur)) // ciclo sugli elementi del cursore di stampa
|
||||
{
|
||||
if (!is_vis)
|
||||
pi->addstatus(1L); // aggiorna la barra d'attesa
|
||||
_formrb->print(); // stampa il form
|
||||
}
|
||||
}
|
||||
if (tipost == 'D') // se emetto riba in definitiva ...
|
||||
aggiorna_rb(fcur); // ... devo aggiornare data, numero emissine e flag di stampa effetto
|
||||
}
|
||||
|
||||
// gestione emissione su carta delle distinte
|
||||
void TEmissione::print_dse(char tipost, int ndist, char tipodist, int ncopie, const bool is_vis)
|
||||
{
|
||||
TCursor* fcur = _formdse->cursor();
|
||||
TLocalisamfile &eff = fcur->file(LF_EFFETTI);
|
||||
// setta la chiave 4 per il cursore per poter leggere tutti gli effetti della distinta
|
||||
TString16 filter;
|
||||
fcur->setfilter(filter,TRUE);
|
||||
fcur->setkey(4);
|
||||
TRectype darec(eff.curr()); // fissa i dati per la scelta degli ...
|
||||
darec.zero(); // ... effetti nel primo e nell'ultimo record del cursore
|
||||
darec.put("NDIST", ndist);
|
||||
darec.put("TIPODIST", tipodist);
|
||||
TRectype arec(darec);
|
||||
fcur->setregion(darec, arec);
|
||||
long n = fcur->items();
|
||||
fcur->freeze(); // congela lo stato del cursore
|
||||
// se la stampa non si fa a video istanzia puntatore per la gestione della barra di attesa
|
||||
for (int j=0; j < ncopie; j++)
|
||||
{
|
||||
TProgind* pi;
|
||||
if (!is_vis)
|
||||
pi = new TProgind(n,"Stampa Effetti/Distinte...",FALSE,TRUE,10);
|
||||
_base_page_no = 0;
|
||||
if (!is_vis)
|
||||
pi->addstatus(1L); // aggiorna la barra d'attesa
|
||||
_formdse->print(); // stampa il form
|
||||
_base_page_no = printer().getcurrentpage() -1; // stampa numero di pagina (solo nella distinta)
|
||||
}
|
||||
if (tipost == 'D') // se emetto distinta in definitiva ...
|
||||
aggiorna_dist(fcur); // ... devo aggiornare flag di stampa distinta
|
||||
}
|
||||
|
||||
// gestione emissione su carta
|
||||
void TEmissione::print()
|
||||
{
|
||||
int ncopie = _msk->get_int(F_NCOPIE);
|
||||
if (ncopie == 0) ncopie = 1;
|
||||
printer().open(); // apre la stampante
|
||||
const bool is_vis = printer().printtype() == screenvis; // TRUE se si stampa a video
|
||||
int emis = _msk->get_int(F_EMIS);
|
||||
int ndist = _msk->get_int(F_NUMBER);
|
||||
char tipodist = _msk->get(F_TIPODIST)[0];
|
||||
_eff->put("TIPODIST",tipodist);
|
||||
_eff->put("NDIST",ndist);
|
||||
_eff->put("NRIGADIST",1);
|
||||
_eff->setkey(4);
|
||||
_eff->read();
|
||||
long codabi = _eff->get_long("CODABIP");
|
||||
char tipost = _msk->get(F_TIPOST)[0];
|
||||
char tipord = _msk->get(F_TIPORD)[0];
|
||||
// se emetto riba istanzio il form per le riba
|
||||
// se emetto distinta istanzio il form per le distinte
|
||||
if (emis == 1) // emetto riba
|
||||
{
|
||||
TString16 nomeform;
|
||||
nomeform.format("rb%05ld.frm",codabi);// compongo il nome del form
|
||||
if (!fexist(nomeform)) // ne controllo l'esistenza
|
||||
nomeform = "rb.frm"; // se non esiste utilizzo il form generico
|
||||
_formrb = new TRiba_form(nomeform);
|
||||
print_rb(tipost,ndist,tipodist,ncopie,is_vis);
|
||||
}
|
||||
else // emetto distinta
|
||||
{
|
||||
TString16 nomeform;
|
||||
nomeform.format("dse%05ld.frm",codabi);// compongo il nome del form
|
||||
if (!fexist(nomeform)) // ne controllo l'esistenza
|
||||
nomeform = "dse.frm"; // se non esiste utilizzo il form generico
|
||||
_formdse = new TDistinta_form(nomeform, _firmrel);
|
||||
_formdse->set_order(tipord);
|
||||
print_dse(tipost,ndist,tipodist,ncopie,is_vis);
|
||||
}
|
||||
printer().close(); // chiude la stampante
|
||||
}
|
||||
|
||||
// handler per gestire la conferma dell'annullamento dei dati inseriti nella maschera
|
||||
bool TEmissione::annulla_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask &m = f.mask();
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
if (yesno_box("Vuoi veramete annullare i dati inseriti"))
|
||||
m.reset();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// costruttore classe TRiba_form
|
||||
TRiba_form::TRiba_form(const char* name): TForm()
|
||||
{
|
||||
read(name);
|
||||
}
|
||||
|
||||
// gestione dei messaggi estesi nei campi
|
||||
bool TRiba_form::validate(TForm_item &cf, TToken_string &s)
|
||||
{
|
||||
const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio
|
||||
TString valore;
|
||||
if (code == "_FATT")
|
||||
{
|
||||
// gestione dei campi relativi alle/a fatture/a a cui si riferisce un effetto
|
||||
// sintassi: _FATT,<macro>
|
||||
// dove: <macro> è uno delle macro seguenti:
|
||||
// "!A" fattura o fatture
|
||||
// "!DATI" numero e data fattura
|
||||
// "!IMPFATT" importo fattura
|
||||
TCursor* fcur = cursor();
|
||||
TLocalisamfile &eff = fcur->file(LF_EFFETTI);
|
||||
TEffetto effetto = eff.curr();
|
||||
long num = effetto.numero();
|
||||
bool condition = (effetto.fatt(num));
|
||||
TToken_string* dati = effetto.dati_fatt(num);
|
||||
TString in(s.get());
|
||||
if (in[0]=='!')
|
||||
{
|
||||
in.ltrim(1);
|
||||
// "!A" se 1 sola fattura stampa 'a' altrimenti stampa 'e'
|
||||
if (in == "A")
|
||||
{
|
||||
if (condition)
|
||||
cf.set("a");
|
||||
else
|
||||
cf.set("e");
|
||||
}
|
||||
// "!DATIFATT" stampa numero e data fattura delle fatture a cui si riferisce l'effetto
|
||||
if (in == "DATIFATT")
|
||||
{
|
||||
int elem = dati->items();
|
||||
TString descfatt;
|
||||
for (int i = 0; i < elem; i+=3)
|
||||
{
|
||||
descfatt << dati->get(i);
|
||||
descfatt << " ";
|
||||
descfatt << dati->get(i+1);
|
||||
descfatt << " ";
|
||||
cf.set(descfatt);
|
||||
}
|
||||
}
|
||||
// "!IMPFATT" se 1 sola fattura ne stampa l' importo
|
||||
if (in == "IMPFATT")
|
||||
{
|
||||
if (condition)
|
||||
cf.set(dati->get(2));
|
||||
}
|
||||
}
|
||||
valore = cf.get();
|
||||
cf.put_paragraph(valore);
|
||||
cf.set("");
|
||||
return (TRUE);
|
||||
} // fine _FATT
|
||||
return TForm::validate(cf, s);
|
||||
}
|
||||
|
||||
// costruttore classe TDistinta_form
|
||||
TDistinta_form::TDistinta_form(const char* name, TRelation *rel): TForm(), _firmrel(rel)
|
||||
{
|
||||
read(name);
|
||||
_cursor = NULL;
|
||||
}
|
||||
|
||||
// setta l'ordinamento del TSordet_cursor del form
|
||||
void TDistinta_form::set_order(const char tipo)
|
||||
{
|
||||
TString ordine;
|
||||
// ordinamento secondo la data di scadenza dell'effetto
|
||||
if (tipo == 'S') ordine = "DATASCAD|TIPODIST|NDIST|NRIGADIST";
|
||||
// ordinamento seconda il numero e la data della fattura
|
||||
else if (tipo == 'F') ordine = "14->NFATT|TIPODIST|NDIST|NRIGADIST";
|
||||
|
||||
_cursor = new TSorted_cursor(relation(),ordine);
|
||||
}
|
||||
|
||||
// distruttore classe TDistinta_form
|
||||
TDistinta_form::~TDistinta_form()
|
||||
{
|
||||
if (_cursor) delete _cursor;
|
||||
}
|
||||
|
||||
// gestione dei messaggi estesi nei campi
|
||||
bool TDistinta_form::validate(TForm_item &cf, TToken_string &s)
|
||||
{
|
||||
const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio
|
||||
TString valore;
|
||||
if (code == "_DITTA")
|
||||
{
|
||||
// gestione di campi della ditta corrente
|
||||
// sintassi: _DITTA,<macro>
|
||||
// dove: <macro> è uno delle macro seguenti:
|
||||
// "!RAGSOC" ragione sociale
|
||||
TString in(s.get());
|
||||
if (in[0]=='!')
|
||||
{
|
||||
in.ltrim(1);
|
||||
// "!RAGSOC" prende la ragione sociale della ditta corrente
|
||||
if (in=="RAGSOC") cf.set(_firmrel->lfile().get("RAGSOC"));
|
||||
}
|
||||
valore = cf.get();
|
||||
cf.put_paragraph(valore);
|
||||
cf.set("");
|
||||
return (TRUE);
|
||||
} // fine _DITTA
|
||||
if (code == "_FATT")
|
||||
{
|
||||
// gestione dei campi relativi alle fatture a cui si riferisce un effetto
|
||||
// sintassi: _FATT,<macro>
|
||||
// dove: <macro> è uno delle macro seguenti:
|
||||
// "!DATI" numero e data fattura
|
||||
TCursor* fcur = cursor();
|
||||
TLocalisamfile &eff = fcur->file(LF_EFFETTI);
|
||||
TEffetto effetto = eff.curr();
|
||||
long num = effetto.numero();
|
||||
TToken_string* dati = effetto.dati_fatt(num);
|
||||
int elem = dati->items();
|
||||
TString descfatt;
|
||||
TString in(s.get()); // prende il primo parametro, il codice del messaggio
|
||||
if (in[0]=='!')
|
||||
{
|
||||
in.ltrim(1);
|
||||
// "!DATIFATT" stampa numero e data fattura delle fatture a cui si riferisce l'effetto
|
||||
if (in == "DATIFATT")
|
||||
{
|
||||
for (int i = 0; i < elem; i+=3)
|
||||
{
|
||||
descfatt << dati->get(i);
|
||||
descfatt << " ";
|
||||
descfatt << dati->get(i+1);
|
||||
descfatt << " ";
|
||||
cf.set(descfatt);
|
||||
}
|
||||
}
|
||||
}
|
||||
valore = cf.get();
|
||||
cf.put_paragraph(valore);
|
||||
cf.set(""); // resetta il campo per la prossima stampa di questo item
|
||||
return (TRUE);
|
||||
} // fine _FATT
|
||||
if (code == "_FOOTER")
|
||||
{
|
||||
// gestione dei campi del fondo pagina della distinta
|
||||
// sintassi: _FOOTER,<macro>
|
||||
// dove: <macro> è uno delle macro seguenti:
|
||||
// "!NDOC" numero riba nella distinta
|
||||
// "!TOTALE" totale presentato
|
||||
TString in(s.get()); // prende il primo parametro, il codice del messaggio
|
||||
if (in[0]=='!')
|
||||
{
|
||||
in.ltrim(1);
|
||||
TCursor* fcur = cursor();
|
||||
long i = fcur->items();
|
||||
//"!NDOC" prende il numero riba nella distinta guardando quanti elementi ha il cursore di stampa
|
||||
if (in == "NDOC")
|
||||
cf.set(format("%ld",i));
|
||||
//"!TOTALE" calcola il totale presentato prendendo i totale degli effetti nel cursore di stampa
|
||||
if (in == "TOTALE")
|
||||
{
|
||||
long totale = 0;
|
||||
TLocalisamfile &eff = fcur->file(LF_EFFETTI);
|
||||
for (*fcur = 0; fcur->pos() < i; ++(*fcur))
|
||||
{
|
||||
TEffetto effetto = eff.curr();
|
||||
long imp = effetto.importo();
|
||||
totale +=imp;
|
||||
}
|
||||
cf.set(format("%ld",totale));
|
||||
}
|
||||
}
|
||||
valore = cf.get();
|
||||
cf.put_paragraph(valore);
|
||||
cf.set("");
|
||||
return (TRUE);
|
||||
} // fine _FOOTER
|
||||
if (code== "_PAGENO")
|
||||
{
|
||||
// messaggio per stampare il numero di pagina corrente
|
||||
TString16 pg; pg << int(printer().getcurrentpage() - app().base_no());
|
||||
cf.set(pg); cf.put_paragraph(pg);
|
||||
cf.set("");
|
||||
}
|
||||
return TForm::validate(cf, s);
|
||||
}
|
||||
|
||||
int ef0500(int argc, char* argv[])
|
||||
{
|
||||
TEmissione a ;
|
||||
a.run(argc, argv, "Emissione Effetti e Distinte");
|
||||
return 0;
|
||||
}
|
17
ef/ef0500.h
Executable file
17
ef/ef0500.h
Executable file
@ -0,0 +1,17 @@
|
||||
#ifndef __EF0500_H
|
||||
#define __EF0500_H
|
||||
|
||||
#define F_TIPODIST 101
|
||||
#define F_NUMBER 102
|
||||
#define F_NUMBERRIGA 103
|
||||
#define F_TIPOEMIS 104
|
||||
#define F_EMIS 105
|
||||
#define F_UNITA 106
|
||||
#define F_FOR_OUT 107
|
||||
#define F_NCOPIE 108
|
||||
#define F_TIPORD 109
|
||||
#define F_TIPOST 110
|
||||
#define F_DATAEMIS 111
|
||||
#define F_RIST 112
|
||||
|
||||
#endif //__EF0500_H
|
150
ef/ef0500a.uml
Executable file
150
ef/ef0500a.uml
Executable file
@ -0,0 +1,150 @@
|
||||
#include "ef0500.h"
|
||||
|
||||
PAGE "Emissione Effetti" -1 -1 78 20
|
||||
|
||||
GROUPBOX DLG_NULL 77 3
|
||||
BEGIN
|
||||
PROMPT 1 0 ""
|
||||
END
|
||||
|
||||
LIST F_TIPODIST 18
|
||||
BEGIN
|
||||
PROMPT 2 1 "Tipo Distinta "
|
||||
KEY 4
|
||||
ITEM "I| All'incasso"
|
||||
ITEM "B| Salvo buon fine"
|
||||
ITEM "S| Allo sconto"
|
||||
END
|
||||
|
||||
NUMBER F_NUMBER 7
|
||||
BEGIN
|
||||
PROMPT 45 1 "Numero Distinta "
|
||||
FLAGS "R"
|
||||
KEY 4
|
||||
USE LF_EFFETTI KEY 4 SELECT NRIGADIST = 1
|
||||
INPUT NDIST F_NUMBER
|
||||
INPUT TIPODIST F_TIPODIST
|
||||
INPUT NRIGADIST F_NUMBERRIGA
|
||||
DISPLAY "Nr. distinta" NDIST
|
||||
DISPLAY "Tipo distinta" TIPODIST
|
||||
OUTPUT F_NUMBER NDIST
|
||||
OUTPUT F_TIPODIST TIPODIST
|
||||
OUTPUT F_NUMBERRIGA NRIGADIST
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
/* CAMPO NASCOSTO CHE SERVE PER LA RICERCA */
|
||||
LIST F_NUMBERRIGA 12
|
||||
BEGIN
|
||||
PROMPT 1 60 "Numero Riga Distinta"
|
||||
KEY 4
|
||||
ITEM "1|PRIMA RIGA"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
RADIOBUTTON F_TIPOEMIS 32
|
||||
BEGIN
|
||||
PROMPT 25 3 "Tipo Emissione "
|
||||
ITEM "1| Emissione RI.BA. su floppy"
|
||||
MESSAGE DISABLE,2@|DISABLE,4@|DISABLE,5@
|
||||
MESSAGE ENABLE,1@
|
||||
ITEM "2| Emissione RI.BA. su carta"
|
||||
MESSAGE DISABLE,1@
|
||||
MESSAGE ENABLE,2@
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 77 3
|
||||
BEGIN
|
||||
PROMPT 1 7 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
LIST F_UNITA 9
|
||||
BEGIN
|
||||
PROMPT 2 8 "Unità di output "
|
||||
ITEM "A| Drive A"
|
||||
ITEM "B| Drive B"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
LIST F_FOR_OUT 7
|
||||
BEGIN
|
||||
PROMPT 45 8 "Formato unità output "
|
||||
ITEM "1|360 Kb"
|
||||
ITEM "2|720 Kb"
|
||||
ITEM "3|1,2 Mb"
|
||||
ITEM "4|1,44 Mb"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 77 5
|
||||
BEGIN
|
||||
PROMPT 1 10 ""
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
LIST F_EMIS 20
|
||||
BEGIN
|
||||
PROMPT 2 11 "Emissione "
|
||||
ITEM "1| Emissione effetti"
|
||||
MESSAGE DISABLE,4@|ENABLE,5@
|
||||
ITEM "2| Emissione distinta"
|
||||
MESSAGE ENABLE,4@|DISABLE,5@
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
NUMBER F_NCOPIE 3
|
||||
BEGIN
|
||||
PROMPT 2 12 "Numero copie "
|
||||
NUM_EXPR {(#THIS_FIELD >= 0)}
|
||||
WARNING "Il numero di copie deve essere positivo"
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
LIST F_TIPORD 14
|
||||
BEGIN
|
||||
PROMPT 2 13 "Tipo Ordinamento "
|
||||
ITEM "S| Scadenza "
|
||||
ITEM "F| Fattura "
|
||||
GROUP 4
|
||||
END
|
||||
|
||||
LIST F_TIPOST 14
|
||||
BEGIN
|
||||
PROMPT 45 12 "Tipo di Stampa "
|
||||
ITEM "P| Provvisoria"
|
||||
ITEM "D| Definitiva"
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_RIST
|
||||
BEGIN
|
||||
PROMPT 45 13 "Ristampo RI.BA."
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
DATA F_DATAEMIS
|
||||
BEGIN
|
||||
PROMPT 2 15 "Data Emissione "
|
||||
FLAGS "A"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 9 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 9 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
191
ef/rb.frm
Executable file
191
ef/rb.frm
Executable file
@ -0,0 +1,191 @@
|
||||
USE 31
|
||||
JOIN 14 INTO NPROGTR==NPROGTR
|
||||
JOIN 20 INTO TIPOCF=="C" CODCF==CODCF
|
||||
JOIN 13 TO 20 ALIAS 113 INTO COM==COMCF
|
||||
JOIN %BAN ALIAS 201 INTO CODTAB[1,5]==CODABI
|
||||
JOIN %BAN ALIAS 203 INTO CODTAB==CODABI+CODCAB
|
||||
JOIN 13 TO 203@ ALIAS 213 INTO COM==S5
|
||||
JOIN %BAN ALIAS 202 INTO CODTAB==CODABIP+CODCABP
|
||||
END
|
||||
|
||||
DESCRIPTION
|
||||
BEGIN
|
||||
31->* "Effetti"
|
||||
14->* "Righe effetto"
|
||||
20->* "Clienti e Fornitori"
|
||||
113@->* "Comuni"
|
||||
213@->* "Comuni"
|
||||
201@->* "Tabella banche"
|
||||
202@->* "Tabella banche"
|
||||
203@->* "Tabella banche"
|
||||
END
|
||||
|
||||
GENERAL
|
||||
BEGIN
|
||||
OFFSET 0 0
|
||||
FONT "Roman 17cpi"
|
||||
SIZE 12
|
||||
END
|
||||
|
||||
SECTION BODY ODD 19
|
||||
|
||||
DATA 1 10
|
||||
BEGIN
|
||||
KEY "data scadenza"
|
||||
PROMPT 50 2 ""
|
||||
FIELD 31->DATASCAD
|
||||
FORMAT "2444/"
|
||||
END
|
||||
|
||||
NUMERO 2 18
|
||||
BEGIN
|
||||
KEY "importo"
|
||||
PROMPT 70 2 ""
|
||||
FIELD 31->IMPORTO
|
||||
PICTURE "###.###.###.###,@@"
|
||||
END
|
||||
|
||||
STRING 3 50
|
||||
BEGIN
|
||||
KEY "denominazione banca di presentazione"
|
||||
PROMPT 27 7 ""
|
||||
FIELD 202@->S0
|
||||
END
|
||||
|
||||
NUMERO 4 56
|
||||
BEGIN
|
||||
KEY "importo in lettere"
|
||||
PROMPT 27 6 ""
|
||||
FIELD 31->IMPORTO
|
||||
PICTURE "(*,*)LETTERE@44"
|
||||
END
|
||||
|
||||
LISTA 5 4
|
||||
BEGIN
|
||||
KEY "a saldo/in conto"
|
||||
FIELD 31->ULTRATA
|
||||
PROMPT 27 10 ""
|
||||
ITEM " |########"
|
||||
ITEM "X|"
|
||||
END
|
||||
|
||||
LISTA 6 4
|
||||
BEGIN
|
||||
KEY "a saldo/in conto"
|
||||
FIELD 31->ULTRATA
|
||||
PROMPT 27 11 ""
|
||||
ITEM " |"
|
||||
ITEM "X|########"
|
||||
END
|
||||
|
||||
STRING 7 1
|
||||
BEGIN
|
||||
KEY "lettera a/e a seconda che la fattura raggruppata/o no"
|
||||
PROMPT 35 10 ""
|
||||
MESSAGE _FATT,!A
|
||||
END
|
||||
|
||||
STRING 8 1
|
||||
BEGIN
|
||||
KEY "lettera a/e a seconda che la fattura raggruppata/o no"
|
||||
PROMPT 43 10 ""
|
||||
MESSAGE _FATT,!A
|
||||
END
|
||||
|
||||
STRING 9 17 5
|
||||
BEGIN
|
||||
KEY "dati fattura"
|
||||
PROMPT 48 10 ""
|
||||
MESSAGE _FATT,!DATIFATT
|
||||
END
|
||||
|
||||
NUMERO 10 18
|
||||
BEGIN
|
||||
KEY "importo fattura"
|
||||
PROMPT 73 10 ""
|
||||
MESSAGE _FATT,!IMPFATT
|
||||
END
|
||||
|
||||
STRING 11 30 2
|
||||
BEGIN
|
||||
KEY "ragione sociale debitore"
|
||||
PROMPT 31 14 ""
|
||||
FIELD 20->RAGSOC
|
||||
END
|
||||
|
||||
STRING 13 32
|
||||
BEGIN
|
||||
KEY "indirizzo debitore"
|
||||
PROMPT 31 16 ""
|
||||
FIELD 20->INDCF
|
||||
END
|
||||
|
||||
STRING 14 5
|
||||
BEGIN
|
||||
KEY "CAP debitore"
|
||||
PROMPT 31 17 ""
|
||||
FIELD 20->CAPCF
|
||||
END
|
||||
|
||||
STRING 15 22
|
||||
BEGIN
|
||||
KEY "localita debitore"
|
||||
PROMPT 38 17 ""
|
||||
FIELD 20->LOCALITACF
|
||||
END
|
||||
|
||||
STRING 16 2
|
||||
BEGIN
|
||||
KEY "provincia debitore"
|
||||
PROMPT 61 17 ""
|
||||
FIELD 113@->PROVCOM
|
||||
END
|
||||
|
||||
STRING 17 27 2
|
||||
BEGIN
|
||||
KEY "istituto banca d'appoggio"
|
||||
PROMPT 1 14 ""
|
||||
FIELD 201@->S0
|
||||
END
|
||||
|
||||
STRING 18 27 2
|
||||
BEGIN
|
||||
KEY "denominazione banca d'appoggio"
|
||||
PROMPT 1 16 ""
|
||||
FIELD 203@->S0
|
||||
END
|
||||
|
||||
STRINGA 19
|
||||
BEGIN
|
||||
KEY "via banca appoggio"
|
||||
PROMPT 0 0 ""
|
||||
FLAGS "H"
|
||||
MESSAGE COPY,21
|
||||
FIELD 203@->S2
|
||||
END
|
||||
|
||||
STRINGA 20
|
||||
BEGIN
|
||||
KEY "n. civico banca appoggio"
|
||||
PROMPT 0 0 ""
|
||||
FLAGS "H"
|
||||
MESSAGE APPEND,21
|
||||
FIELD 203@->S7
|
||||
END
|
||||
|
||||
STRING 21 27
|
||||
BEGIN
|
||||
KEY "indirizzo banca d'appoggio"
|
||||
PROMPT 1 18 ""
|
||||
END
|
||||
|
||||
STRING 22 27
|
||||
BEGIN
|
||||
KEY "localita banca d'appoggio"
|
||||
PROMPT 1 19 ""
|
||||
FIELD 213@->DENCOM
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
END
|
Loading…
x
Reference in New Issue
Block a user