aggiunta file programma "stampe di controllo"

git-svn-id: svn://10.65.10.50/trunk@4061 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
paola 1997-01-11 11:43:34 +00:00
parent 8f8009969c
commit c2763f2977
3 changed files with 823 additions and 0 deletions

593
ef/ef0600.cpp Executable file
View File

@ -0,0 +1,593 @@
#include <config.h>
#include <execp.h>
#include <mask.h>
#include <printapp.h>
#include <tabutil.h>
#include <utility.h>
#include <relation.h>
#include <real.h>
#include <printer.h>
#include <effetti.h>
#include <reffetti.h>
#include <clifo.h>
#include "ef0600.h"
enum pt {undefined = 0, scadenza = 1, banca = 2, distinta = 3};
class TPrint_effetti_app : public TPrintapp
{
pt _pr_type;
TRelation* _rel;
int _cur_1, _cur_2, _cur_3;
int _interline, i;
TString _ban, _cli, _val, _data_stampa, _ban_prec;
long _dist_prec;
TDate _scad_prec;
real _tot_data, _tot_mese, _tot_banca, _tot_distinta, _tot_stampa;
bool _prima_volta;
public:
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();
void header_scadenza();
void header_banca();
void header_distinta();
virtual bool user_create();
virtual bool user_destroy();
virtual bool set_print(int);
virtual void set_page (int file, int counter);
void set_scadenza();
void set_banca();
void set_distinta();
const char* get_field(int ln, const char* fn) {return current_cursor()->curr(ln).get(fn);}
const char* look_tab(const char* tabname, TString& cod,const char* fld="S0");
TPrint_effetti_app() : TPrintapp(), _ban(11), _ban_prec(11), _cli(60), _val(3){_rel = NULL; _interline = 1;}
};
void TPrint_effetti_app::preprocess_header()
{
reset_header();
const long firm = get_firm();
int j = 1;
TLocalisamfile ditte(LF_NDITTE);
ditte.zero();
ditte.put("CODDITTA", firm);
ditte.read();
if (ditte.bad()) ditte.zero();
TString s(ditte.get("RAGSOC"));
set_header(j, "Ditta: %ld %s@125gPag @#", firm, (const char*) s);
set_header(j++, "@102gData %s", (const char*) _data_stampa);
switch(_pr_type)
{
case scadenza:
header_scadenza();
break;
case banca:
header_banca();
break;
case distinta:
header_distinta();
break;
default:
break;
}
}
void TPrint_effetti_app::header_scadenza()
{
int j =1;
set_header(j, "@52gSTAMPA RI.BA. PER SCADENZA"); j++;
set_header(j++, (const char *)(TString(132).fill('-')));
set_header(j++, " Scadenza Banca Cliente N.Riba N.Dist Importo Val N.Rata St.Def. Fattura del. N.");
set_header(j, (const char *)(TString(132).fill('-')));
}
void TPrint_effetti_app::header_banca()
{
int j = 1;
set_header(j, "@45gSTAMPA RI.BA. PER BANCHE DI PRESENTAZIONE"); j++;
set_header(j++, (const char *)(TString(132).fill('-')));
set_header(j++, " Banca Scadenza Cliente N.Riba N.Dist Importo Val. N.Rata St.Def. Fattura del. N.");
set_header(j, (const char *)(TString(132).fill('-')));
}
void TPrint_effetti_app::header_distinta()
{
int j = 1;
set_header(j, "@55gSTAMPA RI.BA. PER DISTINTE"); j++;
set_header(j++, (const char *)(TString(132).fill('-')));
set_header(j++, " Distinta ");
set_header(j++, "@1gTipo Num. N.Riba Scadenza Banca Cliente Importo Val. N.Rata St.Def. Fattura del. N.");
set_header(j, (const char *)(TString(132).fill('-')));
}
print_action TPrint_effetti_app::postprocess_print(int file, int counter)
{
TString s;
TPrintrow pr;
TPrinter& p = printer();
if (_tot_data != 0.0)
{
pr.put("-------------------------------------------",50);
p.print(pr);
pr.reset();
pr.put("Totale",52);
pr.put(_scad_prec.string(),60);
pr.put(_tot_data.string("###.###.##@,@@"),72);
p.print(pr);
_tot_data = 0.0;
pr.reset();
}
if(_tot_mese != 0.0)
{
pr.put("Totale ",50);
pr.put(itom(_scad_prec.month()),57);
pr.put(_tot_mese.string("###.###.##@,@@"),72);
p.print(pr);
_tot_mese = 0.0;
pr.reset();
}
if (_tot_banca != 0.0)
{
pr.put("Totale",50);
s = (look_tab("%BAN",_ban_prec));
if (s.empty())
s = "Nessuna Banca ";
s = s.left(20);
pr.put(s,57);
pr.put(_tot_banca.string("###.###.##@,@@"),72);
p.print(pr);
_tot_banca = 0.0;
pr.reset();
}
if (_tot_distinta != 0.0)
{
pr.put("Totale",50);
s << "Distinta " << _dist_prec;
if (_dist_prec == 0)
s = "Nessuna Distinta ";
pr.put(s,57);
pr.put(_tot_distinta.string("###.###.##@,@@"),72);
p.print(pr);
_tot_distinta = 0.0;
pr.reset();
}
if (_tot_stampa != 0.0)
{
pr.put("-----------------------------------------------------------------------------------------------------------------------------------",1);
p.print(pr);
pr.reset();
pr.put("Totale Ri.Ba. stampate",50);
pr.put(_tot_stampa.string("###.###.##@,@@"),72);
p.print(pr);
_tot_stampa = 0.0;
pr.put("-----------------------------------------------------------------------------------------------------------------------------------",1);
p.print(pr);
pr.reset();
p.print(pr);
}
return NEXT_PAGE;
}
void TPrint_effetti_app::set_page(int file, int counter)
{
switch(_pr_type)
{
case scadenza:
if (file == LF_EFFETTI)
set_scadenza();
break;
case banca:
if (file == LF_EFFETTI)
set_banca();
break;
case distinta:
if (file == LF_EFFETTI)
set_distinta();
break;
default:
break;
}
}
void TPrint_effetti_app::set_scadenza()
{
set_row(1,"@1g@s@13g#t@26g#t@50g@pn@59g@pn@72g@pn@88g#t@95g@pn@103g@s@111g@s@121g@pn",
FLD(LF_EFFETTI, EFF_DATASCAD),
&_ban,
&_cli,
FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"),
FLD(LF_EFFETTI, EFF_NDIST, "#######@"),
FLD(LF_EFFETTI, EFF_IMPORTO, "###.###.##@,@@"),
&_val,
FLD(LF_REFFETTI, REFF_NRATA,"##@"),
FLD(LF_EFFETTI, EFF_EFFSTAMP),
FLD(LF_REFFETTI, REFF_DATAFATT),
FLD(LF_REFFETTI, REFF_NFATT,"######@"));
for( i = 0; i < _interline; i++) set_row(i+1," ");
}
void TPrint_effetti_app::set_banca()
{
set_row(1,"@1g#t@14g@s@26g#t@54g@pn@63g@pn@72g@pn@91g#t@98g@pn@106g@s@114g@s@124g@pn",
&_ban,
FLD(LF_EFFETTI, EFF_DATASCAD),
&_cli,
FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"),
FLD(LF_EFFETTI, EFF_NDIST, "#######@"),
FLD(LF_EFFETTI, EFF_IMPORTO, "###.###.##@,@@"),
&_val,
FLD(LF_REFFETTI, REFF_NRATA,"##@"),
FLD(LF_EFFETTI, EFF_EFFSTAMP),
FLD(LF_REFFETTI, REFF_DATAFATT),
FLD(LF_REFFETTI, REFF_NFATT, "######@"));
for( i = 0; i < _interline; i++) set_row(i+1,"");
}
void TPrint_effetti_app::set_distinta()
{
set_row(1,"@3g@s@5g@pn@16g@pn@27g@s@41g#t@55g#t@72g@pn@91g#t@98g@pn@106g@s@114g@s@124g@pn",
FLD(LF_EFFETTI, EFF_TIPODIST),
FLD(LF_EFFETTI, EFF_NDIST, "#######@"),
FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"),
FLD(LF_EFFETTI, EFF_DATASCAD),
&_ban,
&_cli,
FLD(LF_EFFETTI, EFF_IMPORTO, "###.###.##@,@@"),
&_val,
FLD(LF_REFFETTI, REFF_NRATA,"##@"),
FLD(LF_EFFETTI, EFF_EFFSTAMP),
FLD(LF_REFFETTI, REFF_DATAFATT),
FLD(LF_REFFETTI, REFF_NFATT, "######@"));
for( i = 0; i < _interline; i++) set_row(i+1,"");
}
bool TPrint_effetti_app::preprocess_page(int file, int counter)
// no switch/case su file poichè c'è solo quello degli effetti
{
TString s;
TRectype & rec = current_cursor()->curr();
TDate scad = rec.get_date (EFF_DATASCAD);
TString ban = rec.get (EFF_CODABIP);
if (ban=="00000")
ban = "";
long dist = rec.get_long (EFF_NDIST);
char tipodist = rec.get_char(EFF_TIPODIST);
real importo = rec.get_real(EFF_IMPORTO);
TString year;
TPrintrow pr;
TPrinter& p = printer();
if (_prima_volta)
{
_prima_volta = FALSE;
switch(_pr_type)
{
case scadenza:
_scad_prec = scad;
year = _scad_prec.string();
year = year.right(4);
pr.put(itom(_scad_prec.month()),1);
pr.put(year,10);
p.print(pr);
pr.reset();
p.print(pr);
break;
case banca:
_scad_prec = scad;
_ban_prec = ban;
s = (look_tab("%BAN",_ban_prec));
if (s.empty())
s = "Nessuna Banca di Presentazione";
pr.put(s,1);
p.print(pr);
pr.reset();
p.print(pr);
break;
case distinta:
_scad_prec = scad;
_dist_prec = dist;
s << "Distinta " << dist << " ";
switch(tipodist)
{
case 'B':
s << " Salvo Buon Fine";
break;
case 'I':
s << " All'Incasso";
break;
case 'S':
s << " Allo Sconto";
break;
case 0:
s = "Nessuna Distinta";
break;
}
pr.put(s,1);
p.print(pr);
pr.reset();
p.print(pr);
s = "";
break;
}
}
if (scad !=_scad_prec)
{
pr.put("-------------------------------------------",50);
p.print(pr);
pr.reset();
pr.put("Totale",52);
pr.put(_scad_prec.string(),60);
pr.put(_tot_data.string("###.###.##@,@@"),72);
p.print(pr);
_tot_data = 0.0;
pr.reset();
if((scad.month() != _scad_prec.month())&&_pr_type == scadenza)
{
pr.put("Totale ",50);
pr.put(itom(_scad_prec.month()),57);
pr.put(_tot_mese.string("###.###.##@,@@"),72);
p.print(pr);
_tot_mese = 0.0;
pr.reset();
p.print(pr);
year = scad.string();
year = year.right(4);
pr.put(itom(scad.month()),1);
pr.put(year,10);
p.print(pr);
pr.reset();
p.print(pr);
}
}
switch(_pr_type)
{
case scadenza:
_tot_mese += importo;
break;
case banca:
if (ban !=_ban_prec)
{
pr.put("Totale",50);
s = (look_tab("%BAN",_ban_prec));
if (s.empty())
s = "Nessuna Banca ";
s = s.left(20);
pr.put(s,57);
pr.put(_tot_banca.string("###.###.##@,@@"),72);
p.print(pr);
_tot_banca = 0.0;
pr.reset();
p.print(pr);
_ban_prec = ban;
s = (look_tab("%BAN",ban));
if (s.empty())
s = "Nessuna Banca di Presentazione";
pr.put(s,1);
p.print(pr);
pr.reset();
p.print(pr);
}
_tot_banca += importo;
break;
case distinta:
if (dist !=_dist_prec)
{
pr.put("Totale",50);
s << "Distinta " << _dist_prec;
if (_dist_prec == 0)
s = "Nessuna Distinta";
pr.put(s,57);
pr.put(_tot_distinta.string("###.###.##@,@@"),72);
p.print(pr);
_tot_distinta = 0.0;
pr.reset();
p.print(pr);
_dist_prec = dist;
s = "";
s << "Distinta " << dist << " ";
switch(tipodist)
{
case 'B':
s <<" Salvo Buon Fine";
break;
case 'I':
s << " All'Incasso";
break;
case 'S':
s << " Allo Sconto";
break;
case 0:
s = "Nessuna Distinta ";
break;
}
pr.put(s,1);
p.print(pr);
pr.reset();
p.print(pr);
s = "";
}
_tot_distinta += importo;
break;
}
_scad_prec = scad;
_tot_data += importo;
_tot_stampa += importo ;
_ban = get_field(LF_EFFETTI, EFF_CODABIP);
if (_ban=="00000")
_ban = "";
s = get_field(LF_EFFETTI, EFF_CODCABP);
if (s=="00000")
s = "";
_ban << " " << s;
s = get_field(LF_EFFETTI, EFF_CODCF);
_cli = get_field(LF_CLIFO, CLI_RAGSOC);
s = _cli.mid(30,50); s.trim();
_cli = _cli.mid(0,30); _cli.trim();
_cli << " " << s;
s = get_field(LF_EFFETTI, EFF_CODVAL);
(s.empty())?_val = s:_val = "Lit.";
return TRUE;
}
bool TPrint_effetti_app::preprocess_print(int file, int counter)
{
reset_print();
return TRUE;
}
const char* TPrint_effetti_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);
}
bool TPrint_effetti_app::set_print(int)
{
disable_links();
set_multiple_link(FALSE);
TMask mask("ef0600a.msk");
mask.run();
force_setpage(FALSE);
switch (mask.last_key())
{
case K_ESC:
case K_QUIT:
return FALSE;
break;
}
_pr_type = (pt) mask.get_int(RDB_TIPOST);
TDate data_stampa (mask.get(F_DATA_STAMPA));
_data_stampa = data_stampa.string();
TRectype from(current_cursor()->curr());
from.zero();
TRectype to(from);
TString cod_from, cod_to, filter;
filter = "";
switch(_pr_type)
{
case scadenza:
cod_from = mask.get(F_DA_DATA);
cod_to = mask.get(F_A_DATA);
from.put(EFF_DATASCAD,cod_from);
to.put(EFF_DATASCAD,cod_to);
select_cursor(_cur_1);
break;
case banca:
cod_from = mask.get(F_DA_DATA2);
cod_to = mask.get(F_A_DATA2);
from.put(EFF_DATASCAD,cod_from);
to.put(EFF_DATASCAD,cod_to);
cod_from = mask.get(F_DABAN);
cod_to = mask.get(F_ABAN);
if (cod_from.empty()) cod_from = "00000"; // per selezionare tutte
if (cod_to.empty()) cod_to = "99999"; // le banche di presentazione
filter = "";
filter << "(CODABIP>=" << cod_from << ")&&(CODABIP<=" << cod_to << ")" ;
select_cursor(_cur_2);
break;
case distinta:
cod_from = mask.get(F_DA_DATA3);
cod_to = mask.get(F_A_DATA3);
from.put(EFF_DATASCAD,cod_from);
to.put(EFF_DATASCAD,cod_to);
cod_from = mask.get(F_DADIST);
cod_to = mask.get(F_ADIST);
if (cod_from.empty()) cod_from = "00000000"; // per selezionare tutte
if (cod_to.empty()) cod_to = "99999999"; // le distinte
filter = "";
filter << "(NDIST>=" << cod_from << ") && (NDIST<=" << cod_to << ")" ;
cod_from = mask.get(F_DATIPODIST);
cod_to = mask.get(F_ATIPODIST);
if ((!cod_from.empty())&&(!cod_to.empty())&&(cod_from==cod_to)) // per selezionare un tipo
filter << "&&(TIPODIST==\"" << cod_from << "\")"; // di distinta
select_cursor(_cur_3);
break;
default:
break;
}
current_cursor()->setfilter(filter,TRUE);
current_cursor()->setregion(from, to);
set_real_picture("###.###.##@,@@");
_prima_volta=TRUE;
return TRUE;
}
bool TPrint_effetti_app::user_create()
{
_rel = new TRelation(LF_EFFETTI);
_rel->add(LF_REFFETTI, "NPROGTR==NPROGTR");
_rel->add(LF_CLIFO, "TIPOCF=='C'|CODCF==CODCF");
_cur_1 = add_cursor(new TCursor(_rel,"",3));//STAMPA PER SCADENZA
TString ordine = "CODABIP|DATASCAD|NPROGTR";//STAMPA PER BANCA
_cur_2 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
ordine = "TIPODIST|NDIST|NRIGADIST|DATASCAD|NPROGTR";//STAMPA PER DISTINTA
_cur_3 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
add_file(LF_EFFETTI);
enable_print_menu();
return TRUE;
}
bool TPrint_effetti_app::user_destroy()
{
if (_rel)
delete _rel;
return TRUE;
}
int ef0600(int argc, char* argv[])
{
TPrint_effetti_app app;
app.run(argc, argv, "Stampe Controllo Effetti");
return 0;
}

22
ef/ef0600.h Executable file
View File

@ -0,0 +1,22 @@
#ifndef __EF0600_H
#define __EF0600_H
// campi maschera ef0600a.uml
#define F_DATA_STAMPA 101
#define RDB_TIPOST 102
#define F_DA_DATA 103
#define F_A_DATA 104
#define F_DABAN 105
#define F_ABAN 106
#define F_DA_DATA2 107
#define F_A_DATA2 108
#define F_NUMBERRIGA 109
#define F_DATIPODIST 110
#define F_DADIST 111
#define F_ATIPODIST 112
#define F_ADIST 113
#define F_DA_DATA3 114
#define F_A_DATA3 115
#endif

208
ef/ef0600a.uml Executable file
View File

@ -0,0 +1,208 @@
#include "ef0600.h"
PAGE "Stampe di Controllo Effetti" -1 -1 60 13
DATE F_DATA_STAMPA
BEGIN
PROMPT 30 1 "Data di stampa "
FLAGS "A"
END
RADIOBUTTON RDB_TIPOST 24
BEGIN
PROMPT 2 1 "Stampa per "
ITEM "1|Scadenza"
MESSAGE SHOW,1@|HIDE,2@|HIDE,3@
ITEM "2|Banca"
MESSAGE SHOW,2@|HIDE,1@|HIDE,3@
ITEM "3|Distinta"
MESSAGE SHOW,3@|HIDE,1@|HIDE,2@
END
GROUPBOX DLG_NULL 55 3
BEGIN
PROMPT 1 6 "Stampa effetti per Data di scadenza"
GROUP 1
END
DATA F_DA_DATA
BEGIN
PROMPT 2 7 "Dalla Data "
GROUP 1
END
DATA F_A_DATA
BEGIN
PROMPT 30 7 "Alla Data "
GROUP 1
VALIDATE DATE_CMP_FUNC >= F_DA_DATA
WARNING "Data limite superiore non valida"
END
GROUPBOX DLG_NULL 55 4
BEGIN
PROMPT 1 6 "Stampa effetti per Banca di presentazione"
GROUP 2
END
NUMBER F_DABAN 5
BEGIN
PROMPT 2 7 "Dalla Banca "
FLAGS "RZ"
GROUP 2
USE %BAN KEY 1 SELECT CODTAB ?= "?????"
INPUT CODTAB F_DABAN
DISPLAY "Codice ABI" CODTAB[1,5]
DISPLAY "Denominazione@50" S0
OUTPUT F_DABAN CODTAB[1,5]
CHECKTYPE NORMAL
END
NUMBER F_ABAN 5
BEGIN
PROMPT 30 7 "Alla Banca "
FLAGS "RZ"
GROUP 2
USE %BAN KEY 1 SELECT CODTAB ?= "?????"
INPUT CODTAB F_ABAN
DISPLAY "Codice ABI" CODTAB[1,5]
DISPLAY "Denominazione@50" S0
OUTPUT F_ABAN CODTAB[1,5]
CHECKTYPE NORMAL
END
DATA F_DA_DATA2
BEGIN
PROMPT 2 8 "Dalla Data "
GROUP 2
END
DATA F_A_DATA2
BEGIN
PROMPT 30 8 "Alla Data "
GROUP 2
VALIDATE DATE_CMP_FUNC >= F_DA_DATA2
WARNING "Data limite superiore non valida"
END
GROUPBOX DLG_NULL 55 6
BEGIN
PROMPT 1 6 "Stampa effetti per Distinta"
GROUP 3
END
LIST F_NUMBERRIGA 10
BEGIN
PROMPT 1 60 "Numero Riga Distinta "
KEY 4
GROUP 3
ITEM "1|PRIMA RIGA"
FLAGS "D"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 7 "Dalla Distinta "
GROUP 3
END
LIST F_DATIPODIST 19
BEGIN
PROMPT 4 8 " "
KEY 4
GROUP 3
ITEM " |** Nessuno **"
ITEM "I|All'incasso"
ITEM "B|Salvo buon fine"
ITEM "S|Allo sconto"
END
NUMBER F_DADIST 7
BEGIN
PROMPT 4 9 " "
FLAGS "R"
GROUP 3
KEY 4
USE LF_EFFETTI KEY 4 SELECT NRIGADIST = 1
INPUT NDIST F_DADIST
INPUT TIPODIST F_DATIPODIST
INPUT NRIGADIST F_NUMBERRIGA
DISPLAY "Nr. distinta" NDIST
DISPLAY "Tipo distinta" TIPODIST
OUTPUT F_DADIST NDIST
OUTPUT F_DATIPODIST TIPODIST
OUTPUT F_NUMBERRIGA NRIGADIST
CHECKTYPE NORMAL
END
TEXT DLG_NULL
BEGIN
PROMPT 30 7 "Alla Distinta "
GROUP 3
END
LIST F_ATIPODIST 19
BEGIN
PROMPT 31 8 " "
GROUP 3
KEY 4
ITEM " |** Nessuno **"
ITEM "I|All'incasso"
ITEM "B|Salvo buon fine"
ITEM "S|Allo sconto"
END
NUMBER F_ADIST 7
BEGIN
PROMPT 31 9 " "
FLAGS "R"
KEY 4
GROUP 3
USE LF_EFFETTI KEY 4 SELECT NRIGADIST = 1
INPUT NDIST F_ADIST
INPUT TIPODIST F_ATIPODIST
INPUT NRIGADIST F_NUMBERRIGA
DISPLAY "Nr. distinta" NDIST
DISPLAY "Tipo distinta" TIPODIST
OUTPUT F_ADIST NDIST
OUTPUT F_ATIPODIST TIPODIST
OUTPUT F_NUMBERRIGA NRIGADIST
CHECKTYPE NORMAL
//NUM_EXPR {#THIS_FIELD>=#F_DADIST}
//WARNING "Limite superiore non valido"
END
DATA F_DA_DATA3
BEGIN
PROMPT 2 10 "Dalla Data "
GROUP 3
END
DATA F_A_DATA3
BEGIN
PROMPT 30 10 "Alla Data "
GROUP 3
VALIDATE DATE_CMP_FUNC >= F_DA_DATA3
WARNING "Data limite superiore non valida"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_CANCEL 9 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK