Correzioni a lista movimenti, mastrini, libro giornale, chiusura/apertura

conti


git-svn-id: svn://10.65.10.50/trunk@225 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
nik 1994-09-13 16:28:28 +00:00
parent 7986203cba
commit 5ca8379687
14 changed files with 1027 additions and 550 deletions

View File

@ -1,4 +1,4 @@
//Stampa movimenti //Lista movimenti
#include <mask.h> #include <mask.h>
#include <printapp.h> #include <printapp.h>
@ -25,9 +25,11 @@
#include "cg3100.h" #include "cg3100.h"
#include "cg3401.h" #include "cg3401.h"
const MAXSTR = 128; //const MAXSTR = 128;
static char __tmp [MAXSTR]; //static char __tmp [MAXSTR];
static TFixed_string tmp (__tmp, MAXSTR); //static TFixed_string tmp (__tmp, MAXSTR);
static TString256 TMP;
enum liste { enum liste {
movimenti=1, movimenti=1,
@ -37,14 +39,20 @@ enum liste {
bool filter_func (const TRelation *); bool filter_func (const TRelation *);
bool filter_func_fatture (const TRelation *); bool filter_func_fatture (const TRelation *);
bool annoes (TMask_field&, KEY);
bool data_inizio (TMask_field&, KEY);
bool data_fine (TMask_field&, KEY);
class CG3100_application : public TPrintapp class CG3100_application : public TPrintapp
{ {
friend bool filter_func (const TRelation *); friend bool filter_func (const TRelation *);
friend bool filter_func_fatture (const TRelation *); friend bool filter_func_fatture (const TRelation *);
friend bool annoes (TMask_field&, KEY);
friend bool data_inizio (TMask_field&, KEY);
friend bool data_fine (TMask_field&, KEY);
TRigaiva_array _c; TRigaiva_array _c;
TTable * _tabiva, * _tabtpd, * _tabreg; TTable * _tabiva, * _tabtpd, * _tabreg, * _tabes;
TLocalisamfile * _caus,* _comuni,* _rmoviva, * _clifo, * _pcon, * _attiv, *_nditte; TLocalisamfile * _caus,* _comuni,* _rmoviva, * _clifo, * _pcon, * _attiv, *_nditte;
TRelation * _relmov,* _relmov1,* _relmov2,* _relmov3; TRelation * _relmov,* _relmov1,* _relmov2,* _relmov3;
TCursor * _curr1, * _curr2, * _curr3; TCursor * _curr1, * _curr2, * _curr3;
@ -65,7 +73,7 @@ class CG3100_application : public TPrintapp
real _op_esenti, _op_non_imp, _impo, _impos; real _op_esenti, _op_non_imp, _impo, _impos;
real _tot_dare, _tot_avere, _tot_avere_giornaliero; real _tot_dare, _tot_avere, _tot_avere_giornaliero;
real _tot_dare_giornaliero, _tot_dare_generale, _tot_avere_generale; real _tot_dare_giornaliero, _tot_dare_generale, _tot_avere_generale;
bool _intracom, _no_preprocess_page, _salto_pagina; bool _intracom, _no_preprocess_page, _salto_pagina, _stampa_anno_comp;
bool _stampa_parte_iva,_alleg_causale,_stampa_mess_alleg_iva,_allegb,_ricser; bool _stampa_parte_iva,_alleg_causale,_stampa_mess_alleg_iva,_allegb,_ricser;
bool _settata_prima_riga, _causale_gia_stampata; bool _settata_prima_riga, _causale_gia_stampata;
int _cur1,_cur2,_cur2b,_cur3,_cur4,_decidi,_tipod,_controllo_mov_errati; int _cur1,_cur2,_cur2b,_cur3,_cur4,_decidi,_tipod,_controllo_mov_errati;
@ -94,11 +102,128 @@ public:
void incrementa_totali(); void incrementa_totali();
void compila_clifo(); void compila_clifo();
void compila_comuni(); void compila_comuni();
int my_next (TLocalisamfile*); int my_next (TLocalisamfile*);
CG3100_application() {} CG3100_application() {}
}; };
TDate InizioEsercizio(int anno)
{
TTable TabEs ("ESC");
TString16 codtab;
TDate inizio_es;
TabEs.zero();
codtab.format ("%04d", anno);
TabEs.put ("CODTAB", codtab);
TabEs.read();
if (TabEs.good())
inizio_es= TabEs.get_date ("D0");
return inizio_es;
}
TDate FineEsercizio(int anno)
{
TTable TabEs ("ESC");
TString16 codtab;
TDate fine_es;
TabEs.zero();
codtab.format ("%04d", anno);
TabEs.put ("CODTAB", codtab);
TabEs.read();
if (TabEs.good())
fine_es = TabEs.get_date ("D1");
else fine_es = botime;
return fine_es;
}
bool annoes(TMask_field& f, KEY k)
{
// if ( (k == K_SPACE) || (k == K_TAB) )
if (k == K_TAB)
{
int anno = f.mask().get_int (F_ANNO);
if ( anno != 0 )
{
f.mask().field(F_DATAINI).set(InizioEsercizio(anno));
TDate fine = FineEsercizio(anno + 1);
if (fine == botime)
fine = FineEsercizio(anno);
f.mask().field(F_DATAFIN).set(fine);
}
}
return TRUE;
}
bool data_inizio(TMask_field& f, KEY k)
{
CG3100_application * app = (CG3100_application*)MainApp();
if (k == K_ENTER)
{
int decidi;
int anno = f.mask().get_int (F_ANNO);
TDate data = f.mask().get(F_DATAINI);
if (app->_masc == "cg3100a")
decidi = f.mask().get_int (F_DECIDI);
if ( anno != 0 && ( (app->_masc == "cg3100b") ||
((app->_masc == "cg3100a" ) && (decidi == 2)) ) )
{
if (!data.ok()) //se la data e' vuota
f.mask().field(F_DATAINI).set(InizioEsercizio(anno));
else
if (data < InizioEsercizio(anno))
{
f.error_box("La data indicata non deve essere inferiore alla data di inizio esercizio");
return FALSE;
}
}
}
return TRUE;
}
bool data_fine(TMask_field& f, KEY k)
{
CG3100_application * app = (CG3100_application*)MainApp();
if (k == K_ENTER)
{
int decidi;
int anno = f.mask().get_int (F_ANNO);
TDate dataini = f.mask().get(F_DATAINI);
TDate datafin = f.mask().get(F_DATAFIN);
if (app->_masc == "cg3100a")
decidi = f.mask().get_int (F_DECIDI);
if ( (app->_masc == "cg3100b") ||
((app->_masc == "cg3100a" ) && (decidi == 2)) )
if ( dataini.ok() && datafin.ok() )
if (dataini > datafin)
{
f.error_box("La data iniziale non deve essere superiore alla data finale");
return FALSE;
}
if ( anno != 0 && ( (app->_masc == "cg3100b") ||
((app->_masc == "cg3100a" ) && (decidi == 2)) ) )
{
TDate fine = FineEsercizio(anno + 1);
if (fine == botime)
fine = FineEsercizio(anno);
if (!datafin.ok()) //se la data e' vuota
f.mask().field(F_DATAFIN).set(fine);
else
if (datafin > fine)
{
f.error_box("La data indicata non deve essere superiore alla data di fine esercizio successivo, oppure, in caso questo non esista, dell'esercizio indicato");
return FALSE;
}
}
}
return TRUE;
}
void CG3100_application::compila_clifo() void CG3100_application::compila_clifo()
{ {
_clifo->setkey(1); _clifo->setkey(1);
@ -167,7 +292,7 @@ const char * DescrConto (long gruppo, long conto, long sottoconto,
pcon.put(PCN_SOTTOCONTO,sottoconto); pcon.put(PCN_SOTTOCONTO,sottoconto);
pcon.read(); pcon.read();
if (pcon.good()) if (pcon.good())
tmp = pcon.curr().get(PCN_DESCR); TMP = pcon.curr().get(PCN_DESCR);
else else
{ {
clifo.setkey(1); clifo.setkey(1);
@ -176,9 +301,9 @@ const char * DescrConto (long gruppo, long conto, long sottoconto,
clifo.put(CLI_TIPOCF,tipocf); clifo.put(CLI_TIPOCF,tipocf);
clifo.read(); clifo.read();
if (clifo.good()) if (clifo.good())
tmp = clifo.get(CLI_RAGSOC); TMP = clifo.get(CLI_RAGSOC);
} }
return __tmp; return TMP;
} }
bool CausAlleg (const char * cod) bool CausAlleg (const char * cod)
@ -208,11 +333,11 @@ const char * TipoAttivita (const char * attreg, long codice_ditta)
attiv.read(); attiv.read();
if (attiv.good()) if (attiv.good())
tmp = attiv.curr().get(ATT_TIPOATT); TMP = attiv.curr().get(ATT_TIPOATT);
else else
tmp = ""; TMP = "";
return __tmp; return TMP;
} }
const char * SimboloValuta (const char * cod) const char * SimboloValuta (const char * cod)
@ -225,11 +350,11 @@ const char * SimboloValuta (const char * cod)
tab_val.put("CODTAB", codtab); tab_val.put("CODTAB", codtab);
tab_val.read(); tab_val.read();
if (tab_val.good()) if (tab_val.good())
tmp = tab_val.get("S7"); TMP = tab_val.get("S7");
else else
tmp = ""; TMP = "";
return __tmp; return TMP;
} }
const char * DescrDoc (const char * tipo) const char * DescrDoc (const char * tipo)
@ -242,11 +367,11 @@ const char * DescrDoc (const char * tipo)
tab_tpd.put("CODTAB", codtab); tab_tpd.put("CODTAB", codtab);
tab_tpd.read(); tab_tpd.read();
if (tab_tpd.good()) if (tab_tpd.good())
tmp = tab_tpd.get("S0"); TMP = tab_tpd.get("S0");
else else
tmp = ""; TMP = "";
return __tmp; return TMP;
} }
const char * AttivitaRegistro (const char * cod, int anno) const char * AttivitaRegistro (const char * cod, int anno)
@ -260,11 +385,11 @@ const char * AttivitaRegistro (const char * cod, int anno)
tab_reg.read(); tab_reg.read();
if (tab_reg.good()) if (tab_reg.good())
tmp = tab_reg.get("S8"); TMP = tab_reg.get("S8");
else else
tmp = ""; TMP = "";
return __tmp; return TMP;
} }
const int CodiceRegistro (const char* cod, int anno) const int CodiceRegistro (const char* cod, int anno)
@ -298,22 +423,23 @@ bool filter_func_fatture (const TRelation * rel)
TLocalisamfile * mov = rel->lfile(LF_MOV); TLocalisamfile * mov = rel->lfile(LF_MOV);
TRectype from (mov->curr()); TRectype from (mov->curr());
TRectype to (mov->curr()); TRectype to (mov->curr());
ann_reg = mov->get_int (MOV_ANNOES); ann_reg = mov->get_int (MOV_ANNOIVA);
cod_reg = mov->get (MOV_REG); cod_reg = mov->get (MOV_REG);
ann_reg = mov->get_int (MOV_ANNOES);
tipo_reg = CodiceRegistro (cod_reg, ann_reg); tipo_reg = CodiceRegistro (cod_reg, ann_reg);
from.zero(); from.zero();
to.zero(); to.zero();
if (app->_annoes != 0) if (app->_annoes != 0) //anno esercizio specificato nella maschera
{ {
from.put(MOV_ANNOES, app->_annoes); from.put(MOV_ANNOES, app->_annoes);
to.put(MOV_ANNOES, app->_annoes); to.put(MOV_ANNOES, app->_annoes);
} }
from.put(MOV_DATAREG, app->_data_ini); //if (app->_data_ini.ok())
// from.put(MOV_DATAREG, app->_data_ini);
from.put(MOV_TIPO, app->_tipo_ini); from.put(MOV_TIPO, app->_tipo_ini);
if (app->_codice_ini != 0) if (app->_codice_ini != 0)
from.put(MOV_CODCF, app->_codice_ini); from.put(MOV_CODCF, app->_codice_ini);
to.put(MOV_DATAREG, app->_data_fin); //if (app->_data_fin.ok())
// to.put(MOV_DATAREG, app->_data_fin);
to.put(MOV_TIPO, app->_tipo_fin); to.put(MOV_TIPO, app->_tipo_fin);
if (app->_codice_fin != 0) if (app->_codice_fin != 0)
to.put(MOV_CODCF, app->_codice_fin); to.put(MOV_CODCF, app->_codice_fin);
@ -332,56 +458,56 @@ bool filter_func (const TRelation * rel)
TString cod_reg, causale; TString cod_reg, causale;
TLocalisamfile * mov = rel->lfile(LF_MOV); TLocalisamfile * mov = rel->lfile(LF_MOV);
TRectype from (mov->curr()); TRectype from (mov->curr());
TRectype to (mov->curr()); TRectype to (mov->curr());
switch (app->_scelta_stampa) switch (app->_scelta_stampa)
{ {
case 0: case 0:
ann_reg = mov->get_int(MOV_ANNOES); ann_reg = mov->get_int(MOV_ANNOIVA);
causale = mov->get (MOV_CODCAUS); causale = mov->get (MOV_CODCAUS);
from.zero(); from.zero();
to.zero(); to.zero();
if (app->_annoes != 0) if ( (app->_decidi == 2) && (app->_annoes != 0) )
{ {
from.put(MOV_ANNOES, app->_annoes); from.put(MOV_ANNOES, app->_annoes);
to.put(MOV_ANNOES, app->_annoes); to.put(MOV_ANNOES, app->_annoes);
} }
from.put(MOV_CODCAUS, app->_causale_ini); from.put(MOV_CODCAUS, app->_causale_ini);
to.put(MOV_CODCAUS, app->_causale_fin); to.put(MOV_CODCAUS, app->_causale_fin);
from.put(MOV_REG, app->_registro_ini); from.put(MOV_REG, app->_registro_ini);
to.put(MOV_REG, app->_registro_fin); to.put(MOV_REG, app->_registro_fin);
if ((mov->curr() >= from) && (mov->curr() <= to)) if ((mov->curr() >= from) && (mov->curr() <= to))
return TRUE; return TRUE;
break; break;
case 1: case 1:
cod_reg = mov->get (MOV_REG); cod_reg = mov->get (MOV_REG);
ann_reg = mov->get_int (MOV_ANNOES); ann_reg = mov->get_int (MOV_ANNOIVA);
tipo_reg = CodiceRegistro(cod_reg, ann_reg); tipo_reg = CodiceRegistro(cod_reg, ann_reg);
causale = mov->get (MOV_CODCAUS); causale = mov->get (MOV_CODCAUS);
from.zero(); from.zero();
to.zero(); to.zero();
if (app->_annoes != 0) if ( (app->_decidi == 2) && (app->_annoes != 0) )
{ {
from.put(MOV_ANNOES, app->_annoes); from.put(MOV_ANNOES, app->_annoes);
to.put(MOV_ANNOES, app->_annoes); to.put(MOV_ANNOES, app->_annoes);
} }
from.put(MOV_CODCAUS, app->_causale_ini); from.put(MOV_CODCAUS, app->_causale_ini);
to.put(MOV_CODCAUS, app->_causale_fin); to.put(MOV_CODCAUS, app->_causale_fin);
if (((mov->curr() >= from) && (mov->curr() <= to)) && if (((mov->curr() >= from) && (mov->curr() <= to)) &&
((tipo_reg != 1) && (tipo_reg != 2))) ((tipo_reg != 1) && (tipo_reg != 2)))
return TRUE; return TRUE;
break; break;
default: default:
break; break;
} }
return FALSE; return FALSE;
} }
void CG3100_application::stampa_errori_rmov() void CG3100_application::stampa_errori_rmov()
{ {
if (_scelta_stampa == 0) //stampa tutti i movimenti (iva e non) if (_scelta_stampa == 0) //lista movimenti
{ {
if (_controllo_mov_errati != 3) if (_controllo_mov_errati != 3)
{ {
@ -433,20 +559,24 @@ void CG3100_application::stampa_errori_mov()
{ {
if (_scelta_stampa == 0) if (_scelta_stampa == 0)
{ {
if ((_controllo_mov_errati != 3)&&((_tiporegistro == 1)|| if (_controllo_mov_errati != 3)
(_tiporegistro == 2)))//controlli su movimenti iva
{ {
if (_caus->bad()) //aggiungere il controllo anno di competenza
if ( (_tiporegistro == 1)||(_tiporegistro == 2) ) //controlli su mov. iva
{
if (_caus->bad())
set_row(++_n, "@11g%s", ERR_16); set_row(++_n, "@11g%s", ERR_16);
if (_tipodocumento != _tipodoc)
set_row(++_n, "@11g%s", MSG_19);
if (_tipodocumento != _tipodoc) if ((_stampa_mess_alleg_iva)&&(!_alleg_causale))
set_row(++_n, "@11g%s", MSG_19); set_row(++_n, "@11g%s", MSG_20);
if ((_stampa_mess_alleg_iva)&&(!_alleg_causale)) if (_registro == "")
set_row(++_n, "@11g%s", MSG_20); set_row(++_n, "@11g%s", ERR_21);
}
if (_tiporegistro == 0)
set_row(++_n, "@11g%s", ERR_21);
} }
} }
} }
@ -479,14 +609,24 @@ void CG3100_application::set_page(int file, int count)
else if (file == LF_MOV) else if (file == LF_MOV)
{ {
_n = 1; _n = 1;
set_row (_n, "Registrazione n. @18g@7n", FLD(LF_MOV,MOV_NUMREG)); set_row (_n, "Operazione n. @18g@7n", FLD(LF_MOV,MOV_NUMREG));
// set_row (_n, "@23g@3s",FLD(LF_MOV,MOV_CODCAUS)); //set_row (_n, "@23g@3s",FLD(LF_MOV,MOV_CODCAUS));
set_row (_n, "@26gdel@30g@d",FLD(LF_MOV,MOV_DATAREG)); set_row (_n, "@26gdel@30g@d",FLD(LF_MOV,MOV_DATAREG));
set_row (_n, "@41g@40s",FLD(LF_MOV,MOV_DESCR)); set_row (_n, "@41g@40s",FLD(LF_MOV,MOV_DESCR));
set_row (_n, "@82gdocumento n.@95g@7s",FLD(LF_MOV,MOV_NUMDOC)); set_row (_n, "@82gdoc. @87g@7s",FLD(LF_MOV,MOV_NUMDOC));
set_row (_n, "@103gdel@107g@d", FLD(LF_MOV,MOV_DATADOC)); set_row (_n, "@95gdel@99g@d", FLD(LF_MOV,MOV_DATADOC));
set_row (_n, "@118g@4n", FLD(LF_MOV,MOV_ANNOES)); TString16 reg = current_cursor()->curr(LF_MOV).get(MOV_REG);
set_row (_n, "@130g@f", FLD(LF_MOV,MOV_STAMPATO)); int anno = current_cursor()->curr(LF_MOV).get_int(MOV_ANNOIVA);
int tipo = CodiceRegistro(reg, anno);
if ( (tipo == 1) || (tipo == 2) )
{
set_row (_n, "@110greg @3s",FLD(LF_MOV,MOV_REG));
set_row (_n, "@118gpr @5n",FLD(LF_MOV,MOV_PROTIVA));
}
if (_scelta_stampa == 0)
if (_stampa_anno_comp)
set_row (_n, "@127g@4n", FLD(LF_MOV,MOV_ANNOES));
//set_row (_n, "@130g@f", FLD(LF_MOV,MOV_STAMPATO));
} }
break; break;
@ -547,7 +687,7 @@ bool CG3100_application::preprocess_page(int file,int counter)
_no_preprocess_page = FALSE; _no_preprocess_page = FALSE;
_causale = current_cursor()->curr(LF_MOV).get(MOV_CODCAUS); _causale = current_cursor()->curr(LF_MOV).get(MOV_CODCAUS);
_registro = current_cursor()->curr(LF_MOV).get(MOV_REG); _registro = current_cursor()->curr(LF_MOV).get(MOV_REG);
_anno = current_cursor()->curr(LF_MOV).get_int(MOV_ANNOES); _anno = current_cursor()->curr(LF_MOV).get_int(MOV_ANNOIVA);
_tipodoc = current_cursor()->curr(LF_MOV).get(MOV_TIPODOC); _tipodoc = current_cursor()->curr(LF_MOV).get(MOV_TIPODOC);
_datareg = current_cursor()->file(LF_MOV)->get_date(MOV_DATAREG); _datareg = current_cursor()->file(LF_MOV)->get_date(MOV_DATAREG);
_causale_gia_stampata = FALSE; _causale_gia_stampata = FALSE;
@ -643,7 +783,7 @@ bool CG3100_application::preprocess_page(int file,int counter)
return TRUE; return TRUE;
} }
} }
else //_scelta_stampa == 1 else //_scelta_stampa == 1
{ {
if (file == LF_MOV) if (file == LF_MOV)
@ -713,13 +853,13 @@ bool CG3100_application::preprocess_page(int file,int counter)
return TRUE; return TRUE;
} }
} }
break; break;
case fatture: case fatture:
{ {
if (file == LF_MOV) if (file == LF_MOV)
{ {
int anno = cur->curr(LF_MOV).get_int(MOV_ANNOES); int anno = cur->curr(LF_MOV).get_int(MOV_ANNOIVA);
TString codreg = cur->curr(LF_MOV).get(MOV_REG); TString codreg = cur->curr(LF_MOV).get(MOV_REG);
_tipo_elenco = current_cursor()->curr(LF_MOV).get(MOV_TIPO); _tipo_elenco = current_cursor()->curr(LF_MOV).get(MOV_TIPO);
@ -747,16 +887,18 @@ bool CG3100_application::preprocess_page(int file,int counter)
da.zero(); da.zero();
a.zero(); a.zero();
if (_annoes != 0) if (_annoes != 0) //anno specificato nella maschera
{ {
da.put(MOV_ANNOES, _annoes); da.put(MOV_ANNOES, _annoes);
a.put(MOV_ANNOES, _annoes); a.put(MOV_ANNOES, _annoes);
} }
da.put(MOV_DATAREG, _data_ini); if (_data_ini.ok())
da.put(MOV_DATAREG, _data_ini);
da.put(MOV_TIPO, _tipo_ini); da.put(MOV_TIPO, _tipo_ini);
if (_codice_ini != 0) if (_codice_ini != 0)
da.put(MOV_CODCF, _codice_ini); da.put(MOV_CODCF, _codice_ini);
a.put(MOV_DATAREG, _data_fin); if (_data_fin.ok())
a.put(MOV_DATAREG, _data_fin);
a.put(MOV_TIPO, _tipo_fin); a.put(MOV_TIPO, _tipo_fin);
if (_codice_fin != 0) if (_codice_fin != 0)
a.put(MOV_CODCF, _codice_fin); a.put(MOV_CODCF, _codice_fin);
@ -1030,11 +1172,13 @@ int CG3100_application::my_next(TLocalisamfile * mov)
case 1: case 1:
while (!mov->eof()) while (!mov->eof())
{ {
cod_reg = mov->get (MOV_REG); cod_reg = mov->get (MOV_REG);
ann_reg = mov->get_int (MOV_ANNOES); ann_reg = mov->get_int (MOV_ANNOIVA);
causale = mov->get (MOV_CODCAUS); causale = mov->get (MOV_CODCAUS);
if ( ( ( _annoes != 0l) && (ann_reg != _annoes) ) //if ( ( ( _annoes != 0l) && (ann_reg != _annoes) )
// || ( (causale < (const char*)_causale_ini) || (causale > (const char*)_causale_fin)) )
if ( ( _annoes != 0l)
|| ( (causale < (const char*)_causale_ini) || (causale > (const char*)_causale_fin)) ) || ( (causale < (const char*)_causale_ini) || (causale > (const char*)_causale_fin)) )
{ {
esito=mov->next(); esito=mov->next();
@ -1168,7 +1312,7 @@ bool CG3100_application::segnala_errori_primariga()
{ {
int tiporeg; int tiporeg;
if ((_tiporegistro == 1)||(_tiporegistro == 2)) if ((_tiporegistro == 1)||(_tiporegistro == 2)) //movimento iva
{ {
tiporeg = CodiceRegistro (_registro, _anno); tiporeg = CodiceRegistro (_registro, _anno);
@ -1187,11 +1331,10 @@ bool CG3100_application::segnala_errori_ogniriga()
bool trovato = FALSE; bool trovato = FALSE;
TString dep1; TString dep1;
if ((_tiporegistro == 1)||(_tiporegistro == 2)) if ((_tiporegistro == 1)||(_tiporegistro == 2)) //movimento iva
{ {
long record, numreg; long record, numreg;
TLocalisamfile* rmoviva; TLocalisamfile* rmoviva;
// int conta = 0;
rmoviva = current_cursor()->file(LF_RMOVIVA); rmoviva = current_cursor()->file(LF_RMOVIVA);
_numreg = current_cursor()->file(LF_MOV)->get_long(MOV_NUMREG); _numreg = current_cursor()->file(LF_MOV)->get_long(MOV_NUMREG);
@ -1215,20 +1358,20 @@ bool CG3100_application::segnala_errori_ogniriga()
if (_tiporegistro == 1) if (_tiporegistro == 1)
switch (_tipocr) switch (_tipocr)
{ {
case 2 : case 3: case 5: case 8: case 9: _err1 = ERR_09; case 2 : case 3: case 5: case 8: case 9: _err1 = ERR_09;
trovato = TRUE; trovato = TRUE;
break; break;
default: break; default: break;
} }
else else
if (_tiporegistro == 2) if (_tiporegistro == 2)
switch (_tipocr) switch (_tipocr)
{ {
case 4: case 9: _err1 = ERR_09; case 4: case 9: _err1 = ERR_09;
trovato = TRUE; trovato = TRUE;
break; break;
default: break; default: break;
} }
if (_tipodoc != "AN") if (_tipodoc != "AN")
{ {
_tabiva->setkey(1); _tabiva->setkey(1);
@ -1238,7 +1381,6 @@ bool CG3100_application::segnala_errori_ogniriga()
_tabiva->read(); _tabiva->read();
if (_tabiva->good()) if (_tabiva->good())
{ {
//conta += 1;
TString colonnac = _tabiva->get("S7"); TString colonnac = _tabiva->get("S7");
TString colonnaf = _tabiva->get("S8"); TString colonnaf = _tabiva->get("S8");
bool sospeso = _tabiva->get_bool("B2"); bool sospeso = _tabiva->get_bool("B2");
@ -1256,13 +1398,13 @@ bool CG3100_application::segnala_errori_ogniriga()
// break; // break;
} }
else else
{
_err2 = ERR_1; _err2 = ERR_1;
trovato = TRUE;
}
} }
} }
} } //for
// if (conta)
// _err2 = "";
rmoviva->readat (record); rmoviva->readat (record);
} }
} }
@ -1316,12 +1458,10 @@ bool CG3100_application::set_print(int m)
switch(m) switch(m)
{ {
case 1: case 1:
// case 2:
_masc = "cg3100a"; _masc = "cg3100a";
_tipo_lista = movimenti; _tipo_lista = movimenti;
break; break;
case 2: case 2:
// case 1:
_masc = "cg3100b"; _masc = "cg3100b";
_tipo_lista = fatture; _tipo_lista = fatture;
break; break;
@ -1334,6 +1474,11 @@ bool CG3100_application::set_print(int m)
} }
TMask msk(_masc); TMask msk(_masc);
msk.set_handler(F_ANNO, annoes);
msk.set_handler(F_DATAINI, data_inizio);
msk.set_handler(F_DATAFIN, data_fine);
if (msk.run() != K_ENTER) return FALSE; if (msk.run() != K_ENTER) return FALSE;
reset_files(); reset_files();
@ -1343,8 +1488,8 @@ bool CG3100_application::set_print(int m)
_curr3->set_filterfunction (filter_func_fatture); _curr3->set_filterfunction (filter_func_fatture);
switch (_tipo_lista) switch (_tipo_lista)
{ {
case movimenti: case movimenti:
{ {
_scelta_stampa = atoi(msk.get(F_MOVIMENTI)); _scelta_stampa = atoi(msk.get(F_MOVIMENTI));
_annoes = msk.get_int (F_ANNO); _annoes = msk.get_int (F_ANNO);
_decidi = msk.get_int(F_DECIDI); _decidi = msk.get_int(F_DECIDI);
@ -1390,8 +1535,10 @@ bool CG3100_application::set_print(int m)
TRectype a (fl->curr()); TRectype a (fl->curr());
da.zero(); da.zero();
a.zero(); a.zero();
da.put(MOV_DATAREG, _data_ini); if (_data_ini.ok())
a.put(MOV_DATAREG, _data_fin); da.put(MOV_DATAREG, _data_ini);
if (_data_fin.ok())
a.put(MOV_DATAREG, _data_fin);
current_cursor()->setregion(da,a); current_cursor()->setregion(da,a);
add_file(LF_MOV); add_file(LF_MOV);
add_file(LF_RMOV,LF_MOV); add_file(LF_RMOV,LF_MOV);
@ -1440,8 +1587,10 @@ bool CG3100_application::set_print(int m)
a.put(MOV_TIPO, _tipo_fin); a.put(MOV_TIPO, _tipo_fin);
if (_codice_fin != 0) if (_codice_fin != 0)
a.put(MOV_CODCF, _codice_fin); a.put(MOV_CODCF, _codice_fin);
da.put(MOV_DATAREG, _data_ini); if (_data_ini.ok())
a.put(MOV_DATAREG, _data_fin); da.put(MOV_DATAREG, _data_ini);
if (_data_fin.ok())
a.put(MOV_DATAREG, _data_fin);
da.put(MOV_TIPO, _tipo_ini); da.put(MOV_TIPO, _tipo_ini);
current_cursor()->setregion(da,a); current_cursor()->setregion(da,a);
add_file(LF_MOV); add_file(LF_MOV);
@ -1455,8 +1604,8 @@ break;
case movimenti_sezionale: case movimenti_sezionale:
break; break;
default: default:
break; break;
} }
init_print(msk); init_print(msk);
@ -1500,6 +1649,7 @@ void CG3100_application::user_create()
_tabiva = new TTable(TAB_IVA); _tabiva = new TTable(TAB_IVA);
_tabtpd = new TTable(TAB_TPD); _tabtpd = new TTable(TAB_TPD);
_tabreg = new TTable("REG"); _tabreg = new TTable("REG");
_tabes = new TTable("ESC");
} }
void CG3100_application::user_destroy() // releasev e arrmask void CG3100_application::user_destroy() // releasev e arrmask
@ -1524,7 +1674,6 @@ void CG3100_application::init_print(const TMask& msk)
TDate data (msk.get(F_DATASTAMPA)); TDate data (msk.get(F_DATASTAMPA));
printer().setdate(data); printer().setdate(data);
switch (_tipo_lista) switch (_tipo_lista)
{ {
case movimenti: case movimenti:
@ -1544,6 +1693,9 @@ void CG3100_application::init_print(const TMask& msk)
_stampa_mess_alleg_iva = (bool)(msk.get(F_ALLEGATO)=="X"); _stampa_mess_alleg_iva = (bool)(msk.get(F_ALLEGATO)=="X");
if (_stampa_mess_alleg_iva) if (_stampa_mess_alleg_iva)
_flags |= ST_MESS_ALLEG; _flags |= ST_MESS_ALLEG;
_stampa_anno_comp = (bool)(msk.get(F_ANNOC)=="X");
if (_stampa_anno_comp)
_flags |= ST_ANNO_COMP;
_controllo_mov_errati = atoi(msk.get(F_CONTROLLO)); _controllo_mov_errati = atoi(msk.get(F_CONTROLLO));
if (_controllo_mov_errati == 1) if (_controllo_mov_errati == 1)
_flags |= ST_SOLO_MOVERR; _flags |= ST_SOLO_MOVERR;
@ -1688,13 +1840,23 @@ void CG3100_application::preprocess_header()
set_header (soh++, (const char*)sep); set_header (soh++, (const char*)sep);
if (_decidi == 2) if (_decidi == 2)
{ {
if (_flags & ST_DATA) if (_annoes != 0)
{ {
set_header (soh, "Dalla data@12g%s",_data_ini.string()); set_header (soh, "Anno %d", _annoes);
set_header (soh, "@24galla data@34g%s",_data_fin.string()); if (_flags & ST_DATA)
{
set_header (soh, "@10gda@13g%s",_data_ini.string());
set_header (soh, "@24ga@26g%s",_data_fin.string());
}
} }
else else
set_header (soh, "Completa in ordine di data"); if (_flags & ST_DATA)
{
set_header (soh, "Dalla data@12g%s",_data_ini.string());
set_header (soh, "@24galla data@34g%s",_data_fin.string());
}
else
set_header (soh, "Completa in ordine di data");
} }
else else
if (_flags & ST_NUMERO) if (_flags & ST_NUMERO)
@ -1728,9 +1890,9 @@ void CG3100_application::preprocess_header()
if ((_flags & (ST_ANNO_COMP|ST_MESS_ALLEG)) == 1) if ((_flags & (ST_ANNO_COMP|ST_MESS_ALLEG)) == 1)
set_header (soh, "@78gcon messaggi: anno di competenza, allegato iva"); set_header (soh, "@78gcon messaggi: anno di competenza, allegato iva");
else if (_flags & ST_ANNO_COMP) else if (_flags & ST_ANNO_COMP)
set_header (soh, "@78gcon messaggi: anno di competenza"); set_header (soh, "@78gcon messaggio: anno di competenza");
else if (_flags & ST_MESS_ALLEG) else if (_flags & ST_MESS_ALLEG)
set_header (soh, "@78gcon messaggi: allegato iva"); set_header (soh, "@78gcon messaggio: allegato iva");
sep.fill('-'); sep.fill('-');
set_header (++soh, (const char *) sep); set_header (++soh, (const char *) sep);
set_header (++soh, "Rg Cod Causale@30gDescrizione@56gCodice conto@72gDescrizione conto@98gDare@116gAvere@130gSB"); set_header (++soh, "Rg Cod Causale@30gDescrizione@56gCodice conto@72gDescrizione conto@98gDare@116gAvere@130gSB");
@ -1739,20 +1901,34 @@ void CG3100_application::preprocess_header()
{ {
sep.overwrite ("Lista movimenti di sola prima nota"); sep.overwrite ("Lista movimenti di sola prima nota");
set_header (soh++, (const char*)sep); set_header (soh++, (const char*)sep);
if (_flags & ST_DATA) if (_decidi == 2)
{ {
set_header (soh, "Dalla data@12g%s",_data_ini.string()); if (_annoes != 0)
set_header (soh, "@24galla data@34g%s",_data_fin.string()); {
} set_header (soh, "Anno %d", (const char*)_annoes);
if (_flags & ST_DATA)
{
set_header (soh, "@10gda@13g%s",_data_ini.string());
set_header (soh, "@24ga@26g%s",_data_fin.string());
}
}
else
if (_flags & ST_DATA)
{
set_header (soh, "Dalla data@12g%s",_data_ini.string());
set_header (soh, "@24galla data@34g%s",_data_fin.string());
}
else
set_header (soh, "Completa in ordine di data");
}
else else
set_header (soh, "Completa in ordine di data"); if (_flags & ST_NUMERO)
if (_flags & ST_NUMERO) {
{ set_header (soh, "@46gdal numero@57g%d", (const char*)_numreg_ini);
set_header (soh, "@46gdal numero@57g%d", (const char*)_numreg_ini); set_header (soh, "@65gal numero@75g%d",(const char*)_numreg_fin);
set_header (soh, "@65gal numero@75g%d",(const char*)_numreg_fin); }
} else
else set_header (soh, "@46gCompleta in ordine di numero");
set_header (soh, "@46gcompleta in ordine di numero");
if (_flags & ST_CAUSALE) if (_flags & ST_CAUSALE)
{ {
set_header(soh, "@86gdalla causale@100g%3s",(const char*)_causale_ini); set_header(soh, "@86gdalla causale@100g%3s",(const char*)_causale_ini);
@ -1769,13 +1945,23 @@ void CG3100_application::preprocess_header()
case fatture: case fatture:
sep.overwrite ("Lista fatture"); sep.overwrite ("Lista fatture");
set_header (soh, (const char*)sep); set_header (soh, (const char*)sep);
if (_flags & ST_DATA) if (_annoes != 0)
{ {
set_header (soh, "@15gdalla data@26g%s",_data_ini.string()); set_header (soh, "@15gAnno %d", (const char*)_annoes);
set_header (soh, "@37galla data@47g%s",_data_fin.string()); if (_flags & ST_DATA)
{
set_header (soh, "@25gdalla data@36g%s",_data_ini.string());
set_header (soh, "@47galla data@57g%s",_data_fin.string());
}
} }
else else
set_header (soh, "@15gcompleta in ordine di data"); if (_flags & ST_DATA)
{
set_header (soh, "@15gdalla data@26g%s",_data_ini.string());
set_header (soh, "@37galla data@47g%s",_data_fin.string());
}
else
set_header (soh, "@15gcompleta in ordine di data");
if (_flags & ST_CODICE) if (_flags & ST_CODICE)
{ {
set_header (soh, "@99gdal codice@110g%d",_codice_ini); set_header (soh, "@99gdal codice@110g%d",_codice_ini);

View File

@ -47,7 +47,7 @@
#define ST_COMPLETA_NUM 0x1000 #define ST_COMPLETA_NUM 0x1000
#define ST_COMPLETA_CAUS 0x2000 #define ST_COMPLETA_CAUS 0x2000
#define ST_COMPLETA_REG 0x4000 #define ST_COMPLETA_REG 0x4000
#define ST_CODICE 0x8000 #define ST_CODICE 0x8000
#endif // __CG3100_H #endif // __CG3100_H

View File

@ -29,8 +29,8 @@ END
NUMBER F_ANNO 4 NUMBER F_ANNO 4
BEGIN BEGIN
GROUP 3
PROMPT 2 3 "Anno esercizio " PROMPT 2 3 "Anno esercizio "
//HELP "Se non indicato nessun anno esercizio significa che si richiede la stampa come specificato nei campi: dalla data, alla data"
USE ESC USE ESC
CHECKTYPE NORMAL CHECKTYPE NORMAL
INPUT CODTAB F_ANNO INPUT CODTAB F_ANNO
@ -38,6 +38,7 @@ BEGIN
DISPLAY "Data inizio esercizio" D0 DISPLAY "Data inizio esercizio" D0
DISPLAY "Data fine esercizio" D1 DISPLAY "Data fine esercizio" D1
OUTPUT F_ANNO CODTAB OUTPUT F_ANNO CODTAB
FLAGS "RZ"
END END
RADIOBUTTON F_MOVIMENTI 38 RADIOBUTTON F_MOVIMENTI 38
@ -54,10 +55,10 @@ END
LIST F_CONTROLLO 23 LIST F_CONTROLLO 23
BEGIN BEGIN
PROMPT 2 7 "Controllo movimenti errati " PROMPT 2 7 "Controllo movimenti errati "
HELP "La scelta 1 stampa solo le registrazioni errate; la scelta 2 permette di listare tutte le registrazioni inserite, segnalando quelle errate; la scelta 3 stampa solo le registrazioni non errate" HELP "La scelta 1 stampa solo le registrazioni non errate; la scelta 2 permette di listare tutte le registrazioni inserite, segnalando quelle errate; la scelta 3 stampa solo le registrazioni errate"
ITEM "1|Stampa movimenti errati" MESSAGE SHOW,1@
ITEM "2|Si" MESSAGE SHOW,1@
ITEM "3|No" MESSAGE HIDE,1@ ITEM "3|No" MESSAGE HIDE,1@
ITEM "2|Si" MESSAGE SHOW,1@
ITEM "1|Stampa movimenti errati" MESSAGE SHOW,1@
END END
TEXT DLG_NULL TEXT DLG_NULL
@ -83,14 +84,14 @@ END
RADIOBUTTON F_DECIDI 10 RADIOBUTTON F_DECIDI 10
BEGIN BEGIN
PROMPT 2 10 "Stampa " PROMPT 2 10 "Stampa "
ITEM "2|data" MESSAGE DISABLE,2@|RESET,2@|ENABLE,3@ ITEM "2|data" MESSAGE DISABLE,2@|RESET,2@|ENABLE,3@
ITEM "1|numero" MESSAGE DISABLE,3@|RESET,3@|ENABLE,2@ ITEM "1|numero" MESSAGE DISABLE,3@|RESET,3@|ENABLE,2@
END END
DATE F_DATAINI DATE F_DATAINI
BEGIN BEGIN
PROMPT 19 11 "Stampa mov. dalla data " PROMPT 19 11 "Stampa mov. dalla data "
HELP "Se non indicato nessun valore viene effettuata una stampa completa in ordine di data" //HELP "Se non indicato nessun valore viene effettuata una stampa completa in ordine di data"
GROUP 3 GROUP 3
END END
@ -125,7 +126,7 @@ BEGIN
GROUP 2 GROUP 2
END END
NUMBER F_CAUSALEINI 3 STRING F_CAUSALEINI 3
BEGIN BEGIN
PROMPT 2 14 "Stampa dalla causale " PROMPT 2 14 "Stampa dalla causale "
USE LF_CAUSALI KEY 1 USE LF_CAUSALI KEY 1
@ -133,11 +134,11 @@ BEGIN
DISPLAY "Codice causale" CODCAUS DISPLAY "Codice causale" CODCAUS
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
OUTPUT F_CAUSALEINI CODCAUS OUTPUT F_CAUSALEINI CODCAUS
FLAGS "R" FLAGS "UR"
HELP "Introdurre codice causale di inizio stampa: vuoto = inizio archivio" HELP "Introdurre codice causale di inizio stampa: vuoto = inizio archivio"
END END
NUMBER F_CAUSALEFIN 3 STRING F_CAUSALEFIN 3
BEGIN BEGIN
PROMPT 40 14 "alla causale " PROMPT 40 14 "alla causale "
COPY USE F_CAUSALEINI COPY USE F_CAUSALEINI
@ -145,7 +146,7 @@ BEGIN
DISPLAY "Codice causale" CODCAUS DISPLAY "Codice causale" CODCAUS
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
OUTPUT F_CAUSALEFIN CODCAUS OUTPUT F_CAUSALEFIN CODCAUS
FLAGS "R" FLAGS "UR"
HELP "Introdurre codice causale di fine stampa: vuoto = fine archivio" HELP "Introdurre codice causale di fine stampa: vuoto = fine archivio"
END END
@ -153,13 +154,15 @@ STRING F_REGISTROINI 3
BEGIN BEGIN
PROMPT 2 15 "Stampa dal registro iva " PROMPT 2 15 "Stampa dal registro iva "
USE REG SELECT I0<"3" USE REG SELECT I0<"3"
INPUT CODTAB[1,5] F_ANNO SELECT //INPUT CODTAB[1,5] F_ANNO SELECT
//INPUT CODTAB[1,5] ""
INPUT CODTAB[5,7] F_REGISTROINI INPUT CODTAB[5,7] F_REGISTROINI
DISPLAY "Anno" CODTAB[1,4]
DISPLAY "Cod. registro iva" CODTAB[5,7] DISPLAY "Cod. registro iva" CODTAB[5,7]
DISPLAY "Descrizione@40" S0 DISPLAY "Descrizione@40" S0
OUTPUT F_REGISTROINI CODTAB[5,7] OUTPUT F_REGISTROINI CODTAB[5,7]
FLAGS "R" FLAGS "UR"
CHECKTYPE NORMAL //CHECKTYPE NORMAL
HELP "Introdurre cod. registro iva di inizio stampa: vuoto = inizio archivio" HELP "Introdurre cod. registro iva di inizio stampa: vuoto = inizio archivio"
END END
@ -167,13 +170,15 @@ STRING F_REGISTROFIN 3
BEGIN BEGIN
PROMPT 40 15 "al reg. iva " PROMPT 40 15 "al reg. iva "
COPY USE F_REGISTROINI COPY USE F_REGISTROINI
INPUT CODTAB[1,5] F_ANNO SELECT //INPUT CODTAB[1,5] F_ANNO SELECT
//INPUT CODTAB[1,5] ""
INPUT CODTAB[5,7] F_REGISTROFIN INPUT CODTAB[5,7] F_REGISTROFIN
DISPLAY "Anno" CODTAB[1,4]
DISPLAY "Cod. registro iva" CODTAB[5,7] DISPLAY "Cod. registro iva" CODTAB[5,7]
DISPLAY "Descrizione@40" S0 DISPLAY "Descrizione@40" S0
OUTPUT F_REGISTROFIN CODTAB[5,7] OUTPUT F_REGISTROFIN CODTAB[5,7]
FLAGS "R" FLAGS "UR"
CHECKTYPE NORMAL //CHECKTYPE NORMAL
HELP "Introdurre cod. registro iva di fine stampa: vuoto = fine archivio" HELP "Introdurre cod. registro iva di fine stampa: vuoto = fine archivio"
END END
@ -184,7 +189,7 @@ END
BOOLEAN F_STAMPAMOVP BOOLEAN F_STAMPAMOVP
BEGIN BEGIN
PROMPT 2 17 "Stampa movimenti provvisori " PROMPT 2 17 "Stampa movimenti provvisori "
END END
/* /*

View File

@ -39,12 +39,13 @@ BEGIN
DISPLAY "Data inizio esercizio" D0 DISPLAY "Data inizio esercizio" D0
DISPLAY "Data fine esercizio" D1 DISPLAY "Data fine esercizio" D1
OUTPUT F_ANNO CODTAB OUTPUT F_ANNO CODTAB
FLAGS "RZ"
END END
DATE F_DATAINI DATE F_DATAINI
BEGIN BEGIN
PROMPT 2 6 "Stampa movimenti dalla data " PROMPT 2 6 "Stampa movimenti dalla data "
HELP "Se non indicato nessun valore viene effettuata una stampa completa in ordine di data" //HELP "Se non indicato nessun valore viene effettuata una stampa completa in ordine di data"
END END
DATE F_DATAFIN DATE F_DATAFIN
@ -67,7 +68,7 @@ END
NUMBER F_CODICEINI 6 NUMBER F_CODICEINI 6
BEGIN BEGIN
PROMPT 2 8 "Stampa dal codice " PROMPT 2 8 "Stampa dal codice "
HELP "Se si desidera l'elenco per clienti e fornitori, specificare prima il codice del cliente da cui iniziare la stampa e poi quello del fornitore" //HELP "Se si desidera l'elenco per clienti e fornitori, specificare prima il codice del cliente da cui iniziare la stampa e poi quello del fornitore"
GROUP 1 GROUP 1
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF F_TIPOELENCO SELECT INPUT TIPOCF F_TIPOELENCO SELECT
@ -119,6 +120,7 @@ END
BOOLEAN F_CAMBIO BOOLEAN F_CAMBIO
BEGIN BEGIN
GROUP 2
PROMPT 2 10 "Cambio pagina per cliente/fornitore " PROMPT 2 10 "Cambio pagina per cliente/fornitore "
END END

View File

@ -1,3 +1,4 @@
#include "cg3100.h" #include "cg3100.h"
PAGE "" -1 -1 76 19 PAGE "" -1 -1 76 19

View File

@ -27,8 +27,13 @@ const MAXSTR = 128;
static char __tmp [MAXSTR]; static char __tmp [MAXSTR];
static TFixed_string tmp (__tmp, MAXSTR); static TFixed_string tmp (__tmp, MAXSTR);
int date2esc(const TDate& d, int* prevesc = NULL);
class CG3200_application : public TPrintapp class CG3200_application : public TPrintapp
{ {
static bool data_inizio (TMask_field& f, KEY k);
static bool data_fine (TMask_field& f, KEY k);
TDociva_array _b; TDociva_array _b;
TRelation* _rel; TRelation* _rel;
TRelation* _rel_clifo; TRelation* _rel_clifo;
@ -43,7 +48,7 @@ class CG3200_application : public TPrintapp
Saldo _sld; Saldo _sld;
TDate _data_ini,_data_fine,_data_finese,_data_finesesucc,_ultima_data_reg; TDate _data_ini,_data_fine,_data_finese,_data_finesesucc,_ultima_data_reg;
TDate _datareg,_datadoc,_data_inizioese; TDate _datareg,_datadoc,_data_inizioese,_datareg_stampa;
int _cur1,_cur2,_cur3,_gruppo,_conto,_numcarat,_stampanum,_numivd; int _cur1,_cur2,_cur3,_gruppo,_conto,_numcarat,_stampanum,_numivd;
int _numrig,_natdoc,_tipo,_tipostampa; int _numrig,_natdoc,_tipo,_tipostampa;
real _progredare,_progreavere,_totprogre_dare_al,_totprogre_avere_al; real _progredare,_progreavere,_totprogre_dare_al,_totprogre_avere_al;
@ -60,10 +65,9 @@ class CG3200_application : public TPrintapp
bool _stampaprogre,_stampatotiva,_stampatot,_prima_volta,_stampa_mov_prov; bool _stampaprogre,_stampatotiva,_stampatot,_prima_volta,_stampa_mov_prov;
long _annomsk,_annoesmsk,_sottoc,_numreg,_annoes; int _annomsk,_annoesmsk,_annomsksucc,_tipocf;
long _annomsksucc,_numgio,_protiva; long _sottoc,_numreg,_annoes,_numgio,_protiva;
bool _stampa_progressivi_si,_competenza,_inizio_stampa,_puoi_stampare; bool _stampa_progressivi_si,_competenza,_inizio_stampa,_puoi_stampare;
int _tipocf;
char _ricerca; char _ricerca;
TDate _dataregrmov; TDate _dataregrmov;
@ -83,6 +87,7 @@ protected:
virtual void process_link(int id, const char* txt); virtual void process_link(int id, const char* txt);
public: public:
TDate _inizioEs,_fineEs;
bool preprocess_pconti(int file, int counter); bool preprocess_pconti(int file, int counter);
bool preprocess_clifo(int file, int counter); bool preprocess_clifo(int file, int counter);
void set_page_pconti(int file, int counter); void set_page_pconti(int file, int counter);
@ -101,7 +106,7 @@ public:
void stampa_totali132(); void stampa_totali132();
void stampa_totali198(); void stampa_totali198();
void stampa_totaliiva(); void stampa_totaliiva();
void data_fine_esercizio(); void data_fine_esercizio(int);
void data_fine_esercizio_succ(); void data_fine_esercizio_succ();
const char* descrizione_gruppo(); const char* descrizione_gruppo();
const char* descrizione_conto(); const char* descrizione_conto();
@ -113,6 +118,8 @@ public:
CG3200_application(); CG3200_application();
}; };
HIDDEN CG3200_application * app() { return (CG3200_application*) MainApp(); }
void CG3200_application::process_link(int id, const char* txt) void CG3200_application::process_link(int id, const char* txt)
{ {
TToken_string ss(10); TToken_string ss(10);
@ -129,6 +136,24 @@ void CG3200_application::process_link(int id, const char* txt)
if (pn.run()) beep(); if (pn.run()) beep();
} }
int date2esc(const TDate& d, int* prevesc)
{
if (prevesc) *prevesc = 0;
TTable esc("ESC");
for (int err = esc.first(); err == NOERR; err = esc.next())
{
const TDate ia(esc.get("D0")); // Data inizio esercizio
const TDate fa(esc.get("D1")); // Data fine esercizio
app()->_inizioEs = ia;
app()->_fineEs = fa;
const anno = esc.get_int("CODTAB");
if (d >= ia && d <= fa)
return anno;
if (prevesc) *prevesc = anno;
}
return 0;
}
//Questa funzione restituisce vero se il record su piano dei conti ha almeno un //Questa funzione restituisce vero se il record su piano dei conti ha almeno un
//record figlio (e che soddisfa la condizione riguardante la data di registr.). //record figlio (e che soddisfa la condizione riguardante la data di registr.).
//Viene successivamente utilizzata per stampare l'intestazione (e i totali) //Viene successivamente utilizzata per stampare l'intestazione (e i totali)
@ -153,8 +178,23 @@ bool CG3200_application::almeno_un_record()
rmov->put(RMV_SOTTOCONTO,_sottoc); rmov->put(RMV_SOTTOCONTO,_sottoc);
for (rmov->read(); ;rmov->next()) for (rmov->read(); ;rmov->next())
{ {
long annoes = rmov->get_long(RMV_ANNOES); int annoes = rmov->get_int (RMV_ANNOES);
datareg = rmov->get_date(RMV_DATAREG); long numreg = rmov->get_long(RMV_NUMREG);
_mov->setkey(1);
_mov->curr().zero();
_mov->curr().put(MOV_NUMREG,numreg);
_mov->read();
if (_mov->bad())
_mov->zero();
TDate datacomp = (_mov->curr().get(MOV_DATACOMP));
if (_annomsk == 0)
datareg = rmov->get_date(RMV_DATAREG);
else
if (_annomsk != 0)
datareg = datacomp;
gruppo = rmov->get_int(RMV_GRUPPO); gruppo = rmov->get_int(RMV_GRUPPO);
conto = rmov->get_int(RMV_CONTO); conto = rmov->get_int(RMV_CONTO);
sottoc = rmov->get_long(RMV_SOTTOCONTO); sottoc = rmov->get_long(RMV_SOTTOCONTO);
@ -172,13 +212,104 @@ bool CG3200_application::almeno_un_record()
return trovato; return trovato;
} }
HIDDEN bool our_handler(TMask_field& field, KEY key) bool CG3200_application::data_inizio(TMask_field& f, KEY k)
{ {
if (key == K_TAB) int anno;
TDate data;
anno = f.mask().get_int(F_ANNO);
data = f.mask().get (F_DATAINI);
app()->_annomsk = anno;
if (k == K_ENTER)
{ {
const long anno = atol(field.get()); if (anno != 0)
field.mask().enable(F_COMPESE); {
} app()->data_fine_esercizio(anno);
if (data == botime)
app()->_data_ini = app()->_data_inizioese;
else
if (data < app()->_data_inizioese || data > app()->_data_finese)
{
f.error_box("La data non appartiene all' esercizio indicato");
return FALSE;
}
else
app()->_data_ini = data;
}
else
if (anno == 0)
{
if (data == botime)
{
f.error_box("La data deve essere obbligatoriamente indicata");
return FALSE;
}
else
app()->_data_ini = data;
}
}
TString datastr = app()->_data_ini.string();
return TRUE;
}
bool CG3200_application::data_fine(TMask_field& f, KEY k)
{
int annoes;
TDate data, data_ini;
annoes = f.mask().get_int(F_ANNO);
data = f.mask().get (F_DATAFINE);
data_ini = f.mask().get (F_DATAINI);
app()->_annomsk = annoes;
if (k == K_ENTER)
{
if (annoes != 0)
{
app()->data_fine_esercizio(annoes);
if (data == botime)
app()->_data_fine = app()->_data_finese;
else
if (data < app()->_data_inizioese || data > app()->_data_finese)
{
f.error_box("La data non appartiene all' esercizio indicato");
return FALSE;
}
else
app()->_data_fine = data;
}
else
if (annoes == 0)
{
if (data == botime)
{
f.error_box("La data deve essere obbligatoriamente indicata");
return FALSE;
}
date2esc(data_ini);
if (data < app()->_inizioEs || data > app()->_fineEs)
{
f.error_box("La data non appartiene all' esercizio indicato");
return FALSE;
}
else
app()->_data_fine = data;
}
if (data < data_ini)
{
f.error_box("La data finale non puo' essere inferiore alla data di partenza");
return FALSE;
}
}
TString datastr = app()->_data_fine.string();
return TRUE; return TRUE;
} }
@ -230,11 +361,11 @@ void CG3200_application::fai_stampa132()
set_row (1,"@30g#7t", &_numdoc); set_row (1,"@30g#7t", &_numdoc);
set_row (1,"@38g#3t", &_codcaus); set_row (1,"@38g#3t", &_codcaus);
_sezione = current_cursor()->curr(LF_RMOV).get(RMV_SEZIONE); // _sezione = current_cursor()->curr(LF_RMOV).get(RMV_SEZIONE);
if (_sezione == "D") // if (_sezione == "D")
set_row (1,"@85g#t", &_importo_str); // set_row (1,"@85g#t", &_importo_str);
else if (_sezione == "A") // else if (_sezione == "A")
set_row (1,"@101g#t", &_importo_str); // set_row (1,"@101g#t", &_importo_str);
set_row (1,"@117g#3t", &_gruppocontr); set_row (1,"@117g#3t", &_gruppocontr);
set_row (1,"@120g#3t", &_contocontr); set_row (1,"@120g#3t", &_contocontr);
@ -428,7 +559,7 @@ bool CG3200_application::preprocess_pconti(int file, int counter)
_mov->read(); _mov->read();
if (_mov->bad()) if (_mov->bad())
_mov->zero(); _mov->zero();
_annoes = atol(_mov->curr().get(MOV_ANNOES)); _annoes = atoi(_mov->curr().get(MOV_ANNOES));
_regiva = _mov->curr().get(MOV_REG); _regiva = _mov->curr().get(MOV_REG);
// Controlla se saldo e' diverso da 0 // Controlla se saldo e' diverso da 0
@ -437,10 +568,21 @@ bool CG3200_application::preprocess_pconti(int file, int counter)
{ {
_sezione = current_cursor()->curr(LF_RMOV).get(RMV_SEZIONE); _sezione = current_cursor()->curr(LF_RMOV).get(RMV_SEZIONE);
_datareg = (_mov->curr().get(MOV_DATAREG)); if (_annomsk == 0)
{
_datareg = (_mov->curr().get(MOV_DATAREG));
_datareg_stampa = _datareg;
}
else
if (_annomsk != 0)
{
_datareg = _mov->curr().get(MOV_DATACOMP);
_datareg_stampa = _mov->curr().get(MOV_DATAREG);
}
provvis = _mov->curr().get(MOV_PROVVIS); provvis = _mov->curr().get(MOV_PROVVIS);
_dataregs = _datareg.string(); _dataregs = _datareg_stampa.string();
if ((_stampa_mov_prov)||((!_stampa_mov_prov)&&(provvis.trim().empty()))) if ((_stampa_mov_prov)||((!_stampa_mov_prov)&&(provvis.trim().empty())))
{ {
@ -515,6 +657,7 @@ bool CG3200_application::preprocess_pconti(int file, int counter)
_saldo_progressivi += _importo; _saldo_progressivi += _importo;
_saldo_movimenti += _importo; _saldo_movimenti += _importo;
} }
set_row (1,"@85g%s", (const char*) _importo_str);
} }
else if (_sezione == "A") else if (_sezione == "A")
{ {
@ -525,7 +668,9 @@ bool CG3200_application::preprocess_pconti(int file, int counter)
_saldo_progressivi -= _importo; _saldo_progressivi -= _importo;
_saldo_movimenti -= _importo; _saldo_movimenti -= _importo;
} }
set_row (1,"@101g%s", (const char*) _importo_str);
} }
_saldo_progressivi_str=_saldo_progressivi.string("###############"); _saldo_progressivi_str=_saldo_progressivi.string("###############");
_saldo_movimenti_str=_saldo_movimenti.string("###############"); _saldo_movimenti_str=_saldo_movimenti.string("###############");
if (_numcarat == 2) if (_numcarat == 2)
@ -538,9 +683,9 @@ bool CG3200_application::preprocess_pconti(int file, int counter)
else else
return FALSE; return FALSE;
} }
else
return FALSE;
} }
else
return FALSE;
break; break;
} }
default: default:
@ -631,7 +776,7 @@ bool CG3200_application::preprocess_clifo(int file, int counter)
_mov->read(); _mov->read();
if (_mov->bad()) if (_mov->bad())
_mov->zero(); _mov->zero();
_annoes = atol(_mov->curr().get(MOV_ANNOES)); _annoes = atoi(_mov->curr().get(MOV_ANNOES));
_regiva = _mov->curr().get(MOV_REG); _regiva = _mov->curr().get(MOV_REG);
// Controlla se saldo e' diverso da 0 // Controlla se saldo e' diverso da 0
@ -640,10 +785,21 @@ bool CG3200_application::preprocess_clifo(int file, int counter)
{ {
_sezione = current_cursor()->curr(LF_RMOV).get(RMV_SEZIONE); _sezione = current_cursor()->curr(LF_RMOV).get(RMV_SEZIONE);
_datareg = (_mov->curr().get(MOV_DATAREG)); if (_annomsk == 0)
{
_datareg = (_mov->curr().get(MOV_DATAREG));
_datareg_stampa = _datareg;
}
else
if (_annomsk != 0)
{
_datareg = _mov->curr().get(MOV_DATACOMP);
_datareg_stampa = _mov->curr().get(MOV_DATAREG);
}
provvis = _mov->curr().get(MOV_PROVVIS); provvis = _mov->curr().get(MOV_PROVVIS);
_dataregs = _datareg.string(); _dataregs = _datareg_stampa.string();
if ((_stampa_mov_prov)||((!_stampa_mov_prov)&&(provvis.trim().empty()))) if ((_stampa_mov_prov)||((!_stampa_mov_prov)&&(provvis.trim().empty())))
{ {
@ -741,9 +897,9 @@ bool CG3200_application::preprocess_clifo(int file, int counter)
else else
return FALSE; return FALSE;
} }
else
return FALSE;
} }
else
return FALSE;
break; break;
} }
default: default:
@ -1008,33 +1164,39 @@ bool CG3200_application::set_print(int)
TString data1,data2; TString data1,data2;
_puoi_stampare = TRUE; _puoi_stampare = TRUE;
_msk->set_handler (F_DATAINI , data_inizio);
_msk->set_handler (F_DATAFINE , data_fine);
tasto = _msk->run(); tasto = _msk->run();
if (tasto == K_ENTER) if (tasto == K_ENTER)
{ {
_data_ini = (_msk->get(F_DATAINI)); // _data_ini = (_msk->get(F_DATAINI));
_data_fine = (_msk->get(F_DATAFINE)); // _data_fine = (_msk->get(F_DATAFINE));
_annomsk = atol(_msk->get(F_ANNO)); _annomsk = atoi(_msk->get(F_ANNO));
if (_annomsk == 0) /*****
if (_annomsk == 0)
if (_data_fine == botime) //Se data_fine e' vuota if (_data_fine == botime) //Se data_fine e' vuota
_data_fine = eotime; _data_fine = eotime;
if (_annomsk != 0) if (_annomsk != 0)
{ {
_annoesmsk = _annomsk - 1; _annoesmsk = _annomsk - 1;
data_fine_esercizio(); data_fine_esercizio();
if (_data_ini == botime) if (_data_ini == botime)
_data_ini = _data_inizioese; _data_ini = _data_inizioese;
if (_data_fine == botime) if (_data_fine == botime)
_data_fine = _data_finese; _data_fine = _data_finese;
} }
data1 = _data_ini.string(); data1 = _data_ini.string();
data2 = _data_fine.string(); data2 = _data_fine.string();
*****/
_stampaprogre = (bool)(_msk->get(F_STAMPAPROGRE) == "X"); _stampaprogre = (bool)(_msk->get(F_STAMPAPROGRE) == "X");
_stampatotiva = (bool)(_msk->get(F_STAMPATOTIVA) == "X"); _stampatotiva = (bool)(_msk->get(F_STAMPATOTIVA) == "X");
_stampanum = atoi(_msk->get(F_STAMPANUM)); _stampanum = atoi(_msk->get(F_STAMPANUM));
@ -1045,7 +1207,6 @@ bool CG3200_application::set_print(int)
int gruppofine = atoi(_msk->get(F_GRUPPOFINE)); int gruppofine = atoi(_msk->get(F_GRUPPOFINE));
int contofine = atoi(_msk->get(F_CONTOFINE)); int contofine = atoi(_msk->get(F_CONTOFINE));
long sottocontofine = atol(_msk->get(F_SOTTOCONTOFINE)); long sottocontofine = atol(_msk->get(F_SOTTOCONTOFINE));
_competenza = (bool)(_msk->get(F_COMPESE) == "X");
_tipostampa = atoi(_msk->get(F_TIPOSTAMPA)); _tipostampa = atoi(_msk->get(F_TIPOSTAMPA));
_numcarat = atoi(_msk->get(F_NUMCARAT)); _numcarat = atoi(_msk->get(F_NUMCARAT));
int formato = atoi(_msk->get(F_FORMATO)); int formato = atoi(_msk->get(F_FORMATO));
@ -1123,15 +1284,18 @@ bool CG3200_application::set_print(int)
if (_stampatotiva) if (_stampatotiva)
_b.destroy(); _b.destroy();
if (_competenza) /******
if (_competenza)
if (_data_fine == _data_finese) if (_data_fine == _data_finese)
{ {
TDate datafinesucc = _data_fine; TDate datafinesucc = _data_fine;
datafinesucc.addyear(1); datafinesucc.addyear(1);
data_fine_esercizio_succ(); data_fine_esercizio_succ();
if (datafinesucc == _data_finesesucc) if (datafinesucc == _data_finesesucc)
_data_fine = datafinesucc; _data_fine = datafinesucc;
} }
*********/
switch (_tipostampa) switch (_tipostampa)
{ {
@ -1157,12 +1321,12 @@ else
return FALSE; return FALSE;
} }
void CG3200_application::data_fine_esercizio() void CG3200_application::data_fine_esercizio(int anno)
{ {
TString dep; TString dep;
_tabesc->curr().zero(); _tabesc->curr().zero();
dep << format ("%04d",_annomsk); dep << format ("%04d", anno);
_tabesc->curr().put("CODTAB", (const char*) dep); _tabesc->curr().put("CODTAB", (const char*) dep);
_tabesc->read(); _tabesc->read();
_data_finese = _tabesc->curr().get("D1"); _data_finese = _tabesc->curr().get("D1");
@ -1287,8 +1451,8 @@ void CG3200_application::crea_intestazione()
{ {
sep.fill('-'); //Stampa 132 - (sep(132)) sep.fill('-'); //Stampa 132 - (sep(132))
set_header (6, (const char *) sep); set_header (6, (const char *) sep);
set_header (7,"Data@11gNumero@19gDocumento@117gContro@130gAn"); set_header (7,"Operazione@19gDocumento@117gContro@130gAn");
set_header (8,"Registr.@11gregistr@19gData@30gNumero@38gCod.Causale@61gDescrizione@90gDare@106gAvere@117gPartita@130gCo"); set_header (8,"Data@11gnumero@19gData@30gNumero@38gCod.Causale@61gDescrizione@90gDare@106gAvere@117gPartita@130gCo");
sep.fill('-'); sep.fill('-');
set_header (9, (const char *) sep); set_header (9, (const char *) sep);
} }
@ -1296,8 +1460,8 @@ void CG3200_application::crea_intestazione()
{ {
sep1.fill('-'); //Stampa 198 - (sep1(198)) sep1.fill('-'); //Stampa 198 - (sep1(198))
set_header (6,"@1g%s", (const char *) sep1); set_header (6,"@1g%s", (const char *) sep1);
set_header (7,"Data@11gNumero@19gData@30gNumero@172gContro@183gA@185gReg@193gNumero"); set_header (7,"Operazione@19gData@30gNumero@172gContro@183gA@185gReg@193gNumero");
set_header (8,"Registr.@11gregistr.@19gDocumento@38gCod.Causale@68gDescrizione@108gDare@124gAvere@136gSaldo progress.@154gSaldo movim.@172gPartita@183gC@185gIva@189gProtocollo"); set_header (8,"Data@11gnumero@19gDocumento@38gCod.Causale@68gDescrizione@108gDare@124gAvere@136gSaldo progress.@154gSaldo movim.@172gPartita@183gC@185gIva@189gProtocollo");
sep1.fill('-'); sep1.fill('-');
set_header (9,"@1g%s", (const char *) sep1); set_header (9,"@1g%s", (const char *) sep1);
} }
@ -1344,36 +1508,66 @@ void CG3200_application::crea_intestazione()
void CG3200_application::calcola_progressivi_al() void CG3200_application::calcola_progressivi_al()
{ {
long record,sottoc,annoes; long record,sottoc,annoes;
int gruppo,conto; int gruppo,conto;
TDate datareg; TDate datareg;
TLocalisamfile* rmov; TLocalisamfile* rmov;
char sezione;
real importo;
TDate data;
rmov = current_cursor()->file(LF_RMOV); rmov = current_cursor()->file(LF_RMOV);
if (current_cursor()->is_first_match(LF_RMOV)) // if (current_cursor()->is_first_match(LF_RMOV))
// {
record = rmov->recno();
rmov->zero();
rmov->put(RMV_GRUPPO, _gruppo);
rmov->put(RMV_CONTO, _conto);
rmov->put(RMV_SOTTOCONTO, _sottoc);
for (rmov->read(); ;rmov->next())
{ {
record = rmov->recno(); annoes = rmov->get_int (RMV_ANNOES);
rmov->zero(); datareg = rmov->get_date(RMV_DATAREG);
rmov->put(RMV_GRUPPO, _gruppo); sezione = rmov->get (RMV_SEZIONE)[0];
rmov->put(RMV_CONTO, _conto); importo = rmov->get_real(RMV_IMPORTO);
rmov->put(RMV_SOTTOCONTO, _sottoc); long numreg = rmov->get_long(RMV_NUMREG);
for (rmov->read(); ;rmov->next())
_mov->setkey(1);
_mov->curr().zero();
_mov->curr().put(MOV_NUMREG,numreg);
_mov->read();
if (_mov->bad())
_mov->zero();
TDate datacomp = (_mov->curr().get(MOV_DATACOMP));
if (_annomsk == 0)
{ {
annoes = rmov->get_long(RMV_ANNOES); datareg = rmov->get_date(RMV_DATAREG);
datareg = rmov->get_date(RMV_DATAREG); data = _inizioEs;
gruppo = rmov->get_int(RMV_GRUPPO);
conto = rmov->get_int(RMV_CONTO);
sottoc = rmov->get_long(RMV_SOTTOCONTO);
if ((gruppo != _gruppo)&&(conto != _conto)&&(sottoc != _sottoc))
break;
else if ((annoes==_annomsk)&&(_datareg < _data_ini)) //Legge movimenti con data < data iniziale
if (_sezione == "D")
_totale_prima_dare += _importo;
else if (_sezione == "A")
_totale_prima_avere += _importo;
} }
rmov->readat(record); else
if (_annomsk != 0)
{
datareg = datacomp;
data = _data_inizioese;
}
TString data1 = datareg.string();
TString data2 = _data_ini.string();
TString data3 = data.string();
gruppo = rmov->get_int(RMV_GRUPPO);
conto = rmov->get_int(RMV_CONTO);
sottoc = rmov->get_long(RMV_SOTTOCONTO);
if ((gruppo != _gruppo)&&(conto != _conto)&&(sottoc != _sottoc))
break;
else if (((annoes==_annomsk)||(_annomsk == 0))&&(datareg >= data)&&(datareg < _data_ini)) //Legge movimenti con data < data iniziale
if (sezione == 'D')
_totale_prima_dare += importo;
else if (sezione == 'A')
_totale_prima_avere += importo;
} }
rmov->readat(record);
// }
} }
void CG3200_application::calcola_progressivi() void CG3200_application::calcola_progressivi()
@ -1431,7 +1625,7 @@ void CG3200_application::calcola_progressivi()
((saldi.curr()==record) && !saldi.eof()); ((saldi.curr()==record) && !saldi.eof());
saldi.next()) saldi.next())
{ {
long annoes_saldi = saldi.curr().get_long(SLD_ANNOES); int annoes_saldi = saldi.curr().get_int(SLD_ANNOES);
//Calcola i progressivi dell'esercizio attuale //Calcola i progressivi dell'esercizio attuale
@ -1444,52 +1638,60 @@ void CG3200_application::calcola_progressivi()
} }
//Calcola i progressivi dell'esercizio precedente //Calcola i progressivi dell'esercizio precedente
if (annoes_saldi == _annoesmsk)
{
pdarescap = saldi.curr().get_real(SLD_PDARESCA);
pdarep = saldi.curr().get_real(SLD_PDARE);
paverescap = saldi.curr().get_real(SLD_PAVERESCA);
paverep = saldi.curr().get_real(SLD_PAVERE);
// Se il saldo dell'esercizio attuale e' diverso da 0 allora significa che
// quello corrisponde al saldo finale dell'esercizio precedente. Per ottenere
// i progressivi dell'esercizio precedente devo a questo punto sommare i
// progressivi dell'esercizio e i progressivi di quelli scaricati, tenendo
// conto del flag salini per sapere se il saldo e' dare oppure avere.
if (saldo != 0) if (_annomsk != 0)
{ {
if (salini == 'D') if (annoes_saldi == _annoesmsk)
{
progredare_eseprec = saldo + pdarescap + pdarep;
progreavere_eseprec = paverescap + paverep;
}
else if (salini == 'A')
{
progredare_eseprec = pdarescap + pdarep;
progreavere_eseprec = saldo + paverescap + paverep;
}
}
else
{ {
pdarescap = saldi.curr().get_real(SLD_PDARESCA);
pdarep = saldi.curr().get_real(SLD_PDARE);
paverescap = saldi.curr().get_real(SLD_PAVERESCA);
paverep = saldi.curr().get_real(SLD_PAVERE);
// Se il saldo dell'esercizio attuale e' diverso da 0 allora significa che
// quello corrisponde al saldo finale dell'esercizio precedente. Per ottenere
// i progressivi dell'esercizio precedente devo a questo punto sommare i
// progressivi dell'esercizio e i progressivi di quelli scaricati, tenendo
// conto del flag salini per sapere se il saldo e' dare oppure avere.
//Se il saldo dell'esercizio attuale non e' diverso da zero, allora il saldo if (saldo != 0)
// finale dell'esercizio precedente devo calcolarmelo tenendo conto dell'indbil
if ((indbil == 1) || (indbil == 2) || (indbil == 5))
{ {
saldo = _sld.saldofin_esprec(_annomsk,_gruppo,_conto,_sottoc); if (salini == 'D')
if (saldo.sign() > 0)
{ {
progredare_eseprec = saldo + pdarescap + pdarep; progredare_eseprec = saldo;// + pdarescap + pdarep;
progreavere_eseprec = paverescap + paverep; progdare_prec = saldo;
// progreavere_eseprec = paverescap;// + paverep;
} }
else if (saldo.sign() < 0) else if (salini == 'A')
{ {
progredare_eseprec = pdarescap + pdarep; // progredare_eseprec = pdarescap;// + pdarep;
progreavere_eseprec = saldo + paverescap + paverep; progreavere_eseprec = saldo;// + paverescap + paverep;
progavere_prec = saldo;
}
}
else
{
//Se il saldo dell'esercizio attuale non e' diverso da zero, allora il saldo
// finale dell'esercizio precedente devo calcolarmelo tenendo conto dell'indbil
if ((indbil == 1) || (indbil == 2) || (indbil == 5))
{
saldo = _sld.saldofin_esprec(_annomsk,_gruppo,_conto,_sottoc);
if (saldo.sign() > 0)
{
progredare_eseprec = saldo;// + pdarescap + pdarep;
progdare_prec = saldo;
// progreavere_eseprec = paverescap + paverep;
}
else if (saldo.sign() < 0)
{
// progredare_eseprec = pdarescap + pdarep;
saldo = -saldo;
progreavere_eseprec = saldo;// + paverescap + paverep;
progavere_prec = saldo;
}
} }
} }
} }
@ -1500,13 +1702,19 @@ void CG3200_application::calcola_progressivi()
//dei progressivi dell'anno esercizio precedente, e dei progressivi dei //dei progressivi dell'anno esercizio precedente, e dei progressivi dei
//movimenti scaricati dell'esercizio attuale. //movimenti scaricati dell'esercizio attuale.
calcola_progressivi_al(); // calcola_progressivi_al();
_progredare = pdaresca + progredare_eseprec + _totale_prima_dare; // _progredare = pdaresca + progredare_eseprec + _totale_prima_dare;
_progreavere = paveresca + progreavere_eseprec + _totale_prima_avere; // _progreavere = paveresca + progreavere_eseprec + _totale_prima_avere;
_saldo_progre_prec = _progredare - _progreavere; // _saldo_progre_prec = _progredare - _progreavere;
} // FOR } // FOR
calcola_progressivi_al();
_progredare = pdaresca + progredare_eseprec + _totale_prima_dare;
_progreavere = paveresca + progreavere_eseprec + _totale_prima_avere;
_saldo_progre_prec = _progredare - _progreavere;
if (_numcarat == 1) if (_numcarat == 1)
{ {
TString string = _saldo_progre_prec.string("###############"); TString string = _saldo_progre_prec.string("###############");
@ -1531,7 +1739,7 @@ void CG3200_application::calcola_progressivi()
//Sommo i progressivi dell'esercizio precedente e quelli dell'esercizio attuale //Sommo i progressivi dell'esercizio precedente e quelli dell'esercizio attuale
//altrimenti solo quelli dell'esercizio attuale //altrimenti solo quelli dell'esercizio attuale
if (_competenza) if (_annomsk != 0)
{ {
_totprogre_dare_al = progdare_attuale + progdare_prec; _totprogre_dare_al = progdare_attuale + progdare_prec;
_totprogre_avere_al = progavere_attuale + progavere_prec; _totprogre_avere_al = progavere_attuale + progavere_prec;
@ -1609,12 +1817,20 @@ void CG3200_application::ricerca_clifo()
set_header(4,"@23g%-50s",(const char*) descriz); set_header(4,"@23g%-50s",(const char*) descriz);
dataini = _data_ini.string(); dataini = _data_ini.string();
set_header (5, "@1gPeriodo@10g%s", (const char*) dataini); datafine = _data_fine.string();
if (_data_fine != eotime)
if (_annomsk == 0)
{ {
datafine = _data_fine.string(); set_header (5, "Periodo@10g%s", (const char*) dataini);
set_header (5, "@22g%s", (const char*) datafine); set_header (5, "@22g%s", (const char*) datafine);
} }
else
if (_annomsk != 0)
{
set_header (5, "Periodo di competenza@23g%s", (const char*) dataini);
set_header (5, "@35g%s", (const char*) datafine);
}
set_header (5, "@34g%-11s",(const char*) paiv); set_header (5, "@34g%-11s",(const char*) paiv);
set_header (5, "@46g%-16s",(const char*) cofi); set_header (5, "@46g%-16s",(const char*) cofi);
set_header (5, "@63g%-25s",(const char*) indcf); set_header (5, "@63g%-25s",(const char*) indcf);
@ -1673,12 +1889,19 @@ void CG3200_application::ricerca_gruppo()
set_header(4,"@27g%-50s",(const char*) descriz); set_header(4,"@27g%-50s",(const char*) descriz);
dataini = _data_ini.string(); dataini = _data_ini.string();
set_header (5, "@0gPeriodo@12g%s", (const char*) dataini); datafine = _data_fine.string();
if (_data_fine != eotime)
if (_annomsk == 0)
{ {
datafine = _data_fine.string(); set_header (5, "Periodo@12g%s", (const char*) dataini);
set_header (5, "@24g%s", (const char*) datafine); set_header (5, "@24g%s", (const char*) datafine);
} }
else
if (_annomsk != 0)
{
set_header (5, "Periodo di competenza@23g%s", (const char*) dataini);
set_header (5, "@35g%s", (const char*) datafine);
}
} }
//Ricerca la descrizione relativa al gruppo da stampare //Ricerca la descrizione relativa al gruppo da stampare
@ -1779,7 +2002,6 @@ void CG3200_application::user_create()
_tabesc = new TTable (TAB_ESC); _tabesc = new TTable (TAB_ESC);
_msk = new TMask("cg3200a"); _msk = new TMask("cg3200a");
_msk->set_handler(F_ANNO, our_handler);
_inizio_stampa = TRUE; _inizio_stampa = TRUE;
} }

View File

@ -16,7 +16,6 @@
#define F_SOTTOCONTOFINE 108 #define F_SOTTOCONTOFINE 108
#define F_DATAINI 109 #define F_DATAINI 109
#define F_DATAFINE 110 #define F_DATAFINE 110
#define F_COMPESE 111
#define F_STAMPANUM 112 #define F_STAMPANUM 112
#define F_STAMPAPROGRE 113 #define F_STAMPAPROGRE 113
#define F_STAMPATOTIVA 114 #define F_STAMPATOTIVA 114

View File

@ -22,15 +22,40 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
TEXT 96
BEGIN
PROMPT 4 10 "Dalla data competenza "
END
TEXT 97
BEGIN
PROMPT 40 10 "Alla data competenza "
END
TEXT 98
BEGIN
PROMPT 4 10 "Dalla data operazione "
END
TEXT 99
BEGIN
PROMPT 40 10 "Alla data operazione "
END
NUMBER F_ANNO 4 NUMBER F_ANNO 4
BEGIN BEGIN
PROMPT 47 1 "Anno esercizio " PROMPT 47 1 "Anno esercizio "
HELP "Inserire un anno esercizio presente nella tabella oppure niente: in quest'ultimo caso non e' possibile fare il controllo competenza esercizio" HELP "Inserire un anno esercizio presente nella tabella oppure niente: in quest'ultimo caso non e' possibile fare il controllo competenza esercizio"
USE ESC USE ESC
INPUT CODTAB F_ANNO INPUT CODTAB F_ANNO
DISPLAY "Anno Esercizio@50" CODTAB DISPLAY "Anno Esercizio" CODTAB
DISPLAY "Data inizio esercizio" D0
DISPLAY "Data fine esercizio " D1
OUTPUT F_ANNO CODTAB OUTPUT F_ANNO CODTAB
CHECKTYPE NORMAL CHECKTYPE NORMAL
MESSAGE HIDE,98|HIDE,99|SHOW,96|SHOW,97
MESSAGE EMPTY HIDE,96|HIDE,97|SHOW,98|SHOW,99
FLAGS "RZ"
END END
LIST F_RICERCA 25 LIST F_RICERCA 25
@ -454,32 +479,27 @@ END
DATE F_DATAINI DATE F_DATAINI
BEGIN BEGIN
PROMPT 4 10 "Data inizio " PROMPT 26 10 ""
END END
DATE F_DATAFINE DATE F_DATAFINE
BEGIN BEGIN
PROMPT 51 10 "Data fine " PROMPT 62 10 ""
END
BOOLEAN F_COMPESE
BEGIN
PROMPT 4 12 "Controllo competenza esercizio"
END END
BOOLEAN F_STAMPATOTIVA
BEGIN
PROMPT 4 12 "Stampa totali documenti IVA"
END
BOOLEAN F_STAMPAPROGRE BOOLEAN F_STAMPAPROGRE
BEGIN BEGIN
PROMPT 44 12 "Stampa progressivi attuali" PROMPT 44 12 "Stampa progressivi attuali"
END END
BOOLEAN F_STAMPATOTIVA
BEGIN
PROMPT 4 13 "Stampa totali documenti IVA"
END
BOOLEAN F_STAMPAMOVPROV BOOLEAN F_STAMPAMOVPROV
BEGIN BEGIN
PROMPT 44 13 "Stampa movimenti provvisori" PROMPT 4 13 "Stampa movimenti provvisori"
END END
LIST F_STAMPANUM 15 LIST F_STAMPANUM 15

View File

@ -1,5 +1,4 @@
// cg3400 // cg3400 - Stampa libro giornale
// Stampa libro giornale
#include <applicat.h> #include <applicat.h>
#include <isam.h> #include <isam.h>
@ -26,32 +25,27 @@
#include <clifo.h> #include <clifo.h>
#include <occas.h> #include <occas.h>
#ifndef __CG3401_H #include "cglib03.h"
#include "cg3401.h" // qui c'e' TRigaiva_array #include "cg2103.h"
#endif
#include "cg3400a.h" #include "cg3400a.h"
#include "cg3400b.h" #include "cg3400b.h"
#define RIGHE_FOOTER 10 #define RIGHE_FOOTER 10
#define REAL_PICTURE "###.###.###.###" #define REAL_PICTURE "###.###.###.###"
const MAXSTR = 128; static TString256 tmp;
static char __tmp [MAXSTR];
static TFixed_string tmp (__tmp, MAXSTR); HIDDEN int date2esc(const TDate& d, int* prevesc = NULL);
enum descr { causale, conto, operazione }; enum descr { causale, conto, operazione };
bool mask_a_cod_reg (TMask_field& f, KEY k);
bool mask_a_data (TMask_field& f, KEY k);
bool mask_b_ripristina (TMask_field& f, KEY k);
class CG3400_application : public TPrintapp class CG3400_application : public TPrintapp
{ {
friend bool mask_a_cod_reg (TMask_field& f, KEY k); static bool mask_a_cod_reg (TMask_field& f, KEY k);
friend bool mask_a_data (TMask_field& f, KEY k); static bool mask_a_data (TMask_field& f, KEY k);
friend bool mask_b_ripristina(TMask_field& f, KEY k); static bool mask_b_ripristina(TMask_field& f, KEY k);
public:
TRigaiva_array _iva_array; TRigaiva_array _iva_array;
TRelation * _rel; TRelation * _rel;
TCursor * _cur; TCursor * _cur;
@ -59,7 +53,6 @@ class CG3400_application : public TPrintapp
TString _reg_cod, _reg_anno, _reg_descr; TString _reg_cod, _reg_anno, _reg_descr;
TDate _data_da, _data_a, _last_data; TDate _data_da, _data_a, _last_data;
bool _stampa_definitiva;
real _tot_dare, _tot_avere; // valori di partenza real _tot_dare, _tot_avere; // valori di partenza
real _tot_dare_progr, _tot_avere_progr; // progressivi real _tot_dare_progr, _tot_avere_progr; // progressivi
real _tot_dare_gg , _tot_avere_gg ; // giornalieri real _tot_dare_gg , _tot_avere_gg ; // giornalieri
@ -86,6 +79,10 @@ class CG3400_application : public TPrintapp
TTable *_tabreg, *_tabval, *_tabes; TTable *_tabreg, *_tabval, *_tabes;
public: public:
bool _stampa_definitiva;
TDate _inizioEs, _fineEs; // date inizio e fine esercizio
TString256 _riporto; // riga di stampa per i riporti
TString256 _intes; // riga di stampa per intestazione
virtual void preprocess_header(); virtual void preprocess_header();
virtual void preprocess_footer(); virtual void preprocess_footer();
virtual bool preprocess_page(int, int); virtual bool preprocess_page(int, int);
@ -126,26 +123,37 @@ public:
const char * get_descr_caus (const char * codcaus); const char * get_descr_caus (const char * codcaus);
CG3400_application() : _reg_cod(3), _reg_anno(4), _tot_dare_progr(0.00), CG3400_application() : _reg_cod(3), _reg_anno(4), _tot_dare_progr(0.00),
_tot_avere_progr (0.00), _data_da(""), _data_a("") _tot_avere_progr (0.00), _data_da(""), _data_a("") {};
{};
virtual ~CG3400_application() {}; virtual ~CG3400_application() {};
}; };
HIDDEN CG3400_application * app() { return (CG3400_application*) MainApp(); }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// Funzioni legate ai parametri ditta // Funzioni legate ai parametri ditta
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
bool libro_giornale_iva_unico() HIDDEN bool libro_giornale_iva_unico()
{ {
TConfig conf(CONFIG_DITTA); static bool lgiu = 2;
return conf.get("StLgiU") == "X"; if (lgiu == 2)
{
TConfig conf(CONFIG_DITTA);
lgiu = conf.get_bool("StLgiU");
}
return lgiu;
} }
bool libro_cronologico() HIDDEN bool libro_cronologico()
{ {
TConfig conf(CONFIG_DITTA); static bool lc = 2;
return conf.get("GsLbCr") == "X"; if (lc == 2)
{
TConfig conf(CONFIG_DITTA);
lc = conf.get_bool("GsLbCn");
}
return lc;
} }
TRectype& look_com (const char * cod, TLocalisamfile *comuni) TRectype& look_com (const char * cod, TLocalisamfile *comuni)
@ -162,29 +170,20 @@ TRectype& look_com (const char * cod, TLocalisamfile *comuni)
bool CG3400_application::IsInEsercizio (TDate& da, TDate& a, int anno_eser) bool CG3400_application::IsInEsercizio (TDate& da, TDate& a, int anno_eser)
{ {
TTable& TabEs = *_tabes; TTable& TabEs = *_tabes;
TString codtab; TString16 codtab;
TDate inizio, fine;
if (!da.ok() || !a.ok()) return FALSE; if (!da.ok() || !a.ok()) return FALSE;
codtab.format ("%-4d", anno_eser);
TabEs.zero(); TabEs.zero();
codtab << format ("%-4d", anno_eser);
TabEs.put ("CODTAB", codtab); TabEs.put ("CODTAB", codtab);
TabEs.read(); TabEs.read();
if (TabEs.good()) if (TabEs.good())
{ {
inizio = TabEs.get_date ("D0"); _inizioEs = TabEs.get_date ("D0");
fine = TabEs.get_date ("D1"); _fineEs = TabEs.get_date ("D1");
if ((da >= inizio) && (a <= fine)) return (da >= _inizioEs && a <= _fineEs);
return TRUE;
else
{
TString da(inizio.string());
TString a(fine.string());
warning_box("Le date devono essere comprese tra %s e %s", (const char*)da, (const char*)a);
return FALSE;
}
} }
return FALSE; return FALSE;
} }
@ -192,19 +191,20 @@ bool CG3400_application::IsInEsercizio (TDate& da, TDate& a, int anno_eser)
const char * CG3400_application::SimboloValuta (const char * cod) const char * CG3400_application::SimboloValuta (const char * cod)
{ {
TTable& tab_val = *_tabval; TTable& tab_val = *_tabval;
TString codtab = format ("%-3s", cod); TString16 codtab;
// static char simbolo;
codtab.format ("%-3s", cod);
tab_val.zero(); tab_val.zero();
tab_val.put("CODTAB", codtab); tab_val.put("CODTAB", codtab);
tab_val.read(); tab_val.read();
if (tab_val.good()) if (tab_val.good())
tmp = tab_val.get("S7"); tmp = tab_val.get("S7");
else else
tmp = ""; tmp = "";
return __tmp; return tmp;
} }
const char * CG3400_application::get_descr_caus (const char * codcaus) const char * CG3400_application::get_descr_caus (const char * codcaus)
@ -213,14 +213,10 @@ const char * CG3400_application::get_descr_caus (const char * codcaus)
caus.zero(); caus.zero();
caus.put (CAU_CODCAUS, codcaus); caus.put (CAU_CODCAUS, codcaus);
if (caus.read() != NOERR) caus.zero();
caus.read();
if (caus.bad())
caus.zero();
tmp = caus.get(CAU_DESCR); tmp = caus.get(CAU_DESCR);
return __tmp; return tmp;
} }
TLocalisamfile * CG3400_application::get_descr (TLocalisamfile *pconti, TLocalisamfile * CG3400_application::get_descr (TLocalisamfile *pconti,
@ -626,17 +622,16 @@ void CG3400_application::preprocess_footer()
int CG3400_application::stampa_intestazione_ditta() int CG3400_application::stampa_intestazione_ditta()
{ {
int r=1; int r=1;
TString riga(_stampa_width);
get_dati_ditta(); get_dati_ditta();
set_header (r, "Ditta: %s Via %s %s %s %s", (const char *)_ragsoc, set_header (r, "Ditta: %s Via %s %s %s %s", (const char *)_ragsoc,
(const char *)_viafis, (const char *)_cap, (const char *)_viafis, (const char *)_cap,
(const char *)_comunefis, (const char *)_provfis); (const char *)_comunefis, (const char *)_provfis);
r++; r++;
riga = "Data @>"; _intes = "Data @>";
riga.right_just(_stampa_width-15); // perche' il codice viene espanso nella data con l'anno in 4 caratteri _intes.right_just(_stampa_width-15); // perche' il codice viene espanso nella data con l'anno in 4 caratteri
riga.overwrite (format ("Partita iva %s @24gCodice fiscale %s", (const char*)_paiva, (const char*)_cofi)); _intes.overwrite (format ("Partita iva %s @24gCodice fiscale %s", (const char*)_paiva, (const char*)_cofi));
set_header (r, "%s", (const char*) riga); set_header (r, "%s", (const char*) _intes);
r++; r++;
return r; return r;
@ -709,6 +704,9 @@ int CG3400_application::set_header_132()
set_header(r, riga); set_header(r, riga);
r++; r++;
////////////////////////////////////////////////////////////////////
// LIBRO GIORNALE IVA UNICO
////////////////////////////////////////////////////////////////////
if (_libro_giornale_iva_unico) if (_libro_giornale_iva_unico)
{ {
set_header(r, "Ri"); set_header(r, "Ri");
@ -756,16 +754,16 @@ void CG3400_application::preprocess_header()
if (pag > 0) // Stampa riporti if (pag > 0) // Stampa riporti
{ {
TString dep (_stampa_width);
dare.right_just(); dare.right_just();
avere.right_just(); avere.right_just();
if (_stampa_width == 132) if (_stampa_width == 132)
dep = format ("@86gRiporto:@95g %15s @112g %15s", (const char *) dare, _riporto.format ("@86gRiporto:@95g %15s @112g %15s",
(const char *) avere ); (const char *) dare,
(const char *) avere );
else else
dep = format ("@100gRiporto %s @140g %s", (const char *) dare, _riporto.format ("@100gRiporto %s @140g %s", (const char *) dare,
(const char *) avere ); (const char *) avere );
set_header (r, "%s", (const char *) dep); set_header (r, "%s", (const char *) _riporto);
} }
} }
@ -1226,8 +1224,11 @@ void CG3400_application::setta_righe_indirizzo()
// //
void CG3400_application::aggiorna_tabreg(int partito_da, int stampate) void CG3400_application::aggiorna_tabreg(int partito_da, int stampate)
{ {
TString codtab = format ("%4s%-3s", (const char*) _reg_anno, TString16 codtab;
(const char*) _reg_cod);
codtab.format ("%4s%-3s", (const char*) _reg_anno,
(const char*) _reg_cod);
_tabreg->zero(); _tabreg->zero();
_tabreg->put("CODTAB", codtab); _tabreg->put("CODTAB", codtab);
_tabreg->read(); _tabreg->read();
@ -1247,7 +1248,9 @@ void CG3400_application::aggiorna_tabreg(int partito_da, int stampate)
bool CG3400_application::leggi_tabreg(const char * reg_cod, bool CG3400_application::leggi_tabreg(const char * reg_cod,
const char * reg_anno) const char * reg_anno)
{ {
TString codtab = format ("%4s%-3s", reg_anno, reg_cod); TString16 codtab;
codtab.format ("%4s%-3s", reg_anno, reg_cod);
_tabreg->zero(); _tabreg->zero();
_tabreg->put("CODTAB", codtab); _tabreg->put("CODTAB", codtab);
@ -1268,24 +1271,60 @@ bool CG3400_application::leggi_tabreg(const char * reg_cod,
return TRUE; return TRUE;
} }
// Calcola l'anno di esercizio di una data
// Certified 99%
HIDDEN int date2esc(const TDate& d, int* prevesc)
{
if (prevesc) *prevesc = 0;
TTable esc("ESC");
for (int err = esc.first(); err == NOERR; err = esc.next())
{
const TDate ia(esc.get("D0")); // Data inizio esercizio
const TDate fa(esc.get("D1")); // Data fine esercizio
app()->_inizioEs = ia;
app()->_fineEs = fa;
const anno = esc.get_int("CODTAB");
if (d >= ia && d <= fa)
return anno;
if (prevesc) *prevesc = anno;
}
return 0;
}
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// //
// MASCHERE // MASCHERE
// //
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
bool mask_a_data (TMask_field& f, KEY k) bool CG3400_application::mask_a_data (TMask_field& f, KEY k)
{ {
CG3400_application * app = (CG3400_application*) MainApp();
if (k == K_ENTER) if (k == K_ENTER)
{ {
TDate da(f.mask().get(DATA_DA)); TMask& m = f.mask();
TDate a(f.mask().get(DATA_A)); const TDate data_a(f.get());
int anno = atoi(f.mask().field(ANNO_ESER).get()); const TString16 codreg(m.get(CODREG));
if ( (f.dlg() == DATA_DA) && (anno == 0 ) ) const int ae = date2esc(data_a); // Anno esercizio
f.mask().field(ANNO_ESER).set (format ("%4d",da.year())); if (ae == 0)
if (!app->IsInEsercizio(da,a,anno)) return f.error_box("La data specificata non appartiene a nessun esercizio");
return FALSE;
TRegistro reg(codreg, ae);
if (!reg.ok())
return f.warning_box("Non trovo il registro %s per l'esercizio %d",
(const char *) codreg, ae);
if (reg.tipo() != 5)
return f.warning_box("Il registro %s non e' di tipo libro giornale",
(const char *) codreg);
if (!app()->_stampa_definitiva)
{
const TDate data_da(m.get(DATA_DA));
const TString16 ie(app()->_inizioEs.string());
const TString16 fe(app()->_fineEs.string());
if (data_da < app()->_inizioEs || data_a > app()->_fineEs);
return f.warning_box("Le date devono essere comprese tra %s e %s",
(const char*)ie, (const char*)fe);
}
} }
return TRUE; return TRUE;
} }
@ -1300,7 +1339,7 @@ bool mask_a_data (TMask_field& f, KEY k)
// Se no, riempie il campo PAGINA_DA con il valore precedente. // Se no, riempie il campo PAGINA_DA con il valore precedente.
// Se si', mette semplicemente l'ultimo numero di pagina precedente + 1 // Se si', mette semplicemente l'ultimo numero di pagina precedente + 1
// //
bool mask_a_cod_reg (TMask_field& f, KEY k) bool CG3400_application::mask_a_cod_reg (TMask_field& f, KEY k)
{ {
TString reg_cod(""),reg_anno(""); TString reg_cod(""),reg_anno("");
@ -1308,7 +1347,7 @@ bool mask_a_cod_reg (TMask_field& f, KEY k)
{ {
CG3400_application * a = (CG3400_application*) MainApp(); CG3400_application * a = (CG3400_application*) MainApp();
reg_cod = f.mask().field(REG_COD).get(); reg_cod = f.mask().field(CODREG).get();
reg_anno = f.mask().field(ANNO_ESER).get(); reg_anno = f.mask().field(ANNO_ESER).get();
a->leggi_tabreg(reg_cod, reg_anno); a->leggi_tabreg(reg_cod, reg_anno);
@ -1333,7 +1372,7 @@ bool mask_a_cod_reg (TMask_field& f, KEY k)
// Se premo il bottone <Ripristina> rimetto i valori precedenti // Se premo il bottone <Ripristina> rimetto i valori precedenti
// dentro ai campi (per ripetere la stampa) // dentro ai campi (per ripetere la stampa)
// //
bool mask_b_ripristina (TMask_field& f, KEY k) bool CG3400_application::mask_b_ripristina (TMask_field& f, KEY k)
{ {
CG3400_application * a = (CG3400_application*) MainApp(); CG3400_application * a = (CG3400_application*) MainApp();
@ -1352,8 +1391,8 @@ bool CG3400_application::set_print(int)
TMask mb ("cg3400b"); TMask mb ("cg3400b");
KEY tasto; KEY tasto;
ma.set_handler (REG_COD, mask_a_cod_reg); ma.set_handler (CODREG, mask_a_cod_reg);
ma.set_handler (DATA_DA, mask_a_data); // ma.set_handler (DATA_DA, mask_a_data);
ma.set_handler (DATA_A, mask_a_data); ma.set_handler (DATA_A, mask_a_data);
mb.set_handler (DLG_RIPRISTINA, mask_b_ripristina); mb.set_handler (DLG_RIPRISTINA, mask_b_ripristina);
@ -1364,7 +1403,7 @@ bool CG3400_application::set_print(int)
if (tasto == K_ENTER) if (tasto == K_ENTER)
{ {
_reg_cod = ma.get(REG_COD); _reg_cod = ma.get(CODREG);
_reg_anno = ma.get(ANNO_ESER); _reg_anno = ma.get(ANNO_ESER);
_stampa_definitiva = (bool) (ma.get(STAMPA_DEF) == "X"); _stampa_definitiva = (bool) (ma.get(STAMPA_DEF) == "X");
_data_da = ma.get(DATA_DA); _data_da = ma.get(DATA_DA);

View File

@ -1,6 +1,6 @@
// cg3400a.h // cg3400a.h
#define REG_COD 100 #define CODREG 100
#define DATA_DA 101 #define DATA_DA 101
#define DATA_A 102 #define DATA_A 102
#define STAMPA_DEF 103 #define STAMPA_DEF 103

View File

@ -1,112 +1,112 @@
#include "cg3400a.h" #include "cg3400a.h"
PAGE "" -1 -1 70 15 PAGE "" -1 -1 70 15
STRING REG_COD 3 STRING REG_COD 3
BEGIN BEGIN
PROMPT 1 1 "Codice registro " PROMPT 1 1 "Codice registro "
FLAGS "U" FLAGS "U"
USE REG SELECT (I0 = 5) || (I0 = 4) USE REG SELECT (I0 = 5) || (I0 = 4)
INPUT CODTAB[1,4] ANNO_ESER SELECT INPUT CODTAB[1,4] ANNO_ESER
INPUT CODTAB[5,7] REG_COD INPUT CODTAB[5,7] REG_COD
DISPLAY "Anno" CODTAB[1,4] DISPLAY "Anno" CODTAB[1,4]
DISPLAY "Codice" CODTAB[5,7] DISPLAY "Codice" CODTAB[5,7]
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Tipo" I0 DISPLAY "Tipo" I0
OUTPUT ANNO_ESER CODTAB[1,4] OUTPUT ANNO_ESER CODTAB[1,4]
OUTPUT REG_COD CODTAB[5,7] OUTPUT REG_COD CODTAB[5,7]
OUTPUT REG_DESC S0 OUTPUT REG_DESC S0
OUTPUT PAGINA_DA I1 OUTPUT PAGINA_DA I1
// OUTPUT DATA_DA D0 // OUTPUT DATA_DA D0
OUTPUT DATA_A D1 OUTPUT DATA_A D1
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
NUMBER ANNO_ESER 4 NUMBER ANNO_ESER 4
BEGIN BEGIN
PROMPT 30 1 "Esercizio " PROMPT 30 1 "Esercizio "
USE ESC USE ESC
INPUT CODTAB ANNO_ESER INPUT CODTAB ANNO_ESER
DISPLAY "Anno" CODTAB DISPLAY "Anno" CODTAB
DISPLAY "Data inizio " D0 DISPLAY "Data inizio " D0
DISPLAY "Data fine " D1 DISPLAY "Data fine " D1
DISPLAY "Data scarico" D2 DISPLAY "Data scarico" D2
OUTPUT ANNO_ESER CODTAB OUTPUT ANNO_ESER CODTAB
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FLAGS "A" FLAGS "H"
END END
STRING REG_DESC 50 STRING REG_DESC 50
BEGIN BEGIN
PROMPT 1 3 "Descrizione: " PROMPT 1 3 "Descrizione: "
FLAGS "D" FLAGS "D"
END END
GROUPBOX DLG_NULL 25 5 GROUPBOX DLG_NULL 25 5
BEGIN BEGIN
PROMPT 1 5 "Intervallo" PROMPT 1 5 "Intervallo"
END END
RADIOBUTTON DLG_NULL 20 RADIOBUTTON DLG_NULL 20
BEGIN BEGIN
PROMPT 1 5 "" PROMPT 1 5 ""
ITEM "1|Tutto" MESSAGE DISABLE, PAGINA_DA ITEM "1|Tutto" MESSAGE DISABLE, PAGINA_DA
ITEM "2|Da pagina" MESSAGE ENABLE, PAGINA_DA ITEM "2|Da pagina" MESSAGE ENABLE, PAGINA_DA
END END
NUMBER PAGINA_DA 5 NUMBER PAGINA_DA 5
BEGIN BEGIN
PROMPT 13 8 "" PROMPT 13 8 ""
END END
GROUPBOX DLG_NULL 33 5 GROUPBOX DLG_NULL 33 5
BEGIN BEGIN
PROMPT 33 5 "Formato pagina" PROMPT 33 5 "Formato pagina"
END END
LISTBOX STAMPA_WIDTH 3 LISTBOX STAMPA_WIDTH 3
BEGIN BEGIN
PROMPT 35 6 "Numero di colonne " PROMPT 35 6 "Numero di colonne "
ITEM "1|132 colonne" ITEM "1|132 colonne"
ITEM "2|198 colonne" ITEM "2|198 colonne"
END END
NUMBER STAMPA_LEN 3 NUMBER STAMPA_LEN 3
BEGIN BEGIN
PROMPT 35 7 "Numero di righe " PROMPT 35 7 "Numero di righe "
END END
DATE DATA_DA DATE DATA_DA
BEGIN BEGIN
PROMPT 2 10 "Dalla data " PROMPT 2 10 "Dalla data "
END END
DATE DATA_A DATE DATA_A
BEGIN BEGIN
PROMPT 2 11 "Alla data " PROMPT 2 11 "Alla data "
VALIDATE DATE_CMP_FUNC >= DATA_DA VALIDATE DATE_CMP_FUNC >= DATA_DA
WARNING "Questa data deve essere posteriore alla precedente" WARNING "Questa data deve essere posteriore alla precedente"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
BOOLEAN STAMPA_DEF BOOLEAN STAMPA_DEF
BEGIN BEGIN
PROMPT 34 10 "Stampa definitiva" PROMPT 34 10 "Stampa definitiva"
MESSAGE TRUE DISABLE,DATA_DA MESSAGE TRUE DISABLE,DATA_DA
MESSAGE FALSE ENABLE,DATA_DA MESSAGE FALSE ENABLE,DATA_DA
END END
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2
BEGIN BEGIN
PROMPT -12 -1 "" PROMPT -12 -1 ""
END END
BUTTON DLG_CANCEL 9 2 BUTTON DLG_CANCEL 9 2
BEGIN BEGIN
PROMPT -22 -1 "" PROMPT -22 -1 ""
END END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -9,25 +9,25 @@
bool TRigaiva_array::add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const real& imponibilep, const real& impostap) bool TRigaiva_array::add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const real& imponibilep, const real& impostap)
{ {
bool found = FALSE; bool found = FALSE;
for (int i = 0; i < items(); i++) for (int i = 0; i < items(); i++)
{ {
TRigaiva& r = (TRigaiva&)(*this)[i]; TRigaiva& r = (TRigaiva&)(*this)[i];
if ((r._codiva==codiva) && (tipodet==r._tipodet)) if ((r._codiva==codiva) && (tipodet==r._tipodet))
{ {
found = TRUE; found = TRUE;
r._imponibile += imponibile; r._imponibile += imponibile;
r._imposta += imposta; r._imposta += imposta;
r._imponibilep += imponibilep; r._imponibilep += imponibilep;
r._impostap += impostap; r._impostap += impostap;
} }
} }
if (!found) if (!found)
{ {
TRigaiva* r = new TRigaiva(imponibile,imposta,codiva,tipodet, imponibilep, impostap); TRigaiva* r = new TRigaiva(imponibile,imposta,codiva,tipodet, imponibilep, impostap);
add(r); add(r);
} }
return found; return found;
} }
bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,const int _natdoc) bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,const int _natdoc)
@ -45,11 +45,11 @@ bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,cons
} }
if (!found) if (!found)
{ {
if ((_natdoc == 1)||(_natdoc == 2)||(_natdoc == 3)||(_natdoc == 4)) if ((_natdoc == 1)||(_natdoc == 2)||(_natdoc == 3)||(_natdoc == 4))
{ {
TDociva* r = new TDociva(_descrdociva,_importo,_natdoc); TDociva* r = new TDociva(_descrdociva,_importo,_natdoc);
add(r); add(r);
} }
} }
return found; return found;
} }

View File

@ -22,24 +22,24 @@ struct TDociva : public TObject
class TDociva_array : public TArray class TDociva_array : public TArray
{ {
public: public:
bool add_riga(const char* _descrdociva,const real& _importo,const int _natdoc); bool add_riga(const char* _descrdociva,const real& _importo,const int _natdoc);
}; };
struct TRigaiva : public TObject struct TRigaiva : public TObject
{ {
real _imponibile, _imposta, _imponibilep, _impostap; real _imponibile, _imposta, _imponibilep, _impostap;
TString _codiva; TString _codiva;
int _tipodet; int _tipodet;
TRigaiva (const real& imponibile, const real& imposta, const char* codiva, int tipodet, const real& imponibilep, const real& impostap): TRigaiva (const real& imponibile, const real& imposta, const char* codiva, int tipodet, const real& imponibilep, const real& impostap):
_imponibile(imponibile),_imposta(imposta),_codiva(codiva),_tipodet(tipodet),_imponibilep(imponibilep),_impostap(impostap) _imponibile(imponibile),_imposta(imposta),_codiva(codiva),_tipodet(tipodet),_imponibilep(imponibilep),_impostap(impostap)
{} {}
}; };
class TRigaiva_array : public TArray class TRigaiva_array : public TArray
{ {
public: public:
bool add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const real& imponibilep, const real& impostap); bool add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const real& imponibilep, const real& impostap);
}; };
#endif #endif

View File

@ -46,7 +46,7 @@ class CG4600_application : public TApplication
real _saldo, _totale_saldo; real _saldo, _totale_saldo;
int _annoesch, _annoesap; int _annoesch, _annoesap;
long _numreg; long _numreg;
TDate _dataregap, _dataregch; TDate _dataregap, _dataregch, _data_inizioap, _data_finech;
TString _codcausap, _codcausch; TString _codcausap, _codcausch;
public: public:
@ -59,7 +59,7 @@ public:
void passivita(); void passivita();
void rmov_proper (int, long, TDate&, TRectype&, TConto&, real&, bool); void rmov_proper (int, long, TDate&, TRectype&, TConto&, real&, bool);
void ultima_registrazione(); void ultima_registrazione();
void compila_testata(int,TDate&,TString&); void compila_testata(int,TDate&,TDate&,TString&);
void chiusura_conto_economico(); void chiusura_conto_economico();
void chiusura_conto_patrimoniale(); void chiusura_conto_patrimoniale();
bool set(); bool set();
@ -315,10 +315,12 @@ bool CG4600_application::set()
TabEs.last(); TabEs.last();
int annoap = TabEs.get_int ("CODTAB"); int annoap = TabEs.get_int ("CODTAB");
TDate inizio = TabEs.get_date("D0"); //data inizio es. in corso TDate inizio = TabEs.get_date("D0"); //data inizio es. in corso
_data_inizioap = inizio;
TabEs.prev(); TabEs.prev();
int annoch = TabEs.get_int ("CODTAB"); int annoch = TabEs.get_int ("CODTAB");
TDate fine = TabEs.get_date("D1"); //data fine es. precedente TDate fine = TabEs.get_date("D1"); //data fine es. precedente
_data_finech = fine;
m.set(F_ANNO, annoap); m.set(F_ANNO, annoap);
m.set(F_ANNOCH, annoch); m.set(F_ANNOCH, annoch);
m.set(F_DATAC, fine.string()); m.set(F_DATAC, fine.string());
@ -433,16 +435,17 @@ bool CG4600_application::set()
return FALSE; return FALSE;
} }
void CG4600_application::compila_testata(int annoes,TDate& datareg, TString& codcaus) void CG4600_application::compila_testata(int annoes,TDate& datareg,TDate& datacomp,TString& codcaus)
{ {
_pn->lfile()->zero(); _pn->lfile()->zero();
_pn->lfile()->put(MOV_ANNOES, annoes); //Viene generato un mov _pn->lfile()->put(MOV_ANNOES, annoes); //Viene generato un mov
_pn->lfile()->put(MOV_DATAREG, datareg); //quando si incontra il _pn->lfile()->put(MOV_DATAREG, datareg); //quando si incontra il
_pn->lfile()->put(MOV_CODCAUS, codcaus); //primo conto con indbil _pn->lfile()->put(MOV_CODCAUS, codcaus); //primo conto con indbil
_pn->lfile()->put(MOV_NUMREG, _numreg); _pn->lfile()->put(MOV_NUMREG, _numreg);
_pn->lfile()->put(MOV_DATACOMP, datacomp);
} }
void CG4600_application::rmov_proper(int anno,long numrig,TDate& datareg,TRectype& rmov, TConto& tc,real& tot_saldo, bool sezione_opposta) void CG4600_application::rmov_proper(int anno,long numrig,TDate& datareg,TRectype& rmov,TConto& tc,real& tot_saldo, bool sezione_opposta)
{ {
char sez_rmov = ' '; char sez_rmov = ' ';
char sezione = ' '; char sezione = ' ';
@ -509,7 +512,7 @@ void CG4600_application::costi()
{ {
if (compila_mov) if (compila_mov)
{ {
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 1 compila_testata(_annoesch,_dataregch,_data_finech,_codcausch); //Reg. 1
compila_mov = FALSE; compila_mov = FALSE;
} }
_saldi->setkey(1); _saldi->setkey(1);
@ -639,7 +642,7 @@ void CG4600_application::ricavi()
{ {
if (compila_mov) if (compila_mov)
{ {
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 2 compila_testata(_annoesch,_dataregch,_data_finech,_codcausch); //Reg. 2
compila_mov = FALSE; compila_mov = FALSE;
} }
_saldi->setkey(1); _saldi->setkey(1);
@ -757,7 +760,7 @@ void CG4600_application::chiusura_conto_economico()
j = 0; j = 0;
ultima_registrazione(); ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3 compila_testata(_annoesch,_dataregch,_data_finech,_codcausch); //Reg. 3
TRectype& rmov1 = _pn->cg(j); TRectype& rmov1 = _pn->cg(j);
long numrig = 1; long numrig = 1;
@ -778,7 +781,7 @@ void CG4600_application::chiusura_conto_economico()
j = 0; j = 0;
ultima_registrazione(); ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4 compila_testata(_annoesch,_dataregch,_data_finech,_codcausch); //Reg. 4
TRectype& rmov3 = _pn->cg(j); TRectype& rmov3 = _pn->cg(j);
numrig = 1; numrig = 1;
@ -800,7 +803,7 @@ void CG4600_application::chiusura_conto_economico()
j = 0; j = 0;
ultima_registrazione(); ultima_registrazione();
compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 10 compila_testata(_annoesap,_dataregap,_data_inizioap,_codcausap); //Reg. 10
TRectype& rmov5 = _pn->cg(j); TRectype& rmov5 = _pn->cg(j);
numrig = 1; numrig = 1;
@ -825,7 +828,7 @@ void CG4600_application::chiusura_conto_economico()
_pn->destroy_rows(); //Azzero l'oggetto pn. _pn->destroy_rows(); //Azzero l'oggetto pn.
j = 0; j = 0;
ultima_registrazione(); ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3 compila_testata(_annoesch,_dataregch,_data_finech,_codcausch); //Reg. 3
TRectype& rmov1 = _pn->cg(j); TRectype& rmov1 = _pn->cg(j);
long numrig = 1; long numrig = 1;
@ -845,7 +848,7 @@ void CG4600_application::chiusura_conto_economico()
_pn->destroy_rows(); //Azzero l'oggetto pn. _pn->destroy_rows(); //Azzero l'oggetto pn.
j = 0; j = 0;
ultima_registrazione(); ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4 compila_testata(_annoesch,_dataregch,_data_finech,_codcausch); //Reg. 4
TRectype& rmov3 = _pn->cg(j); TRectype& rmov3 = _pn->cg(j);
numrig = 1; numrig = 1;
@ -867,7 +870,7 @@ void CG4600_application::chiusura_conto_economico()
j = 0; j = 0;
ultima_registrazione(); ultima_registrazione();
compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 10 compila_testata(_annoesap,_dataregap,_data_inizioap,_codcausap); //Reg. 10
TRectype& rmov5 = _pn->cg(j); TRectype& rmov5 = _pn->cg(j);
numrig = 1; numrig = 1;
@ -898,7 +901,7 @@ void CG4600_application::chiusura_conto_patrimoniale()
_pn->destroy_rows(); //Azzero l'oggetto pn. _pn->destroy_rows(); //Azzero l'oggetto pn.
j = 0; j = 0;
ultima_registrazione(); ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7 compila_testata(_annoesch,_dataregch,_data_finech,_codcausch); //Reg. 7
TRectype& rmov1 = _pn->cg(j); TRectype& rmov1 = _pn->cg(j);
numrig = 1; numrig = 1;
@ -921,7 +924,7 @@ void CG4600_application::chiusura_conto_patrimoniale()
_pn->destroy_rows(); //Azzero l'oggetto pn. _pn->destroy_rows(); //Azzero l'oggetto pn.
j = 0; j = 0;
ultima_registrazione(); ultima_registrazione();
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7 compila_testata(_annoesch,_dataregch,_data_finech,_codcausch); //Reg. 7
TRectype& rmov1 = _pn->cg(j); TRectype& rmov1 = _pn->cg(j);
numrig = 1; numrig = 1;
@ -962,7 +965,7 @@ void CG4600_application::attivita()
{ {
if (compila_mov_ch) if (compila_mov_ch)
{ {
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 5 Chiusura compila_testata(_annoesch,_dataregch,_data_finech,_codcausch); //Reg. 5 Chiusura
compila_mov_ch = FALSE; compila_mov_ch = FALSE;
} }
_saldi->setkey(1); _saldi->setkey(1);
@ -1070,7 +1073,7 @@ void CG4600_application::attivita()
if (compila_mov_ap) if (compila_mov_ap)
{ {
ultima_registrazione(); ultima_registrazione();
compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 8 Apertura compila_testata(_annoesap,_dataregap,_data_inizioap,_codcausap); //Reg. 8 Apertura
compila_mov_ap = FALSE; compila_mov_ap = FALSE;
} }
@ -1147,7 +1150,7 @@ void CG4600_application::passivita()
{ {
if (compila_mov_ch) if (compila_mov_ch)
{ {
compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 6 Chiusura compila_testata(_annoesch,_dataregch,_data_finech,_codcausch); //Reg. 6 Chiusura
compila_mov_ch = FALSE; compila_mov_ch = FALSE;
} }
_saldi->setkey(1); _saldi->setkey(1);
@ -1255,7 +1258,7 @@ void CG4600_application::passivita()
if (compila_mov_ap) if (compila_mov_ap)
{ {
ultima_registrazione(); ultima_registrazione();
compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 9 Apertura compila_testata(_annoesap,_dataregap,_data_inizioap,_codcausap); //Reg. 9 Apertura
compila_mov_ap = FALSE; compila_mov_ap = FALSE;
} }