Patch level : 2.0 467
Files correlati : quelli delle patch AGA Ricompilazione Demo : [ ] Commento : Riportata la versione AGA 1.7 patch 466 git-svn-id: svn://10.65.10.50/trunk@11085 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5932e4ec62
commit
ba8900cf74
@ -156,7 +156,6 @@ void TCalcamm::main_loop()
|
|||||||
{
|
{
|
||||||
TDitta_cespiti& dc = ditta_cespiti();
|
TDitta_cespiti& dc = ditta_cespiti();
|
||||||
dc.init_mask(*_mask);
|
dc.init_mask(*_mask);
|
||||||
_mask->field(F_SPECIE).check(RUNNING_CHECK);
|
|
||||||
_mask->recalc_spese();
|
_mask->recalc_spese();
|
||||||
if (!batch)
|
if (!batch)
|
||||||
k = _mask->run();
|
k = _mask->run();
|
||||||
|
|||||||
@ -1824,7 +1824,7 @@ bool TCespite::calc_amm(int tipo_sit, const TDate& data_limite, bool recalc_spe_
|
|||||||
log("* Inizio calcolo situazione %d cespite %s", tipo_sit, (const char*)idcespite);
|
log("* Inizio calcolo situazione %d cespite %s", tipo_sit, (const char*)idcespite);
|
||||||
|
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
if (tipo_sit == 1 && atol(idcespite) == 445L)
|
if (tipo_sit == 1 && atol(idcespite) == 83L)
|
||||||
{
|
{
|
||||||
tipo_sit = 1; // Put your breakpoint here
|
tipo_sit = 1; // Put your breakpoint here
|
||||||
}
|
}
|
||||||
|
|||||||
@ -132,6 +132,7 @@ void TDitta_cespiti::init_mask(TMask& m)
|
|||||||
if (!found[1]) // Non ho ancora trovato l'esercizio
|
if (!found[1]) // Non ho ancora trovato l'esercizio
|
||||||
{
|
{
|
||||||
f.set(_esercizio);
|
f.set(_esercizio);
|
||||||
|
f.check();
|
||||||
found.set(1, TRUE);
|
found.set(1, TRUE);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
@ -140,6 +141,7 @@ void TDitta_cespiti::init_mask(TMask& m)
|
|||||||
if (found[4] && !found[5]) // Ho trovato gruppo ma non specie
|
if (found[4] && !found[5]) // Ho trovato gruppo ma non specie
|
||||||
{
|
{
|
||||||
f.set(_specie);
|
f.set(_specie);
|
||||||
|
f.check();
|
||||||
found.set(5);
|
found.set(5);
|
||||||
finished = TRUE;
|
finished = TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
#include <mask.h>
|
#include <mask.h>
|
||||||
#include <mailbox.h>
|
#include <mailbox.h>
|
||||||
#include <printapp.h>
|
#include <printapp.h>
|
||||||
|
#include <recarray.h>
|
||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
|
|
||||||
@ -47,7 +48,7 @@ class TPrintclifo_app : public TPrintapp
|
|||||||
// variable field slots
|
// variable field slots
|
||||||
TString _piva,_cpercip,_fax,_telex,_email,_name,_telefono,_indir,_localita;
|
TString _piva,_cpercip,_fax,_telex,_email,_name,_telefono,_indir,_localita;
|
||||||
TString _cod_from,_cod_to,_data_stampa,_cofi,_d_c_ric,_d_alleg;
|
TString _cod_from,_cod_to,_data_stampa,_cofi,_d_c_ric,_d_alleg;
|
||||||
TString _datanas,_comprov,_comnasc,_comune,_prov;
|
TString _datanas,_comprov,_comnasc,_comune,_prov,_descpag;
|
||||||
long _codice;
|
long _codice;
|
||||||
char _tipocf,_tipoaper;
|
char _tipocf,_tipoaper;
|
||||||
bool _gia_iniziati_fornitori;
|
bool _gia_iniziati_fornitori;
|
||||||
@ -313,6 +314,9 @@ bool TPrintclifo_app::preprocess_page(int file, int counter)
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_descpag = get_field(LF_CLIFO, CLI_CODPAG);
|
||||||
|
_descpag = cache().get("%CPG", _descpag, "S0");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LF_INDSP:
|
case LF_INDSP:
|
||||||
@ -344,24 +348,6 @@ default:
|
|||||||
|
|
||||||
print_action TPrintclifo_app::postprocess_print(int file, int counter)
|
print_action TPrintclifo_app::postprocess_print(int file, int counter)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
static bool more = FALSE;
|
|
||||||
if (_pr_what == both)
|
|
||||||
{
|
|
||||||
if (more)
|
|
||||||
{
|
|
||||||
more = FALSE;
|
|
||||||
select_cursor(ccur());
|
|
||||||
return NEXT_PAGE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
more = TRUE;
|
|
||||||
select_cursor(ccur());
|
|
||||||
return REPEAT_PAGE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
return NEXT_PAGE;
|
return NEXT_PAGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,6 +470,7 @@ void TPrintclifo_app::header_elenco()
|
|||||||
|
|
||||||
set_header(j, FR("Ditta %ld %s@125gPag @#"), firm, (const char*) s);
|
set_header(j, FR("Ditta %ld %s@125gPag @#"), firm, (const char*) s);
|
||||||
set_header(j++, FR("@102gData %s"), (const char*) _data_stampa);
|
set_header(j++, FR("@102gData %s"), (const char*) _data_stampa);
|
||||||
|
|
||||||
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
|
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
|
||||||
|
|
||||||
if (tipocf == 'C')
|
if (tipocf == 'C')
|
||||||
@ -529,6 +516,7 @@ void TPrintclifo_app::header_elenco()
|
|||||||
set_header(j++, FR("@9gLuogo di nascita@45gData@56gPartita IVA Codice fiscale"));
|
set_header(j++, FR("@9gLuogo di nascita@45gData@56gPartita IVA Codice fiscale"));
|
||||||
set_header(j++, FR("@9gConto di costo/ricavo@56gCodice allegato@90gPercipiente 770"));
|
set_header(j++, FR("@9gConto di costo/ricavo@56gCodice allegato@90gPercipiente 770"));
|
||||||
set_header(j, (const char *)(TString(132).fill('-')));
|
set_header(j, (const char *)(TString(132).fill('-')));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrintclifo_app::header_rubriche()
|
void TPrintclifo_app::header_rubriche()
|
||||||
@ -547,6 +535,7 @@ void TPrintclifo_app::header_rubriche()
|
|||||||
TString s(ditte.get(NDT_RAGSOC));
|
TString s(ditte.get(NDT_RAGSOC));
|
||||||
set_header(j, FR("Ditta %ld %s@125gPag @#"), firm, (const char*) s);
|
set_header(j, FR("Ditta %ld %s@125gPag @#"), firm, (const char*) s);
|
||||||
set_header(j++, FR("@102gData %s"), (const char*) _data_stampa);
|
set_header(j++, FR("@102gData %s"), (const char*) _data_stampa);
|
||||||
|
|
||||||
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
|
tipocf = current_cursor()->curr(LF_CLIFO).get_char(CLI_TIPOCF);
|
||||||
|
|
||||||
if (tipocf == 'C')
|
if (tipocf == 'C')
|
||||||
@ -588,8 +577,10 @@ void TPrintclifo_app::header_rubriche()
|
|||||||
set_header(j++, FR(" Codice Ragione sociale@60gIndirizzo@100gC.A.P.@106gLocalita'@127gProv."));
|
set_header(j++, FR(" Codice Ragione sociale@60gIndirizzo@100gC.A.P.@106gLocalita'@127gProv."));
|
||||||
set_header(j++, FR("@9gPartita iva@25gTelefoni"));
|
set_header(j++, FR("@9gPartita iva@25gTelefoni"));
|
||||||
set_header(j++, (const char *)(TString(132).fill('-')));
|
set_header(j++, (const char *)(TString(132).fill('-')));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TPrintclifo_app::set_elenco()
|
void TPrintclifo_app::set_elenco()
|
||||||
{
|
{
|
||||||
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF),
|
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF),
|
||||||
@ -601,9 +592,10 @@ void TPrintclifo_app::set_elenco()
|
|||||||
set_row(6,"@9g@3n @3n @6n #t@56g@t #t@90g#t",FLD(LF_CLIFO,CLI_GRUPPORIC),
|
set_row(6,"@9g@3n @3n @6n #t@56g@t #t@90g#t",FLD(LF_CLIFO,CLI_GRUPPORIC),
|
||||||
FLD(LF_CLIFO,CLI_CONTORIC), FLD(LF_CLIFO, CLI_SOTTOCRIC),&_d_c_ric,
|
FLD(LF_CLIFO,CLI_CONTORIC), FLD(LF_CLIFO, CLI_SOTTOCRIC),&_d_c_ric,
|
||||||
FLD(LF_CLIFO, CLI_CODALLEG), &_d_alleg, &_cpercip);
|
FLD(LF_CLIFO, CLI_CODALLEG), &_d_alleg, &_cpercip);
|
||||||
|
set_row(7,"@9g@s@15g#t",FLD(LF_CLIFO, CLI_CODPAG),&_descpag);
|
||||||
|
|
||||||
for(int i = 0; i < _interline; i++)
|
for(int i = 0; i < _interline; i++)
|
||||||
set_row(i+6,"");
|
set_row(i+7,"");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TPrintclifo_app::set_rubriche()
|
void TPrintclifo_app::set_rubriche()
|
||||||
@ -611,8 +603,6 @@ void TPrintclifo_app::set_rubriche()
|
|||||||
// body
|
// body
|
||||||
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO,CLI_TIPOCF),
|
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO,CLI_TIPOCF),
|
||||||
FLD(LF_CLIFO,CLI_CODCF,"@@@@@@"), &_name);
|
FLD(LF_CLIFO,CLI_CODCF,"@@@@@@"), &_name);
|
||||||
//set_row(1,"@60g#t@100g@s@106g#t@127g@s", &_indir, FLD(LF_CLIFO, CLI_CAPCF),
|
|
||||||
// &_localita, FLD(-COMRF_ALIAS,COM_PROVCOM));
|
|
||||||
set_row(1,"@60g#t@100g@s@106g#t@127g#t", &_indir, FLD(LF_CLIFO, CLI_CAPCF), &_comune, &_prov);
|
set_row(1,"@60g#t@100g@s@106g#t@127g#t", &_indir, FLD(LF_CLIFO, CLI_CAPCF), &_comune, &_prov);
|
||||||
set_row(2,"@9g#t@25g#t", &_piva,&_telefono);
|
set_row(2,"@9g#t@25g#t", &_piva,&_telefono);
|
||||||
|
|
||||||
@ -694,6 +684,7 @@ void TPrintclifo_app::set_vendite(int f, int c)
|
|||||||
set_header(11,FR("@9gRaggr. ordini @25gImporto Minimo @46gImporto Massimo @63gPriorita ev. @76gTipo Evasione"));
|
set_header(11,FR("@9gRaggr. ordini @25gImporto Minimo @46gImporto Massimo @63gPriorita ev. @76gTipo Evasione"));
|
||||||
set_header(12, (const char *)(TString(132).fill('-')));
|
set_header(12, (const char *)(TString(132).fill('-')));
|
||||||
|
|
||||||
|
|
||||||
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF),
|
set_row(1,"$[b]@1s$[n] $[b]@pn$[n] #t", FLD(LF_CLIFO, CLI_TIPOCF),
|
||||||
FLD(LF_CLIFO, CLI_CODCF,"@@@@@@"), &_name);
|
FLD(LF_CLIFO, CLI_CODCF,"@@@@@@"), &_name);
|
||||||
|
|
||||||
|
|||||||
305
cg/cg1600.cpp
305
cg/cg1600.cpp
@ -154,7 +154,6 @@ class TStampa_IVdirettiva : public TPrintapp
|
|||||||
|
|
||||||
bil_ivd* _bil;
|
bil_ivd* _bil;
|
||||||
TMask* _msk;
|
TMask* _msk;
|
||||||
TTable* _tabivd;
|
|
||||||
TLocalisamfile* _nditte;
|
TLocalisamfile* _nditte;
|
||||||
TLocalisamfile* _comuni;
|
TLocalisamfile* _comuni;
|
||||||
TLocalisamfile* _unloc;
|
TLocalisamfile* _unloc;
|
||||||
@ -170,7 +169,6 @@ class TStampa_IVdirettiva : public TPrintapp
|
|||||||
TProgind* _prog, *_prog_stampa;
|
TProgind* _prog, *_prog_stampa;
|
||||||
TParagraph_string* _descr,*_d;
|
TParagraph_string* _descr,*_d;
|
||||||
TSaldo* _sld;
|
TSaldo* _sld;
|
||||||
TPrtype _stampa;
|
|
||||||
bool _noseparator;
|
bool _noseparator;
|
||||||
|
|
||||||
TDate _data_fine_ese,_data_fine_ese_prec,_data_fine_raf,_data_fine_raf_prec;
|
TDate _data_fine_ese,_data_fine_ese_prec,_data_fine_raf,_data_fine_raf_prec;
|
||||||
@ -248,8 +246,8 @@ public:
|
|||||||
void crea_sort_tabella();
|
void crea_sort_tabella();
|
||||||
void crea_sort_piano_conti_scalare();
|
void crea_sort_piano_conti_scalare();
|
||||||
void crea_sort_piano_conti_verifica();
|
void crea_sort_piano_conti_verifica();
|
||||||
void setta_righe_descr(TParagraph_string*,const TString&,const TString&);
|
void setta_righe_descr(TParagraph_string*,const char*,const char*);
|
||||||
void setta_righe_descr_verifica(TParagraph_string*,const TString&,const TString&);
|
void setta_righe_descr_verifica(TParagraph_string*,const char*,const char*);
|
||||||
void scrivi_record(const TString&,const TString&,const TString&,int,int,int,long,const real&,const real&,const real&,const real&,const real&,const real&,char,bool conto_dettagliato = TRUE);
|
void scrivi_record(const TString&,const TString&,const TString&,int,int,int,long,const real&,const real&,const real&,const real&,const real&,const real&,char,bool conto_dettagliato = TRUE);
|
||||||
void riempi_record(const TString&,const TString&,const TString&,int,int,int,long,const real&,const real&,const real&,const real&,const real&,const real&,char,bool conto_dettagliato = TRUE);
|
void riempi_record(const TString&,const TString&,const TString&,int,int,int,long,const real&,const real&,const real&,const real&,const real&,const real&,char,bool conto_dettagliato = TRUE);
|
||||||
const char* descrizione_sezione(char);
|
const char* descrizione_sezione(char);
|
||||||
@ -260,7 +258,8 @@ public:
|
|||||||
const char* descr_sottoc_clifo(char,long);
|
const char* descr_sottoc_clifo(char,long);
|
||||||
void setta_righe(const char*);
|
void setta_righe(const char*);
|
||||||
void setta_righe_verifica();
|
void setta_righe_verifica();
|
||||||
void stampa_risultato_prima_delle_imposte(bool raff = FALSE);
|
bool devo_stampare_risultato_prima_delle_imposte() const;
|
||||||
|
void stampa_risultato_prima_delle_imposte();
|
||||||
void stampa_totali();
|
void stampa_totali();
|
||||||
void stampa_totali_con_raffronto();
|
void stampa_totali_con_raffronto();
|
||||||
void stampa_totali_verifica();
|
void stampa_totali_verifica();
|
||||||
@ -2041,6 +2040,7 @@ bool TStampa_IVdirettiva::set_print(int)
|
|||||||
_tipo_stampa = _msk->get_int(F_TIPOSTAMPA1);
|
_tipo_stampa = _msk->get_int(F_TIPOSTAMPA1);
|
||||||
|
|
||||||
_prog = new TProgind(_pconti->items(),TR("Elaborazione in corso... prego attendere"),FALSE);
|
_prog = new TProgind(_pconti->items(),TR("Elaborazione in corso... prego attendere"),FALSE);
|
||||||
|
|
||||||
if (_tipo_stampa == 2)
|
if (_tipo_stampa == 2)
|
||||||
{
|
{
|
||||||
_anno_esercizio = _annoese;
|
_anno_esercizio = _annoese;
|
||||||
@ -2129,23 +2129,37 @@ bool TStampa_IVdirettiva::set_print(int)
|
|||||||
|
|
||||||
crea_intestazione();
|
crea_intestazione();
|
||||||
delete _bil;
|
delete _bil;
|
||||||
delete _prog;
|
delete _prog; _prog = NULL;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TStampa_IVdirettiva::stampa_risultato_prima_delle_imposte(bool raff)
|
// Lo so, fa schifo: ma mi sono adeguato (Guy)
|
||||||
|
bool TStampa_IVdirettiva::devo_stampare_risultato_prima_delle_imposte() const
|
||||||
|
{
|
||||||
|
if (!_risimp_fatto)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (_sez_da_stamp != '9')
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (_let_da_stamp != 'E')
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (atoi(_num_da_stamp) <= 21)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TStampa_IVdirettiva::stampa_risultato_prima_delle_imposte()
|
||||||
{
|
{
|
||||||
if (_risimp_fatto) // Ottimo flag che significa esattamente l'opposto! Grazie PRASSI!
|
if (_risimp_fatto) // Ottimo flag che significa esattamente l'opposto! Grazie PRASSI!
|
||||||
{
|
{
|
||||||
if (_let_stamp != 'E') // Forse questo non ci va
|
const bool raff = _annoeserafr > 0 || _databilrafr.ok();
|
||||||
{
|
|
||||||
const char* descr_lett = descrizione_lettera('9', 'E');
|
|
||||||
set_row (_i++, "@0gE) %s", descr_lett);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_let_da_stamp == 'E' && atoi(_num_da_stamp) > 21 &&
|
if (_let_da_stamp == 'E' && atoi(_num_da_stamp) > 21 && // questa prima parte e' sempre TRUE!
|
||||||
!_totale_parziale.is_zero() && !_totale_parziale_raf.is_zero())
|
!_totale_parziale.is_zero() && !_totale_parziale_raf.is_zero())
|
||||||
{
|
{
|
||||||
set_row (_i,FR("@4gTotale delle partite straordinarie"));
|
set_row (_i,FR("@4gTotale delle partite straordinarie"));
|
||||||
@ -2168,7 +2182,6 @@ void TStampa_IVdirettiva::stampa_totali()
|
|||||||
{
|
{
|
||||||
bool gia_stampato_conto_ord = FALSE;
|
bool gia_stampato_conto_ord = FALSE;
|
||||||
const char* diff_prod = "9B";
|
const char* diff_prod = "9B";
|
||||||
const char* ris_imp = "9E 21" ;
|
|
||||||
|
|
||||||
TString16 classe;
|
TString16 classe;
|
||||||
classe.format("%c%c%8s%2s", _sez_da_stamp,_let_da_stamp,(const char*)_numr_da_stamp,(const char*)_num_da_stamp);
|
classe.format("%c%c%8s%2s", _sez_da_stamp,_let_da_stamp,(const char*)_numr_da_stamp,(const char*)_num_da_stamp);
|
||||||
@ -2203,13 +2216,15 @@ void TStampa_IVdirettiva::stampa_totali()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* Killed
|
||||||
if (_sez_stamp == '9') // Conto economico
|
if (_sez_stamp == '9') // Conto economico
|
||||||
{
|
{
|
||||||
|
const char* ris_imp = "9E 21" ;
|
||||||
if (classe > ris_imp && _risimp_fatto) // Classe > 9E________21
|
if (classe > ris_imp && _risimp_fatto) // Classe > 9E________21
|
||||||
stampa_risultato_prima_delle_imposte();
|
stampa_risultato_prima_delle_imposte();
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
_cont_gcs = 0;
|
_cont_gcs = 0;
|
||||||
_totale_numero = 0;
|
_totale_numero = 0;
|
||||||
}
|
}
|
||||||
@ -2271,6 +2286,7 @@ void TStampa_IVdirettiva::stampa_totali()
|
|||||||
{
|
{
|
||||||
TString numrom = itor(numeror);
|
TString numrom = itor(numeror);
|
||||||
set_row (_i,FR("@14gTotale@21g%s"), (const char*) numrom);
|
set_row (_i,FR("@14gTotale@21g%s"), (const char*) numrom);
|
||||||
|
|
||||||
set_row (_i++,"@81g%r", &_totale_numr);
|
set_row (_i++,"@81g%r", &_totale_numr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2568,8 +2584,10 @@ void TStampa_IVdirettiva::stampa_totali()
|
|||||||
set_row (_i++,FR("@4gDifferenza tra valore e costi della produzione@81g%r"), &_totale_economico);
|
set_row (_i++,FR("@4gDifferenza tra valore e costi della produzione@81g%r"), &_totale_economico);
|
||||||
_diffprod_fatto = FALSE;
|
_diffprod_fatto = FALSE;
|
||||||
}
|
}
|
||||||
|
/* Killed
|
||||||
if (_risimp_fatto)
|
if (_risimp_fatto)
|
||||||
stampa_risultato_prima_delle_imposte();
|
stampa_risultato_prima_delle_imposte();
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
char app = ' ';
|
char app = ' ';
|
||||||
@ -2595,7 +2613,6 @@ void TStampa_IVdirettiva::stampa_totali_con_raffronto()
|
|||||||
{
|
{
|
||||||
bool gia_stampato_conto_ord = FALSE;
|
bool gia_stampato_conto_ord = FALSE;
|
||||||
const char* const diff_prod = "9B";
|
const char* const diff_prod = "9B";
|
||||||
const char* const ris_imp = "9E 21";
|
|
||||||
|
|
||||||
TString16 classe;
|
TString16 classe;
|
||||||
classe.format("%c%c%8s%2s", _sez_da_stamp,_let_da_stamp,(const char*)_numr_da_stamp,(const char*)_num_da_stamp);
|
classe.format("%c%c%8s%2s", _sez_da_stamp,_let_da_stamp,(const char*)_numr_da_stamp,(const char*)_num_da_stamp);
|
||||||
@ -2631,11 +2648,14 @@ void TStampa_IVdirettiva::stampa_totali_con_raffronto()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Killed
|
||||||
if (_sez_stamp == '9')
|
if (_sez_stamp == '9')
|
||||||
{
|
{
|
||||||
if (classe > ris_imp && _risimp_fatto)
|
if (classe > ris_imp && _risimp_fatto)
|
||||||
|
|
||||||
stampa_risultato_prima_delle_imposte(TRUE);
|
stampa_risultato_prima_delle_imposte(TRUE);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
_cont_gcs = 0;
|
_cont_gcs = 0;
|
||||||
_totale_numero = 0;
|
_totale_numero = 0;
|
||||||
@ -3060,7 +3080,8 @@ void TStampa_IVdirettiva::stampa_totali_con_raffronto()
|
|||||||
set_row (_i++,FR("@4gDifferenza tra valore e costi della produzione@81g%r@111g%r"), &_totale_economico,&_totale_economico_raf);
|
set_row (_i++,FR("@4gDifferenza tra valore e costi della produzione@81g%r@111g%r"), &_totale_economico,&_totale_economico_raf);
|
||||||
_diffprod_fatto = FALSE;
|
_diffprod_fatto = FALSE;
|
||||||
}
|
}
|
||||||
stampa_risultato_prima_delle_imposte(TRUE);
|
// killed stampa_risultato_prima_delle_imposte(TRUE);
|
||||||
|
|
||||||
}
|
}
|
||||||
char app = ' ';
|
char app = ' ';
|
||||||
set_row (_i++,"@0g%c", app);
|
set_row (_i++,"@0g%c", app);
|
||||||
@ -3512,7 +3533,7 @@ print_action TStampa_IVdirettiva::postprocess_page(int file, int counter)
|
|||||||
|
|
||||||
print_action TStampa_IVdirettiva::postprocess_print(int file, int counter)
|
print_action TStampa_IVdirettiva::postprocess_print(int file, int counter)
|
||||||
{
|
{
|
||||||
if (_stampa != screenvis)
|
if (_prog_stampa != NULL)
|
||||||
{
|
{
|
||||||
delete _prog_stampa;
|
delete _prog_stampa;
|
||||||
_prog_stampa = NULL;
|
_prog_stampa = NULL;
|
||||||
@ -3526,12 +3547,13 @@ bool TStampa_IVdirettiva::preprocess_print(int file,int counter)
|
|||||||
if (_stampa != screenvis)
|
if (_stampa != screenvis)
|
||||||
_prog_stampa = new TProgind(_items_sort,TR("Preparazione stampa... prego attendere"),FALSE);
|
_prog_stampa = new TProgind(_items_sort,TR("Preparazione stampa... prego attendere"),FALSE);
|
||||||
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TStampa_IVdirettiva::preprocess_page(int file, int counter)
|
bool TStampa_IVdirettiva::preprocess_page(int file, int counter)
|
||||||
{
|
{
|
||||||
if (_stampa != screenvis)
|
if (_prog_stampa != NULL)
|
||||||
_prog_stampa->addstatus(1);
|
_prog_stampa->addstatus(1);
|
||||||
|
|
||||||
bool ok = FALSE;
|
bool ok = FALSE;
|
||||||
@ -3588,7 +3610,7 @@ bool TStampa_IVdirettiva::preprocess_stampa_scalare(int counter)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_classe_stampata.format("%1c%1c%8s%2d",bil->sez,bil->let,(const char*)bil->numr,bil->num);
|
_classe_stampata.format("%c%c%8s%2s",bil->sez,bil->let,bil->numr,bil->num);
|
||||||
_sez_stamp = bil->sez;
|
_sez_stamp = bil->sez;
|
||||||
_let_stamp = bil->let;
|
_let_stamp = bil->let;
|
||||||
_numr_stamp = bil->numr;
|
_numr_stamp = bil->numr;
|
||||||
@ -3620,7 +3642,7 @@ bool TStampa_IVdirettiva::preprocess_stampa_scalare(int counter)
|
|||||||
if (_buff != NULL)
|
if (_buff != NULL)
|
||||||
{
|
{
|
||||||
bil = (struct bil_ivd*) _buff;
|
bil = (struct bil_ivd*) _buff;
|
||||||
_classe_da_stampare.format("%1c%1c%8s%2d",bil->sez,bil->let,(const char*) bil->numr,bil->num);
|
_classe_da_stampare.format("%c%c%8s%2s",bil->sez,bil->let,bil->numr,bil->num);
|
||||||
_sez_da_stamp = bil->sez;
|
_sez_da_stamp = bil->sez;
|
||||||
_let_da_stamp = bil->let;
|
_let_da_stamp = bil->let;
|
||||||
_numr_da_stamp = bil->numr;
|
_numr_da_stamp = bil->numr;
|
||||||
@ -3808,7 +3830,7 @@ bool TStampa_IVdirettiva::preprocess_stampa_verifica(int counter)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_classe_stampata = format ("%1c%1c%8s%2d",bil->sez,bil->let,(const char*) bil->numr,bil->num);
|
_classe_stampata = format ("%c%c%8s%2s",bil->sez,bil->let,bil->numr,bil->num);
|
||||||
_sez_stamp = bil->sez;
|
_sez_stamp = bil->sez;
|
||||||
_let_stamp = bil->let;
|
_let_stamp = bil->let;
|
||||||
_numr_stamp = bil->numr;
|
_numr_stamp = bil->numr;
|
||||||
@ -3861,7 +3883,7 @@ bool TStampa_IVdirettiva::preprocess_stampa_verifica(int counter)
|
|||||||
if (_buff != NULL)
|
if (_buff != NULL)
|
||||||
{
|
{
|
||||||
bil = (struct bil_ivd*) _buff;
|
bil = (struct bil_ivd*) _buff;
|
||||||
_classe_da_stampare = format ("%1c%1c%8s%2d",bil->sez,bil->let,(const char*) bil->numr,bil->num);
|
_classe_da_stampare = format ("%c%c%8s%2s",bil->sez,bil->let,bil->numr,bil->num);
|
||||||
_sez_da_stamp = bil->sez;
|
_sez_da_stamp = bil->sez;
|
||||||
_let_da_stamp = bil->let;
|
_let_da_stamp = bil->let;
|
||||||
_numr_da_stamp = bil->numr;
|
_numr_da_stamp = bil->numr;
|
||||||
@ -4048,11 +4070,12 @@ bool TStampa_IVdirettiva::preprocess_stampa_verifica(int counter)
|
|||||||
|
|
||||||
void TStampa_IVdirettiva::set_page(int file, int counter)
|
void TStampa_IVdirettiva::set_page(int file, int counter)
|
||||||
{
|
{
|
||||||
if (_tipo_bilancio == 1)
|
if (_tipo_bilancio == 1) // Bilancio scalare
|
||||||
{
|
{
|
||||||
if (_sez_da_stamp != _sez_stamp)
|
if (_sez_da_stamp != _sez_stamp)
|
||||||
{
|
{
|
||||||
if ((_sez_da_stamp=='1')||((_sez_da_stamp=='2')&&(_statopatr_no_stamp)))
|
// Controllo se devo stampare STATO PATRIMONIALE
|
||||||
|
if (_statopatr_no_stamp && (_sez_da_stamp=='1')||((_sez_da_stamp=='2')))
|
||||||
{
|
{
|
||||||
setta_righe (TR("STATO PATRIMONIALE"));
|
setta_righe (TR("STATO PATRIMONIALE"));
|
||||||
_statopatr_no_stamp = FALSE;
|
_statopatr_no_stamp = FALSE;
|
||||||
@ -4084,12 +4107,12 @@ void TStampa_IVdirettiva::setta_righe(const char * titolo)
|
|||||||
TString numrom,numr;
|
TString numrom,numr;
|
||||||
TString descr_let,descr_numr,descr_num,descr_sottoc,descr_classe;
|
TString descr_let,descr_numr,descr_num,descr_sottoc,descr_classe;
|
||||||
bool stampa_classe = TRUE;
|
bool stampa_classe = TRUE;
|
||||||
TString lettera1 = "@1g)@3g%s";
|
const char* lettera1 = "@1g)@3g%s";
|
||||||
TString lettera2 = "@3g%s";
|
const char* lettera2 = "@3g%s";
|
||||||
TString numr1 = "@12g-@14g%s";
|
const char* numr1 = "@12g-@14g%s";
|
||||||
TString numr2 = "@14g%s";
|
const char* numr2 = "@14g%s";
|
||||||
TString num = "@15g)@18g%s";
|
const char* num = "@15g)@18g%s";
|
||||||
TString num2 = "@18g%s";
|
const char* num2 = "@18g%s";
|
||||||
|
|
||||||
_descr->set_width(40);
|
_descr->set_width(40);
|
||||||
sezione = bil->sez;
|
sezione = bil->sez;
|
||||||
@ -4110,45 +4133,34 @@ void TStampa_IVdirettiva::setta_righe(const char * titolo)
|
|||||||
//prelevata dal record precedente, allora stampo la nuova classe con i relativi
|
//prelevata dal record precedente, allora stampo la nuova classe con i relativi
|
||||||
//sottoconti. In caso contrario continuo a stampare solo i sottoconti.
|
//sottoconti. In caso contrario continuo a stampare solo i sottoconti.
|
||||||
|
|
||||||
if (_sez_da_stamp != _sez_stamp)
|
if (_sez_da_stamp != _sez_stamp) // Cambio sezione
|
||||||
{
|
{
|
||||||
set_row (_i++,"@0g%s", titolo);
|
set_row (_i++, "@0g%s", titolo);
|
||||||
char app = ' ';
|
set_row(_i++,"@0g ");
|
||||||
set_row(_i++,"@0g%c", app);
|
|
||||||
|
|
||||||
if ((_sez_da_stamp == '1')&&(_let_da_stamp == 'Z'))
|
if (_sez_da_stamp == '1')
|
||||||
{
|
{
|
||||||
char app = ' ';
|
char app = ' ';
|
||||||
set_row (_i++,"@0g%c", app);
|
set_row (_i++,FR("@0gCONTI D'ORDINE ATTIVI"));
|
||||||
set_row (_i++,TR("CONTI D'ORDINE ATTIVI"));
|
|
||||||
set_row (_i++,"@0g%c", app);
|
|
||||||
stampa_classe = FALSE;
|
stampa_classe = FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if ((_sez_da_stamp == '1')&&(_let_da_stamp != 'Z'))
|
if ((_sez_da_stamp == '1')&&(_let_da_stamp != 'Z'))
|
||||||
{
|
{
|
||||||
char app = ' ';
|
char app = ' ';
|
||||||
set_row (_i++,"@0g%c", app);
|
set_row (_i++,FR("@0gATTIVO"));
|
||||||
set_row (_i++,TR("ATTIVO"));
|
|
||||||
set_row (_i++,"@0g%c", app);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((_sez_da_stamp == '2')&&(_let_da_stamp == 'Z'))
|
|
||||||
|
if (_sez_da_stamp == '2')
|
||||||
{
|
{
|
||||||
char app = ' ';
|
set_row(_i++,"@0g ");
|
||||||
set_row(_i++,"@0g%c", app);
|
if ((_let_da_stamp == 'Z'))
|
||||||
set_row (_i++,TR("CONTI D'ORDINE PASSIVI"));
|
|
||||||
set_row(_i++,"@0g%c", app);
|
|
||||||
stampa_classe = FALSE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if ((_sez_da_stamp == '2')&&(_let_da_stamp != 'Z'))
|
|
||||||
{
|
{
|
||||||
char app = ' ';
|
set_row (_i++,FR("@0gCONTI D'ORDINE PASSIVI"));
|
||||||
set_row(_i++,"@0g%c", app);
|
stampa_classe = FALSE;
|
||||||
set_row (_i++,TR("PASSIVO"));
|
else
|
||||||
set_row(_i++,"@0g%c", app);
|
set_row (_i++,FR("@0gPASSIVO"));
|
||||||
}
|
|
||||||
|
|
||||||
if (stampa_classe)
|
if (stampa_classe)
|
||||||
{
|
{
|
||||||
@ -4175,6 +4187,9 @@ void TStampa_IVdirettiva::setta_righe(const char * titolo)
|
|||||||
}
|
}
|
||||||
if (numero != 0)
|
if (numero != 0)
|
||||||
{
|
{
|
||||||
|
if (devo_stampare_risultato_prima_delle_imposte())
|
||||||
|
stampa_risultato_prima_delle_imposte();
|
||||||
|
|
||||||
set_row(_i,"@13g%s", bil->num);
|
set_row(_i,"@13g%s", bil->num);
|
||||||
*_descr = (const char*) descr_num;
|
*_descr = (const char*) descr_num;
|
||||||
setta_righe_descr(_descr,num,num2);
|
setta_righe_descr(_descr,num,num2);
|
||||||
@ -4187,34 +4202,28 @@ void TStampa_IVdirettiva::setta_righe(const char * titolo)
|
|||||||
{
|
{
|
||||||
if ((_sez_da_stamp == '1')&&(_let_da_stamp == 'Z'))
|
if ((_sez_da_stamp == '1')&&(_let_da_stamp == 'Z'))
|
||||||
{
|
{
|
||||||
char app = ' ';
|
set_row (_i++,"@0g ");
|
||||||
set_row (_i++,"@0g%c", app);
|
set_row (_i++,FR("@0gCONTI D'ORDINE ATTIVI"));
|
||||||
set_row (_i++,TR("CONTI D'ORDINE ATTIVI"));
|
set_row (_i++,"@0g ");
|
||||||
set_row (_i++,"@0g%c", app);
|
|
||||||
stampa_classe = FALSE;
|
stampa_classe = FALSE;
|
||||||
}
|
}
|
||||||
if ((_sez_da_stamp == '2')&&(_let_da_stamp == 'Z'))
|
if ((_sez_da_stamp == '2')&&(_let_da_stamp == 'Z'))
|
||||||
{
|
{
|
||||||
char app = ' ';
|
set_row(_i++,"@0g ");
|
||||||
set_row(_i++,"@0g%c", app);
|
set_row (_i++,FR("@0gCONTI D'ORDINE PASSIVI"));
|
||||||
set_row (_i++,TR("CONTI D'ORDINE PASSIVI"));
|
set_row(_i++,"@0g ");
|
||||||
set_row(_i++,"@0g%c", app);
|
|
||||||
stampa_classe = FALSE;
|
stampa_classe = FALSE;
|
||||||
}
|
}
|
||||||
if (stampa_classe)
|
if (stampa_classe)
|
||||||
{
|
{
|
||||||
if ((_sez_da_stamp=='1')||(_sez_da_stamp=='2')||(_sez_da_stamp=='9'))
|
if ((_sez_da_stamp=='1')||(_sez_da_stamp=='2')||(_sez_da_stamp=='9'))
|
||||||
{
|
{
|
||||||
if (_sez_da_stamp=='9' && bil->let=='E' && !_risimp_fatto)
|
set_row(_i,"@0g%c", bil->let);
|
||||||
{
|
*_descr = (const char*) descr_let;
|
||||||
// Non stampare E) ... se gia` stampato da totale prima delle imposte
|
setta_righe_descr(_descr,lettera1,lettera2);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
set_row(_i,"@0g%c", bil->let);
|
|
||||||
*_descr = (const char*) descr_let;
|
|
||||||
setta_righe_descr(_descr,lettera1,lettera2);
|
|
||||||
}
|
|
||||||
if (!_intera_struttura || (_intera_struttura && bil->gruppo[0] != 'Z'))
|
if (!_intera_struttura || (_intera_struttura && bil->gruppo[0] != 'Z'))
|
||||||
{
|
{
|
||||||
_cont_numr = 1;
|
_cont_numr = 1;
|
||||||
@ -4230,6 +4239,8 @@ void TStampa_IVdirettiva::setta_righe(const char * titolo)
|
|||||||
}
|
}
|
||||||
if (numero != 0)
|
if (numero != 0)
|
||||||
{
|
{
|
||||||
|
if (devo_stampare_risultato_prima_delle_imposte())
|
||||||
|
stampa_risultato_prima_delle_imposte();
|
||||||
set_row(_i,"@13g%s", bil->num);
|
set_row(_i,"@13g%s", bil->num);
|
||||||
*_descr = (const char*) descr_num;
|
*_descr = (const char*) descr_num;
|
||||||
setta_righe_descr(_descr,num,num2);
|
setta_righe_descr(_descr,num,num2);
|
||||||
@ -4253,6 +4264,8 @@ void TStampa_IVdirettiva::setta_righe(const char * titolo)
|
|||||||
|
|
||||||
if (numero != 0)
|
if (numero != 0)
|
||||||
{
|
{
|
||||||
|
if (devo_stampare_risultato_prima_delle_imposte())
|
||||||
|
stampa_risultato_prima_delle_imposte();
|
||||||
set_row(_i,"@13g%s", bil->num);
|
set_row(_i,"@13g%s", bil->num);
|
||||||
*_descr = (const char*) descr_num;
|
*_descr = (const char*) descr_num;
|
||||||
setta_righe_descr(_descr,num,num2);
|
setta_righe_descr(_descr,num,num2);
|
||||||
@ -4264,6 +4277,8 @@ void TStampa_IVdirettiva::setta_righe(const char * titolo)
|
|||||||
{
|
{
|
||||||
if ((_sez_da_stamp=='1')||(_sez_da_stamp=='2')||(_sez_da_stamp=='9'))
|
if ((_sez_da_stamp=='1')||(_sez_da_stamp=='2')||(_sez_da_stamp=='9'))
|
||||||
{
|
{
|
||||||
|
if (devo_stampare_risultato_prima_delle_imposte())
|
||||||
|
stampa_risultato_prima_delle_imposte();
|
||||||
set_row(_i,"@13g%s", bil->num);
|
set_row(_i,"@13g%s", bil->num);
|
||||||
*_descr = (const char*) descr_num;
|
*_descr = (const char*) descr_num;
|
||||||
setta_righe_descr(_descr,num,num2);
|
setta_righe_descr(_descr,num,num2);
|
||||||
@ -4326,12 +4341,12 @@ void TStampa_IVdirettiva::setta_righe_verifica()
|
|||||||
long sottoc;
|
long sottoc;
|
||||||
TString numrom,numr;
|
TString numrom,numr;
|
||||||
TString descr_let,descr_numr,descr_num,descr_sottoc,descr_classe;
|
TString descr_let,descr_numr,descr_num,descr_sottoc,descr_classe;
|
||||||
TString lettera1 = "@1g)@3g%s";
|
const char* lettera1 = "@1g)@3g%s";
|
||||||
TString lettera2 = "@3g%s";
|
const char* lettera2 = "@3g%s";
|
||||||
TString numr1 = "@8g)@10g%s";
|
const char* numr1 = "@8g)@10g%s";
|
||||||
TString numr2 = "@10g%s";
|
const char* numr2 = "@10g%s";
|
||||||
TString num = "@2g)@4g%s";
|
const char* num = "@2g)@4g%s";
|
||||||
TString num2 = "@4g%s";
|
const char* num2 = "@4g%s";
|
||||||
|
|
||||||
_descr->set_width(35);
|
_descr->set_width(35);
|
||||||
|
|
||||||
@ -4618,24 +4633,20 @@ void TStampa_IVdirettiva::setta_righe_verifica()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TStampa_IVdirettiva::setta_righe_descr(TParagraph_string* str,const TString& formato,const TString& formato2)
|
void TStampa_IVdirettiva::setta_righe_descr(TParagraph_string* str,const char* formato,const char* formato2)
|
||||||
{
|
{
|
||||||
const char* r;
|
const char* r;
|
||||||
int i = 1;
|
for (int i = 1; (r = str->get()) != NULL; i++)
|
||||||
|
|
||||||
while ((r = str->get()) != NULL)
|
|
||||||
{
|
{
|
||||||
if (i == 1)
|
if (i == 1)
|
||||||
set_row (_i,formato, r);
|
set_row (_i,formato, r);
|
||||||
else
|
else
|
||||||
if (i > 1)
|
set_row (_i,formato2,r);
|
||||||
set_row (_i,formato2,r);
|
|
||||||
_i++;
|
_i++;
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TStampa_IVdirettiva::setta_righe_descr_verifica(TParagraph_string* str,const TString& formato,const TString& formato2)
|
void TStampa_IVdirettiva::setta_righe_descr_verifica(TParagraph_string* str,const char* formato,const char* formato2)
|
||||||
{
|
{
|
||||||
const char* r;
|
const char* r;
|
||||||
int i = 1;
|
int i = 1;
|
||||||
@ -4655,108 +4666,45 @@ void TStampa_IVdirettiva::setta_righe_descr_verifica(TParagraph_string* str,cons
|
|||||||
|
|
||||||
const char* TStampa_IVdirettiva::descrizione_sezione(char sezione)
|
const char* TStampa_IVdirettiva::descrizione_sezione(char sezione)
|
||||||
{
|
{
|
||||||
TTable tabivd(TAB_IVD);
|
const char sez[2] = { sezione, '\0' };
|
||||||
TString dep, dep2;
|
tmp = cache().get(TAB_IVD, sez, "S0");
|
||||||
|
|
||||||
tabivd.zero();
|
|
||||||
dep = format("%1c", sezione);
|
|
||||||
tabivd.put("CODTAB", dep);
|
|
||||||
tabivd.read();
|
|
||||||
dep2 = tabivd.get("CODTAB");
|
|
||||||
if (dep == dep2)
|
|
||||||
tmp = tabivd.get("S0");
|
|
||||||
else
|
|
||||||
tmp = "";
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TStampa_IVdirettiva::descrizione_lettera(char sezione, char lettera)
|
const char* TStampa_IVdirettiva::descrizione_lettera(char sezione, char lettera)
|
||||||
{
|
{
|
||||||
TTable tabivd(TAB_IVD);
|
const char let[3] = { sezione, lettera, '\0' };
|
||||||
TString dep, dep2;
|
tmp = cache().get(TAB_IVD, let, "S0");
|
||||||
|
|
||||||
tabivd.zero();
|
|
||||||
dep = format("%1c%1c", sezione, lettera);
|
|
||||||
tabivd.put("CODTAB", dep);
|
|
||||||
tabivd.read();
|
|
||||||
dep2 = tabivd.get("CODTAB");
|
|
||||||
if (dep == dep2)
|
|
||||||
tmp = tabivd.get("S0");
|
|
||||||
else
|
|
||||||
tmp = "";
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TStampa_IVdirettiva::descrizione_numeroromano(char sezione, char lettera, int numr)
|
const char* TStampa_IVdirettiva::descrizione_numeroromano(char sezione, char lettera, int numr)
|
||||||
{
|
{
|
||||||
TTable tabivd(TAB_IVD);
|
TString8 cod; cod.format("%c%c%04d", sezione, lettera, numr);
|
||||||
TString80 dep, dep2;
|
tmp = cache().get(TAB_IVD, cod, "S0");
|
||||||
|
|
||||||
tabivd.zero();
|
|
||||||
if (numr != 0)
|
|
||||||
dep.format("%1c%1c%04d", sezione, lettera, numr);
|
|
||||||
else
|
|
||||||
dep.format("%c%c ", sezione, lettera);
|
|
||||||
|
|
||||||
tabivd.put("CODTAB", dep);
|
|
||||||
tabivd.read();
|
|
||||||
dep2 = tabivd.get("CODTAB");
|
|
||||||
if (dep == dep2)
|
|
||||||
tmp = tabivd.get("S0");
|
|
||||||
else
|
|
||||||
tmp = "";
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TStampa_IVdirettiva::descrizione_numero(char sezione, char lettera, int numr, int numero)
|
const char* TStampa_IVdirettiva::descrizione_numero(char sezione, char lettera, int numr, int numero)
|
||||||
{
|
{
|
||||||
TTable tabivd(TAB_IVD);
|
TString8 cod; cod.format("%c%c%04d%02d", sezione, lettera, numr, numero);
|
||||||
TString80 dep,dep2;
|
tmp = cache().get(TAB_IVD, cod, "S0");
|
||||||
|
|
||||||
tabivd.zero();
|
|
||||||
if (numr != 0)
|
|
||||||
dep.format("%1c%1c%04d%02d",sezione, lettera, numr, numero);
|
|
||||||
else
|
|
||||||
dep.format("%c%c %02d",sezione,lettera,numero);
|
|
||||||
tabivd.put("CODTAB", dep);
|
|
||||||
tabivd.read();
|
|
||||||
dep2 = tabivd.get("CODTAB");
|
|
||||||
if (dep == dep2)
|
|
||||||
tmp = tabivd.get("S0");
|
|
||||||
else
|
|
||||||
tmp = "";
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TStampa_IVdirettiva::descrizione_sottoconto(int gruppo, int conto, long sottoc)
|
const char* TStampa_IVdirettiva::descrizione_sottoconto(int gruppo, int conto, long sottoc)
|
||||||
{
|
{
|
||||||
TLocalisamfile pconti (LF_PCON);
|
// Cache non strettamente necessaria in quanto i conti vengono letti solo una volta
|
||||||
|
TString16 cod; cod.format("%d|%d|%ld", gruppo, conto, sottoc);
|
||||||
pconti.zero();
|
tmp = cache().get(LF_PCON, cod, PCN_DESCR);
|
||||||
pconti.put(PCN_GRUPPO , gruppo);
|
|
||||||
if (conto != 0)
|
|
||||||
pconti.put(PCN_CONTO , conto );
|
|
||||||
if (sottoc != 0)
|
|
||||||
pconti.put(PCN_SOTTOCONTO, sottoc);
|
|
||||||
pconti.read();
|
|
||||||
if (pconti.bad())
|
|
||||||
pconti.zero();
|
|
||||||
tmp = pconti.get(PCN_DESCR);
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TStampa_IVdirettiva::descr_sottoc_clifo(char tipocf,long s)
|
const char* TStampa_IVdirettiva::descr_sottoc_clifo(char tipocf,long s)
|
||||||
{
|
{
|
||||||
TLocalisamfile clifo (LF_CLIFO);
|
// Cache non strettamente necessaria in quanto i clifo vengono letti solo una volta
|
||||||
|
TString16 cod; cod.format("%c|%ld", tipocf, s);
|
||||||
clifo.zero();
|
tmp = cache().get(LF_CLIFO, cod, CLI_RAGSOC);
|
||||||
clifo.put(CLI_TIPOCF,tipocf);
|
|
||||||
if (s != 0)
|
|
||||||
clifo.put(CLI_CODCF, s);
|
|
||||||
clifo.read();
|
|
||||||
if (clifo.bad())
|
|
||||||
clifo.zero();
|
|
||||||
tmp = clifo.get(CLI_RAGSOC);
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4932,29 +4880,23 @@ void TStampa_IVdirettiva::intesta_scalare()
|
|||||||
|
|
||||||
void TStampa_IVdirettiva::intesta_verifica()
|
void TStampa_IVdirettiva::intesta_verifica()
|
||||||
{
|
{
|
||||||
TString sep(132),sep1(147);
|
set_header (3,TR("@0gBILANCIO DI VERIFICA IV DIRETTIVA"));
|
||||||
|
|
||||||
set_header (3,TR("BILANCIO DI VERIFICA IV DIRETTIVA"));
|
|
||||||
if (_tipo_stampa == 1)
|
if (_tipo_stampa == 1)
|
||||||
{
|
{
|
||||||
TString datainistr = _dataini.string();
|
TString datainistr = _dataini.string();
|
||||||
TString datafinestr = _datafine.string();
|
TString datafinestr = _datafine.string();
|
||||||
set_header (3,FR("@43gdalla data@54g%s alla data %s"),
|
set_header (3,FR("@43gdalla data@54g%s alla data %s"),
|
||||||
|
|
||||||
(const char*)datainistr, (const char*) datafinestr);
|
(const char*)datainistr, (const char*) datafinestr);
|
||||||
}
|
}
|
||||||
else if (_tipo_stampa == 2)
|
else if (_tipo_stampa == 2)
|
||||||
set_header (3,FR("@42gall'ultima immissione"));
|
set_header (3,FR("@42gall'ultima immissione"));
|
||||||
|
|
||||||
if (_stampa_modulo)
|
TString sep;
|
||||||
{
|
sep.fill('-', _stampa_modulo ? 147 : 132);
|
||||||
sep1.fill('-'); //Stampa 132 - (sep(132))
|
set_header (4, sep);
|
||||||
set_header (4, (const char *) sep1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sep.fill('-'); //Stampa 132 - (sep(132))
|
|
||||||
set_header (4, (const char *) sep);
|
|
||||||
}
|
|
||||||
intesta_verifica_fissa();
|
intesta_verifica_fissa();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4975,6 +4917,8 @@ void TStampa_IVdirettiva::init_sort()
|
|||||||
|
|
||||||
bool TStampa_IVdirettiva::user_create()
|
bool TStampa_IVdirettiva::user_create()
|
||||||
{
|
{
|
||||||
|
open_files(LF_TAB, 0);
|
||||||
|
|
||||||
_nditte = new TLocalisamfile (LF_NDITTE);
|
_nditte = new TLocalisamfile (LF_NDITTE);
|
||||||
_comuni = new TLocalisamfile (LF_COMUNI);
|
_comuni = new TLocalisamfile (LF_COMUNI);
|
||||||
_unloc = new TLocalisamfile (LF_UNLOC);
|
_unloc = new TLocalisamfile (LF_UNLOC);
|
||||||
@ -4985,7 +4929,6 @@ bool TStampa_IVdirettiva::user_create()
|
|||||||
_caus = new TLocalisamfile (LF_CAUSALI);
|
_caus = new TLocalisamfile (LF_CAUSALI);
|
||||||
_descr = new TParagraph_string("",40);
|
_descr = new TParagraph_string("",40);
|
||||||
_d = new TParagraph_string("",33);
|
_d = new TParagraph_string("",33);
|
||||||
_tabivd = new TTable (TAB_IVD);
|
|
||||||
|
|
||||||
_sld = new TSaldo();
|
_sld = new TSaldo();
|
||||||
|
|
||||||
@ -5008,7 +4951,6 @@ bool TStampa_IVdirettiva::user_destroy()
|
|||||||
{
|
{
|
||||||
delete _msk;
|
delete _msk;
|
||||||
|
|
||||||
delete _tabivd;
|
|
||||||
delete _nditte;
|
delete _nditte;
|
||||||
delete _comuni;
|
delete _comuni;
|
||||||
delete _unloc;
|
delete _unloc;
|
||||||
@ -5026,11 +4968,10 @@ bool TStampa_IVdirettiva::user_destroy()
|
|||||||
|
|
||||||
int cg1600 (int argc, char* argv[])
|
int cg1600 (int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
|
||||||
TStampa_IVdirettiva a;
|
TStampa_IVdirettiva a;
|
||||||
|
|
||||||
a.run(argc, argv, TR("Stampa Bilancio IV direttiva CEE"));
|
a.run(argc, argv, TR("Stampa Bilancio IV direttiva CEE"));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -163,7 +163,7 @@ TMask* TPrimanota_application::load_mask(int n)
|
|||||||
cgm.set_handler(CG_TIPO, cg_tipo_handler);
|
cgm.set_handler(CG_TIPO, cg_tipo_handler);
|
||||||
cgm.set_handler(CG_GRUPPO, cg_gruppo_handler);
|
cgm.set_handler(CG_GRUPPO, cg_gruppo_handler);
|
||||||
cgm.set_handler(CG_CONTO, cg_conto_handler);
|
cgm.set_handler(CG_CONTO, cg_conto_handler);
|
||||||
cgm.set_handler(CG_SOTTOCONTO, suspended_handler);
|
cgm.set_handler(CG_SOTTOCONTO, cg_sottoconto_handler);
|
||||||
cgm.set_handler(CG_SOTTOCONTO + 100, sheet_clifo_handler);
|
cgm.set_handler(CG_SOTTOCONTO + 100, sheet_clifo_handler);
|
||||||
cgm.set_handler(CG_SOTTOCONTO + 200, sheet_clifo_handler);
|
cgm.set_handler(CG_SOTTOCONTO + 200, sheet_clifo_handler);
|
||||||
|
|
||||||
|
|||||||
@ -17,13 +17,13 @@ BEGIN
|
|||||||
DISPLAY "%@6" R0
|
DISPLAY "%@6" R0
|
||||||
DISPLAY "Tipo" S1
|
DISPLAY "Tipo" S1
|
||||||
OUTPUT 102 CODTAB
|
OUTPUT 102 CODTAB
|
||||||
OUTPUT 211 S0
|
OUTPUT 158 S0
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
WARNING "Codice IVA assente"
|
WARNING "Codice IVA assente"
|
||||||
VALIDATE ZEROFILL_FUNC 2
|
VALIDATE ZEROFILL_FUNC 2
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING 211 58
|
STRING 158 58
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 16 2 ""
|
PROMPT 16 2 ""
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
|
|||||||
@ -940,6 +940,7 @@ void TMastrini_application::fai_stampa198()
|
|||||||
{
|
{
|
||||||
if (_sottocontocontr > 0)
|
if (_sottocontocontr > 0)
|
||||||
{
|
{
|
||||||
|
conto(_gruppocontr,_contocontr,FALSE);
|
||||||
TBill tc (_gruppocontr,_contocontr,_sottocontocontr,_tipo_contr);
|
TBill tc (_gruppocontr,_contocontr,_sottocontocontr,_tipo_contr);
|
||||||
_descrcontr.cut(0);
|
_descrcontr.cut(0);
|
||||||
_descrcontr << _g_contr << ' ' << _c_contr << ' ' << _s_contr << ' ' << tc.descrizione();
|
_descrcontr << _g_contr << ' ' << _c_contr << ' ' << _s_contr << ' ' << tc.descrizione();
|
||||||
@ -2671,6 +2672,7 @@ void TMastrini_application::conto(int gruppo, int conto, bool no_contropartita)
|
|||||||
|
|
||||||
const TRectype & pconti = cache().get(LF_PCON, key);
|
const TRectype & pconti = cache().get(LF_PCON, key);
|
||||||
|
|
||||||
|
|
||||||
if (no_contropartita)
|
if (no_contropartita)
|
||||||
{
|
{
|
||||||
_indbil = pconti.get_int(PCN_INDBIL);
|
_indbil = pconti.get_int(PCN_INDBIL);
|
||||||
|
|||||||
@ -789,7 +789,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
TString8 tipoiva = _iva->get("S1");
|
TString8 tipoiva = _iva->get("S1");
|
||||||
TString8 tipoes_v = _iva->get("S2");
|
TString8 tipoes_v = _iva->get("S2");
|
||||||
TString8 tipoes_a = _iva->get("S9");
|
TString8 tipoes_a = _iva->get("S9");
|
||||||
TString8 iva_vpn = _iva->get(tipomov == vendita ? "S10" : "S11");
|
|
||||||
int tipoagr = atoi(_iva->get("S4"));
|
int tipoagr = atoi(_iva->get("S4"));
|
||||||
int tipoag = atoi(_iva->get("S5"));
|
int tipoag = atoi(_iva->get("S5"));
|
||||||
int tipopla = atoi(_iva->get("S3"));
|
int tipopla = atoi(_iva->get("S3"));
|
||||||
@ -829,41 +828,58 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
if (_is_interactive && month == 13)
|
if (_is_interactive && month == 13)
|
||||||
iva11_set_arr_phase_1(trueatt);
|
iva11_set_arr_phase_1(trueatt);
|
||||||
|
|
||||||
|
|
||||||
// Cumula l'ammontare delle operazioni attive/passive
|
// Cumula l'ammontare delle operazioni attive/passive
|
||||||
// per la dichiarazione periodica
|
// per la dichiarazione annuale fati iva
|
||||||
if (iva_vpn.not_empty() && !fattrit)
|
if (month == 13 && !fattrit)
|
||||||
{
|
{
|
||||||
switch (tipomov)
|
const TString& iva_vpn = _iva->get(tipomov == vendita ? "S10" : "S11");
|
||||||
|
if (iva_vpn.not_empty())
|
||||||
{
|
{
|
||||||
case vendita: // CD1 - 1 2 3 4
|
switch (tipomov)
|
||||||
if (!corrisp && tipodoc != "AF" && (cau_intra || !cau_valintra) &&
|
{
|
||||||
sosp_imp != normale && sosp_imp != liquidazione)
|
case vendita: // CD1 - 1 2 3 4
|
||||||
{
|
if (!corrisp && tipodoc != "AF" && (cau_intra || !cau_valintra) &&
|
||||||
cessioni_cd1_1 += imponibile;
|
sosp_imp != normale && sosp_imp != liquidazione)
|
||||||
if (iva_vpn == "CD12")
|
{
|
||||||
cessioni_cd1_2 += imponibile;
|
cessioni_cd1_1 += imponibile;
|
||||||
if (iva_vpn == "CD13")
|
if (!cau_intra)
|
||||||
cessioni_cd1_3 += imponibile;
|
{
|
||||||
if (cau_valintra && iva_vpn == "CD14")
|
if (iva_vpn == "CD12")
|
||||||
cessioni_cd1_4 += imponibile;
|
cessioni_cd1_2 += imponibile; else
|
||||||
}
|
if (iva_vpn == "CD13")
|
||||||
break;
|
cessioni_cd1_3 += imponibile;
|
||||||
case acquisto: // CD2 - 1 2 3 4
|
}
|
||||||
acquisti_cd2_1 += imponibile;
|
else
|
||||||
if (iva_vpn == "CD22")
|
{
|
||||||
acquisti_cd2_2 += imponibile;
|
if (iva_vpn == "CD14")
|
||||||
if (iva_vpn == "CD23")
|
cessioni_cd1_4 += imponibile;
|
||||||
acquisti_cd2_3 += imponibile;
|
}
|
||||||
if (cau_intra && iva_vpn == "CD24")
|
}
|
||||||
acquisti_cd2_4 += imponibile;
|
break;
|
||||||
if (iva_vpn == "CD3")
|
case acquisto: // CD2 - 1 2 3 4
|
||||||
{
|
acquisti_cd2_1 += imponibile;
|
||||||
oroargento_cd3_1 += imponibile;
|
if (!cau_intra)
|
||||||
oroargento_cd3_2 += imposta;
|
{
|
||||||
}
|
if (iva_vpn == "CD22")
|
||||||
break;
|
acquisti_cd2_2 += imponibile; else
|
||||||
default:
|
if (iva_vpn == "CD23")
|
||||||
break;
|
acquisti_cd2_3 += imponibile;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (iva_vpn == "CD24")
|
||||||
|
acquisti_cd2_4 += imponibile;
|
||||||
|
}
|
||||||
|
if (iva_vpn == "CD3")
|
||||||
|
{
|
||||||
|
oroargento_cd3_1 += imponibile;
|
||||||
|
oroargento_cd3_2 += imposta;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -98,7 +98,7 @@ void TLiquidazione_app::recalc_corrispettivi(int month, const char* codatt)
|
|||||||
_pam->put("R1", vaf);
|
_pam->put("R1", vaf);
|
||||||
_pam->rewrite();
|
_pam->rewrite();
|
||||||
// Aggiorna il totale IVA periodica CD1_1
|
// Aggiorna il totale IVA periodica CD1_1
|
||||||
if (look_iva(ci->_codiva))
|
if (month == 13 && look_iva(ci->_codiva))
|
||||||
{
|
{
|
||||||
if (_iva->get("S10").not_empty()) // Solo CD1_1 ha senso coi corrispettivi...
|
if (_iva->get("S10").not_empty()) // Solo CD1_1 ha senso coi corrispettivi...
|
||||||
{
|
{
|
||||||
@ -339,7 +339,7 @@ void TLiquidazione_app::recalc_ventilation(int month, const char* codatt)
|
|||||||
_pam->rewrite();
|
_pam->rewrite();
|
||||||
|
|
||||||
// Aggiorna il totale IVA periodica CD1_1
|
// Aggiorna il totale IVA periodica CD1_1
|
||||||
if (look_iva(vv->_codiva))
|
if (month == 13 && look_iva(vv->_codiva))
|
||||||
{
|
{
|
||||||
if (_iva->get("S10").not_empty()) // Solo CD1_1 ha senso coi corrispettivi
|
if (_iva->get("S10").not_empty()) // Solo CD1_1 ha senso coi corrispettivi
|
||||||
{
|
{
|
||||||
|
|||||||
@ -274,10 +274,12 @@ TDich_periodica_iva_mask::TDich_periodica_iva_mask(TDich_periodica_selfirm_mask
|
|||||||
|
|
||||||
void TDich_periodica_iva_mask::read_iva_data()
|
void TDich_periodica_iva_mask::read_iva_data()
|
||||||
{
|
{
|
||||||
|
|
||||||
TString16 key;
|
TString16 key;
|
||||||
|
|
||||||
key.format("%4d13", _sf->get_year());
|
key.format("%4d13", _sf->get_year());
|
||||||
|
|
||||||
|
|
||||||
const TRectype & lim = cache().get("LIM", key);
|
const TRectype & lim = cache().get("LIM", key);
|
||||||
|
|
||||||
if (lim.get_bool("B0"))
|
if (lim.get_bool("B0"))
|
||||||
@ -304,6 +306,7 @@ void TDich_periodica_iva_mask::read_iva_data()
|
|||||||
TRectype & pum = relpum.curr();
|
TRectype & pum = relpum.curr();
|
||||||
|
|
||||||
key.format("%04d",_sf->get_year());
|
key.format("%04d",_sf->get_year());
|
||||||
|
|
||||||
pum.put("CODTAB", key);
|
pum.put("CODTAB", key);
|
||||||
TCursor cur(&relpum, "", 1, &pum, &pum);
|
TCursor cur(&relpum, "", 1, &pum, &pum);
|
||||||
const TRecnotype items = cur.items();
|
const TRecnotype items = cur.items();
|
||||||
@ -313,6 +316,9 @@ void TDich_periodica_iva_mask::read_iva_data()
|
|||||||
{
|
{
|
||||||
const TString & codtab = pum.get("CODTAB");
|
const TString & codtab = pum.get("CODTAB");
|
||||||
|
|
||||||
|
const TString& annoiva = codtab.left(4);
|
||||||
|
if (annoiva != key)
|
||||||
|
break;
|
||||||
if (atoi(codtab.right(2)) == 13) // Solo annuale
|
if (atoi(codtab.right(2)) == 13) // Solo annuale
|
||||||
{
|
{
|
||||||
cd1_1 += pum.get_real("R14");
|
cd1_1 += pum.get_real("R14");
|
||||||
@ -326,7 +332,12 @@ void TDich_periodica_iva_mask::read_iva_data()
|
|||||||
cd3_1 += pum.get_real("R22");
|
cd3_1 += pum.get_real("R22");
|
||||||
cd3_2 += pum.get_real("R23");
|
cd3_2 += pum.get_real("R23");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// Arrotondare tutto all'Euro
|
||||||
|
cd1_1.round(); cd1_2.round(); cd1_3.round(); cd1_4.round();
|
||||||
|
cd2_1.round(); cd2_2.round(); cd2_3.round(); cd2_4.round();
|
||||||
|
cd3_1.round(); cd3_2.round();
|
||||||
|
|
||||||
const real rettifica = lim.get_real("R5"); // Rettifiche
|
const real rettifica = lim.get_real("R5"); // Rettifiche
|
||||||
|
|
||||||
@ -334,10 +345,13 @@ void TDich_periodica_iva_mask::read_iva_data()
|
|||||||
|
|
||||||
if (rettifica > ZERO)
|
if (rettifica > ZERO)
|
||||||
cd4 += rettifica;
|
cd4 += rettifica;
|
||||||
|
cd4 += cd3_2; // Soomo anche imposta su oro, argento e birra
|
||||||
|
cd4.round();
|
||||||
|
|
||||||
real cd5 = lam.get_real("R1"); // Iva che si detrae per il periodo
|
real cd5 = lam.get_real("R1"); // Iva che si detrae per il periodo
|
||||||
if (rettifica < ZERO && !exclude_sign)
|
if (rettifica < ZERO && !exclude_sign)
|
||||||
cd5 += abs(rettifica);
|
cd5 += abs(rettifica);
|
||||||
|
cd5.round();
|
||||||
|
|
||||||
const real cd6 = cd4 - cd5; // IVA a debito o credito per il periodo
|
const real cd6 = cd4 - cd5; // IVA a debito o credito per il periodo
|
||||||
real cd6_1, cd6_2;
|
real cd6_1, cd6_2;
|
||||||
@ -353,7 +367,8 @@ void TDich_periodica_iva_mask::read_iva_data()
|
|||||||
set(F_CD6_1, cd6_1); set(F_CD6_2, cd6_2);
|
set(F_CD6_1, cd6_1); set(F_CD6_2, cd6_2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
error_box(TR("Risultati liquidazione non presenti o da ricalcolare per il periodo richiesto."));
|
error_box("Risultati liquidazione non presenti o da ricalcolare per l'anno %d.", anno);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDich_periodica_iva_mask::print_prospect()
|
void TDich_periodica_iva_mask::print_prospect()
|
||||||
@ -384,9 +399,8 @@ void TDich_periodica_iva_mask::print_prospect()
|
|||||||
|
|
||||||
TRectype f(LF_NDITTE);
|
TRectype f(LF_NDITTE);
|
||||||
f.put(NDT_CODDITTA, get(F_CODDITTA));
|
f.put(NDT_CODDITTA, get(F_CODDITTA));
|
||||||
TRectype t(f);
|
|
||||||
|
|
||||||
frm.cursor()->setregion(f,t);
|
frm.cursor()->setregion(f,f);
|
||||||
frm.print();
|
frm.print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -19,7 +19,7 @@ BEGIN
|
|||||||
OFFSET 0 0
|
OFFSET 0 0
|
||||||
END
|
END
|
||||||
|
|
||||||
SECTION BODY ODD 50
|
SECTION BODY ODD 40
|
||||||
|
|
||||||
STRINGA -1
|
STRINGA -1
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|||||||
@ -102,7 +102,7 @@ Flags = ""
|
|||||||
Item_01 = "Parametri liquidazione", "cg5 -3", "F"
|
Item_01 = "Parametri liquidazione", "cg5 -3", "F"
|
||||||
Item_02 = "Liquidazione", "cg4 -2", "F"
|
Item_02 = "Liquidazione", "cg4 -2", "F"
|
||||||
Item_03 = "Visualizzazione liquidazione", "cg5 -5", "F"
|
Item_03 = "Visualizzazione liquidazione", "cg5 -5", "F"
|
||||||
Item_04 = "Prospetto dich. IVA periodica", "cg5 -7", "F"
|
Item_04 = "Comunicazione annuale dati IVA", "cg5 -7", "F"
|
||||||
Item_05 = "Riepilogo progressivi", "cg0 -3", "F"
|
Item_05 = "Riepilogo progressivi", "cg0 -3", "F"
|
||||||
Item_06 = "Stampa registri", "cg4 -3", "F"
|
Item_06 = "Stampa registri", "cg4 -3", "F"
|
||||||
Item_07 = "Liste fatture", [PRASSICG_026]
|
Item_07 = "Liste fatture", [PRASSICG_026]
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
int n = argc > 1 ? atoi(argv[1]+1) : 0;
|
const int n = argc > 1 ? atoi(argv[1]+1) : 0;
|
||||||
switch(n)
|
switch(n)
|
||||||
{
|
{
|
||||||
case 1: db1200(argc, argv); break; // Stampa Anagrafica
|
case 1: db1200(argc, argv); break; // Stampa Anagrafica
|
||||||
|
|||||||
@ -50,7 +50,7 @@ struct _ParmStruct
|
|||||||
bool _last_qta,
|
bool _last_qta,
|
||||||
_vis_art, _vis_lav, _vis_vir, _vis_gho,
|
_vis_art, _vis_lav, _vis_vir, _vis_gho,
|
||||||
_fabbisogno, _no_fabbis_fin, _no_zero_ord,
|
_fabbisogno, _no_fabbis_fin, _no_zero_ord,
|
||||||
_val_magmb, _val_depmb, _newpage, _det_ord_for,
|
_val_magmb, _val_depmb, _newpage, _det_ord_for, _sort_for,
|
||||||
_separate_dist, _separate_giac,
|
_separate_dist, _separate_giac,
|
||||||
_add_orc, _add_orf, _add_prf, _add_prc, _add_acl, _add_incl,
|
_add_orc, _add_orf, _add_prf, _add_prc, _add_acl, _add_incl,
|
||||||
_normal_disp;
|
_normal_disp;
|
||||||
@ -279,6 +279,9 @@ public:
|
|||||||
void set_parameters(_ParmStruct* ps);
|
void set_parameters(_ParmStruct* ps);
|
||||||
void explode_and_print();
|
void explode_and_print();
|
||||||
void reset_cache() { _art_cache.destroy(); }
|
void reset_cache() { _art_cache.destroy(); }
|
||||||
|
|
||||||
|
static TArticolo_cache& cache_articoli() { return _f->_art_cache; }
|
||||||
|
|
||||||
TExplode_distinta_form(const char *);
|
TExplode_distinta_form(const char *);
|
||||||
virtual ~TExplode_distinta_form();
|
virtual ~TExplode_distinta_form();
|
||||||
};
|
};
|
||||||
@ -1276,6 +1279,7 @@ void TExplode_distinta_form::explode_and_print()
|
|||||||
error_box("Impossibile posizionare l'albero");
|
error_box("Impossibile posizionare l'albero");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ordina le righe di esplosione per livello/articolo/giacenza
|
||||||
compare_print_rows(const TObject** o1, const TObject** o2)
|
compare_print_rows(const TObject** o1, const TObject** o2)
|
||||||
{
|
{
|
||||||
TRiga_esplosione2print & r1 =(TRiga_esplosione2print &)(**o1);
|
TRiga_esplosione2print & r1 =(TRiga_esplosione2print &)(**o1);
|
||||||
@ -1292,13 +1296,44 @@ compare_print_rows(const TObject** o1, const TObject** o2)
|
|||||||
return diff ;
|
return diff ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ordina le righe di esplosione per fornitore/articolo/giacenza
|
||||||
|
compare_print_rows_forn(const TObject** o1, const TObject** o2)
|
||||||
|
{
|
||||||
|
TRiga_esplosione2print & r1 =(TRiga_esplosione2print &)(**o1);
|
||||||
|
TRiga_esplosione2print & r2 =(TRiga_esplosione2print &)(**o2);
|
||||||
|
const int l1 = r1.livello();
|
||||||
|
const int l2 = r2.livello();
|
||||||
|
|
||||||
|
int diff = 0;
|
||||||
|
if (l1 == 0 || l2 == 0)
|
||||||
|
diff = l1-l2;
|
||||||
|
|
||||||
|
if (diff == 0)
|
||||||
|
{
|
||||||
|
TArticolo_cache& ac = TExplode_distinta_form::cache_articoli();
|
||||||
|
long f1 = atol(ac.get(r1.articolo()).get(ANAMAG_CODFORN));
|
||||||
|
long f2 = atol(ac.get(r2.articolo()).get(ANAMAG_CODFORN));
|
||||||
|
diff = f1 < f2 ? -1 : (f1 == f2 ? 0 : +1);
|
||||||
|
}
|
||||||
|
if (diff == 0)
|
||||||
|
diff = r1.articolo().compare(r2.articolo());
|
||||||
|
if (diff == 0)
|
||||||
|
diff = r1.giacenza().compare(r2.giacenza());
|
||||||
|
return diff ;
|
||||||
|
}
|
||||||
|
|
||||||
void TExplode_distinta_form::print_explosion_rows()
|
void TExplode_distinta_form::print_explosion_rows()
|
||||||
{
|
{
|
||||||
const int righe = _exploded_tree.items();
|
const int righe = _exploded_tree.items();
|
||||||
if (righe <= 0)
|
if (righe <= 0)
|
||||||
return;
|
return;
|
||||||
if (!_p->_separate_dist)
|
if (!_p->_separate_dist)
|
||||||
_exploded_tree.sort(compare_print_rows);
|
{
|
||||||
|
if (_p->_sort_for)
|
||||||
|
_exploded_tree.sort(compare_print_rows_forn);
|
||||||
|
else
|
||||||
|
_exploded_tree.sort(compare_print_rows);
|
||||||
|
}
|
||||||
// Inizializza lo sfondo delle pagine normali se no col piffero che stampa la fincatura...
|
// Inizializza lo sfondo delle pagine normali se no col piffero che stampa la fincatura...
|
||||||
set_background(3, TRUE);
|
set_background(3, TRUE);
|
||||||
|
|
||||||
@ -1862,6 +1897,7 @@ void TEsplosione_distinta_app::main_loop()
|
|||||||
_parameters._liv_attenzione = _mask->get(F_LIVATTENZ)[0];
|
_parameters._liv_attenzione = _mask->get(F_LIVATTENZ)[0];
|
||||||
_parameters._newpage = _mask->get_bool(F_NEWPAGE);
|
_parameters._newpage = _mask->get_bool(F_NEWPAGE);
|
||||||
_parameters._det_ord_for = _mask->get_bool(F_DETORDFOR);
|
_parameters._det_ord_for = _mask->get_bool(F_DETORDFOR);
|
||||||
|
_parameters._sort_for = _mask->get_bool(F_SORTFOR);
|
||||||
_parameters._separate_dist = _mask->get_bool(F_SEPARATE_DIST);
|
_parameters._separate_dist = _mask->get_bool(F_SEPARATE_DIST);
|
||||||
_parameters._separate_giac = _mask->get_bool(F_SEPARATE_GIAC);
|
_parameters._separate_giac = _mask->get_bool(F_SEPARATE_GIAC);
|
||||||
_parameters._add_orc = _mask->get_bool(F_ORCLI4DISP);
|
_parameters._add_orc = _mask->get_bool(F_ORCLI4DISP);
|
||||||
|
|||||||
@ -49,6 +49,7 @@
|
|||||||
#define F_DESCIMP 147
|
#define F_DESCIMP 147
|
||||||
#define F_LINEA 148
|
#define F_LINEA 148
|
||||||
#define F_DESCLIN 149
|
#define F_DESCLIN 149
|
||||||
|
#define F_SORTFOR 150
|
||||||
|
|
||||||
#define F_CODDIS 101
|
#define F_CODDIS 101
|
||||||
#define F_LIV1 102
|
#define F_LIV1 102
|
||||||
|
|||||||
@ -498,8 +498,16 @@ END
|
|||||||
BOOLEAN F_DETORDFOR
|
BOOLEAN F_DETORDFOR
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 3 19 "Dettaglia ordinato fornitori"
|
PROMPT 3 19 "Dettaglia ordinato fornitori"
|
||||||
|
MESSAGE FALSE CLEAR,F_SORTFOR
|
||||||
|
MESSAGE TRUE ENABLE,F_SORTFOR
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_SORTFOR
|
||||||
|
BEGIN
|
||||||
|
PROMPT 36 19 "Ordina per fornitore"
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Articoli" -1 -1 78 20
|
PAGE "Articoli" -1 -1 78 20
|
||||||
|
|||||||
@ -30,4 +30,9 @@
|
|||||||
#define F_DESCR_INC 126
|
#define F_DESCR_INC 126
|
||||||
#define F_DESCR_SBF 127
|
#define F_DESCR_SBF 127
|
||||||
#define F_DESCR_SCN 128
|
#define F_DESCR_SCN 128
|
||||||
|
#define F_GRUPPO_INCP 129
|
||||||
|
#define F_CONTO_INCP 130
|
||||||
|
#define F_SOTTOC_INCP 131
|
||||||
|
#define F_DESCR_INCP 132
|
||||||
|
|
||||||
#endif//__BATBBNP_H
|
#endif//__BATBBNP_H
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
//DEFINIZIONE MASCHERA GESTIONE TABELLA BANCHE DI PRESENTAZIONE
|
//DEFINIZIONE MASCHERA GESTIONE TABELLA BANCHE DI PRESENTAZIONE
|
||||||
#include "batbbnp.h"
|
#include "batbbnp.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 19 0 2
|
TOOLBAR "" 0 20 0 2
|
||||||
#include <toolbar.h>
|
#include <toolbar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Banche di Presentazione" 0 -1 77 19
|
PAGE "Banche di Presentazione" 0 -1 77 20
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 4
|
GROUPBOX DLG_NULL 78 4
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -96,7 +96,7 @@ BEGIN
|
|||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 5
|
GROUPBOX DLG_NULL 78 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Portafoglio Effetti all' incasso"
|
PROMPT 1 4 "Portafoglio Effetti all' incasso"
|
||||||
END
|
END
|
||||||
@ -115,7 +115,7 @@ END
|
|||||||
|
|
||||||
NUMBER F_GRUPPO_INC 3
|
NUMBER F_GRUPPO_INC 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 7 "Contropartita "
|
PROMPT 2 7 "Cont. attivi "
|
||||||
FIELD I0
|
FIELD I0
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
@ -159,47 +159,93 @@ BEGIN
|
|||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_GRUPPO_INCP 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Cont. passivi "
|
||||||
|
FIELD I9
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CONTO_INCP 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 21 8 ""
|
||||||
|
FIELD I10
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_SOTTOC_INCP 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 28 8 ""
|
||||||
|
FIELD I11
|
||||||
|
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||||
|
INPUT GRUPPO F_GRUPPO_INCP
|
||||||
|
INPUT CONTO F_CONTO_INCP
|
||||||
|
INPUT SOTTOCONTO F_SOTTOC_INCP
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_GRUPPO_INCP GRUPPO
|
||||||
|
OUTPUT F_CONTO_INCP CONTO
|
||||||
|
OUTPUT F_SOTTOC_INCP SOTTOCONTO
|
||||||
|
OUTPUT F_DESCR_INCP DESCR
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCR_INCP 50 38
|
||||||
|
BEGIN
|
||||||
|
PROMPT 38 8 ""
|
||||||
|
USE LF_PCON KEY 2
|
||||||
|
INPUT DESCR F_DESCR_INCP
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT F_SOTTOC_INCP
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 5
|
GROUPBOX DLG_NULL 78 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 9 "Portafoglio Effetti salvo buon fine"
|
PROMPT 1 10 "Portafoglio Effetti salvo buon fine"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CC_SBF 20
|
STRING F_CC_SBF 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 "C/C "
|
PROMPT 2 11 "C/C "
|
||||||
FIELD BNP->S1
|
FIELD BNP->S1
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_FIDO_SBF 20 2
|
NUMBER F_FIDO_SBF 20 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 38 10 "Fido "
|
PROMPT 38 11 "Fido "
|
||||||
FIELD BNP->R1
|
FIELD BNP->R1
|
||||||
PICTURE "###.###.###.###,@@"
|
PICTURE "###.###.###.###,@@"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CC_CONT_SBF 20
|
STRING F_CC_CONT_SBF 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 11 "C/Contabile "
|
PROMPT 2 12 "C/Contabile "
|
||||||
FIELD BNP->S4
|
FIELD BNP->S4
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_GRUPPO_SBF 3
|
NUMBER F_GRUPPO_SBF 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "Contropartita "
|
PROMPT 2 13 "Contropartita "
|
||||||
FIELD I3
|
FIELD I3
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CONTO_SBF 3
|
NUMBER F_CONTO_SBF 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 21 12 ""
|
PROMPT 21 13 ""
|
||||||
FIELD I4
|
FIELD I4
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_SOTTOC_SBF 6
|
NUMBER F_SOTTOC_SBF 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 28 12 ""
|
PROMPT 28 13 ""
|
||||||
FIELD I5
|
FIELD I5
|
||||||
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||||
INPUT GRUPPO F_GRUPPO_SBF
|
INPUT GRUPPO F_GRUPPO_SBF
|
||||||
@ -218,7 +264,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESCR_SBF 50 38
|
STRING F_DESCR_SBF 50 38
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 38 12 ""
|
PROMPT 38 13 ""
|
||||||
USE LF_PCON KEY 2
|
USE LF_PCON KEY 2
|
||||||
INPUT DESCR F_DESCR_SBF
|
INPUT DESCR F_DESCR_SBF
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
@ -231,45 +277,45 @@ END
|
|||||||
|
|
||||||
GROUPBOX DLG_NULL 78 5
|
GROUPBOX DLG_NULL 78 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 14 "Portafoglio Effetti allo sconto"
|
PROMPT 1 15 "Portafoglio Effetti allo sconto"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CC_SCN 20
|
STRING F_CC_SCN 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 15 "C/C "
|
PROMPT 2 16 "C/C "
|
||||||
FIELD BNP->S2
|
FIELD BNP->S2
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_FIDO_SCN 20 2
|
NUMBER F_FIDO_SCN 20 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 38 15 "Fido "
|
PROMPT 38 16 "Fido "
|
||||||
FIELD BNP->R2
|
FIELD BNP->R2
|
||||||
PICTURE "###.###.###.###,@@"
|
PICTURE "###.###.###.###,@@"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CC_CONT_SCN 20
|
STRING F_CC_CONT_SCN 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 15 "C/Contabile "
|
PROMPT 2 17 "C/Contabile "
|
||||||
FIELD BNP->S5
|
FIELD BNP->S5
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_GRUPPO_SCN 3
|
NUMBER F_GRUPPO_SCN 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 17 "Contropartita "
|
PROMPT 2 18 "Contropartita "
|
||||||
FIELD I6
|
FIELD I6
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CONTO_SCN 3
|
NUMBER F_CONTO_SCN 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 21 17 ""
|
PROMPT 21 18 ""
|
||||||
FIELD I7
|
FIELD I7
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_SOTTOC_SCN 6
|
NUMBER F_SOTTOC_SCN 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 28 17 ""
|
PROMPT 28 18 ""
|
||||||
FIELD I8
|
FIELD I8
|
||||||
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||||
INPUT GRUPPO F_GRUPPO_SCN
|
INPUT GRUPPO F_GRUPPO_SCN
|
||||||
@ -288,7 +334,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESCR_SCN 50 38
|
STRING F_DESCR_SCN 50 38
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 38 17 ""
|
PROMPT 38 18 ""
|
||||||
USE LF_PCON KEY 2
|
USE LF_PCON KEY 2
|
||||||
INPUT DESCR F_DESCR_SCN
|
INPUT DESCR F_DESCR_SCN
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
@ -301,7 +347,7 @@ END
|
|||||||
|
|
||||||
BOOLEAN F_CBI
|
BOOLEAN F_CBI
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 19 "Tracciato SETIF"
|
PROMPT 2 20 "Tracciato SETIF"
|
||||||
FIELD B0
|
FIELD B0
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|||||||
434
ef/df900000.frm
Executable file
434
ef/df900000.frm
Executable file
@ -0,0 +1,434 @@
|
|||||||
|
USE 31
|
||||||
|
JOIN 14 INTO NPROGTR==NPROGTR
|
||||||
|
JOIN 20 INTO TIPOCF=="F" CODCF==CODCF
|
||||||
|
JOIN 17 TO 20 INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||||
|
JOIN 16 TO 17 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDEFF
|
||||||
|
JOIN 13 TO 20 INTO COM==COMCF
|
||||||
|
JOIN 13 TO 16 ALIAS 213 INTO COM==COM
|
||||||
|
JOIN %BAN TO 20 ALIAS 201 INTO CODTAB[1,5]==CODABI
|
||||||
|
JOIN %BAN TO 20 ALIAS 203 INTO CODTAB==CODABI+CODCAB
|
||||||
|
JOIN %BAN ALIAS 202 INTO CODTAB==CODABIP+CODCABP
|
||||||
|
JOIN %BAN ALIAS 204 INTO CODTAB[1,5]==CODABIP
|
||||||
|
JOIN BNP ALIAS 205 INTO CODTAB==CODABIP+CODCABP
|
||||||
|
END
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
BEGIN
|
||||||
|
31->* "Effetti"
|
||||||
|
14->* "Righe effetto"
|
||||||
|
20->* "Clienti e Fornitori"
|
||||||
|
13->* "Comuni"
|
||||||
|
201@->* "Tabella banche"
|
||||||
|
202@->* "Tabella banche"
|
||||||
|
203@->* "Tabella banche"
|
||||||
|
204@->* "Tabella banche"
|
||||||
|
END
|
||||||
|
|
||||||
|
GENERAL
|
||||||
|
BEGIN
|
||||||
|
OFFSET 0 0
|
||||||
|
END
|
||||||
|
|
||||||
|
SECTION GRAPHICS ODD 4
|
||||||
|
FIGURA 1 1 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 ""
|
||||||
|
END
|
||||||
|
END
|
||||||
|
|
||||||
|
SECTION HEADER ODD 8
|
||||||
|
|
||||||
|
STRING 1 80
|
||||||
|
BEGIN
|
||||||
|
KEY "denominazione banca presentazione"
|
||||||
|
PROMPT 38 1 "Al/Alla @B"
|
||||||
|
FIELD 202@->S0
|
||||||
|
// MESSAGE _BANCAP
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 2 30
|
||||||
|
BEGIN
|
||||||
|
KEY "scritta elenco riba"
|
||||||
|
PROMPT 2 1 "@BORDINI DI BONIFICO"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER 3 8
|
||||||
|
BEGIN
|
||||||
|
KEY "numero di pagina"
|
||||||
|
PROMPT 129 1 "pag. "
|
||||||
|
MESSAGE _PAGENO
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA 4 20
|
||||||
|
BEGIN
|
||||||
|
KEY "data emissione"
|
||||||
|
PROMPT 2 2 "Presentati il : "
|
||||||
|
MESSAGE _DATA
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 5 130
|
||||||
|
BEGIN
|
||||||
|
KEY "ditta"
|
||||||
|
PROMPT 2 4 "Vi preghiamo di disporre per ordine e per conto @B"
|
||||||
|
MESSAGE _DITTA,!RAGSOC
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 5 130
|
||||||
|
BEGIN
|
||||||
|
KEY "ditta"
|
||||||
|
PROMPT 2 5 "i bonifici di seguito indicati:"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 6 20
|
||||||
|
BEGIN
|
||||||
|
KEY "scritta titolo righe del body"
|
||||||
|
PROMPT 2 7 "CREDITORE"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 7 10
|
||||||
|
BEGIN
|
||||||
|
KEY "scritta titolo righe del body"
|
||||||
|
PROMPT 32 7 "INDIRIZZO"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 8 17
|
||||||
|
BEGIN
|
||||||
|
KEY "scritta titolo righe del body"
|
||||||
|
PROMPT 62 7 "BANCA D'APPOGGIO"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 9 11
|
||||||
|
BEGIN
|
||||||
|
KEY "scritta titolo righe del body"
|
||||||
|
PROMPT 94 7 "FATTURA NUM"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 10 8
|
||||||
|
BEGIN
|
||||||
|
KEY "scritta titolo righe del body"
|
||||||
|
PROMPT 111 7 "DATA FATT."
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 11 7
|
||||||
|
BEGIN
|
||||||
|
KEY "scritta titolo righe del body"
|
||||||
|
PROMPT 129 7 "IMPORTO"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 12
|
||||||
|
BEGIN
|
||||||
|
KEY "riga separazione dalle righe del body"
|
||||||
|
PROMPT 2 8 "---------------------------------------------------------------------------------------------------------------------------------------------"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 13 25
|
||||||
|
BEGIN
|
||||||
|
KEY "Numero distinta"
|
||||||
|
PROMPT 100 2 "Distinta N. @B"
|
||||||
|
FIELD NDIST
|
||||||
|
END
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
SECTION BODY ODD 6
|
||||||
|
STRING 15 2 1
|
||||||
|
BEGIN
|
||||||
|
KEY "creditore"
|
||||||
|
PROMPT 1 1 "@B"
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
STRING 16 25 2
|
||||||
|
BEGIN
|
||||||
|
KEY "creditore"
|
||||||
|
PROMPT 2 1 ""
|
||||||
|
FIELD 20->RAGSOC
|
||||||
|
MESSAGE INC,FL->2
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 27 21
|
||||||
|
BEGIN
|
||||||
|
KEY "codice fiscale"
|
||||||
|
PROMPT 2 3 "P.I. "
|
||||||
|
FIELD 20->PAIV
|
||||||
|
// FIELD 20->COFI
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 28 2 1
|
||||||
|
BEGIN
|
||||||
|
KEY "indirizzo normale"
|
||||||
|
PROMPT 25 1 "@R"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 17 25 2
|
||||||
|
BEGIN
|
||||||
|
KEY "Indirizzo debitore + nr. civico"
|
||||||
|
PROMPT 27 1 ""
|
||||||
|
MESSAGE _CLI,!IND
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 18 25 2
|
||||||
|
BEGIN
|
||||||
|
KEY "PIAZZA(LOCALITA+PROV)"
|
||||||
|
PROMPT 27 3 ""
|
||||||
|
MESSAGE _CLI,!PIAZZA
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 117 6
|
||||||
|
BEGIN
|
||||||
|
KEY ""
|
||||||
|
PROMPT 2 17 ""
|
||||||
|
MESSAGE _NUMEXPR, 20->CODABI==99999
|
||||||
|
MESSAGE COPY,118
|
||||||
|
FLAGS "H"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER 118 5
|
||||||
|
BEGIN
|
||||||
|
KEY ""
|
||||||
|
PROMPT 55 4 ""
|
||||||
|
MESSAGE ENABLE,119|DISABLE,19
|
||||||
|
MESSAGE ENABLE,120|DISABLE,20|DISABLE,21
|
||||||
|
MESSAGE ENABLE,134|DISABLE,22|DISABLE,34
|
||||||
|
MESSAGE EMPTY ENABLE,19|DISABLE,119
|
||||||
|
MESSAGE EMPTY ENABLE,20|DISABLE,120
|
||||||
|
FLAGS "H"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 119 40 2
|
||||||
|
BEGIN
|
||||||
|
KEY "banca d'appoggio denominazione"
|
||||||
|
PROMPT 55 1 ""
|
||||||
|
FIELD 203@->S0
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
STRING 120 40 1
|
||||||
|
BEGIN
|
||||||
|
KEY "banca d'appoggio denominazione"
|
||||||
|
PROMPT 55 3 ""
|
||||||
|
FIELD 203@->S2
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 19 40 2
|
||||||
|
BEGIN
|
||||||
|
KEY "banca d'appoggio denominazione"
|
||||||
|
PROMPT 55 1 ""
|
||||||
|
FIELD 201@->S0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 20 40 1
|
||||||
|
BEGIN
|
||||||
|
KEY "banca d'appoggio succursale"
|
||||||
|
PROMPT 55 3 ""
|
||||||
|
FIELD 203@->S0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 221 7
|
||||||
|
BEGIN
|
||||||
|
KEY "ABI presentazione"
|
||||||
|
PROMPT 55 4 "@B"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 21 5
|
||||||
|
BEGIN
|
||||||
|
KEY "ABI presentazione"
|
||||||
|
PROMPT 55 4 "ABI: "
|
||||||
|
FIELD 20->CODABI
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 22 5
|
||||||
|
BEGIN
|
||||||
|
KEY "CAB succursale"
|
||||||
|
PROMPT 66 4 "CAB: "
|
||||||
|
FIELD 20->CODCAB
|
||||||
|
END
|
||||||
|
|
||||||
|
LISTA 23 8
|
||||||
|
BEGIN
|
||||||
|
KEY "a saldo/in conto"
|
||||||
|
FIELD 31->ULTRATA
|
||||||
|
PROMPT 95 1 ""
|
||||||
|
ITEM " |IN CONTO"
|
||||||
|
ITEM "X|A SALDO"
|
||||||
|
flags "H"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 24 17 5
|
||||||
|
BEGIN
|
||||||
|
KEY "dati fattura"
|
||||||
|
PROMPT 92 1 ""
|
||||||
|
// MESSAGE _FATT,!DATIFATT
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA 25 10
|
||||||
|
BEGIN
|
||||||
|
KEY "data scadenza"
|
||||||
|
PROMPT 112 1 ""
|
||||||
|
// FIELD 31->DATASCAD
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 34 20
|
||||||
|
BEGIN
|
||||||
|
KEY "Conto Corrente"
|
||||||
|
PROMPT 78 4 "C/C "
|
||||||
|
FIELD 20->NUMCC
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 133 1
|
||||||
|
BEGIN
|
||||||
|
KEY "Conto Corrente"
|
||||||
|
PROMPT 55 4 ""
|
||||||
|
FIELD 20->NUMCC
|
||||||
|
MESSAGE EMPTY DISABLE,134
|
||||||
|
FLAGS "H"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 134 35
|
||||||
|
BEGIN
|
||||||
|
KEY "Conto Corrente"
|
||||||
|
PROMPT 55 4 "ACCOUNT NUM. "
|
||||||
|
FIELD 20->NUMCC
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 35 3
|
||||||
|
BEGIN
|
||||||
|
KEY "test sulla valuta"
|
||||||
|
PROMPT 2 8 ""
|
||||||
|
FIELD CODVAL
|
||||||
|
FLAGS "H"
|
||||||
|
MESSAGE EMPTY ENABLE,4@|DISABLE,3@
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 36 17 1
|
||||||
|
BEGIN
|
||||||
|
KEY "cod cliente"
|
||||||
|
PROMPT 2 4 "@RCod. For: "
|
||||||
|
FIELD 20->CODCF
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
SECTION RIGHE_EFFETTO 5 1 1 FILE 14 GROUP NPROGTR
|
||||||
|
STRINGA 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 92 1 "Ft. n."
|
||||||
|
FIELD 14->NFATT
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 107 1 "del "
|
||||||
|
FIELD 14->DATAFATT
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMERO 3 21 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 124 1 ""
|
||||||
|
FIELD 14->IMPORTOVAL
|
||||||
|
PICTURE "###.###.###.###,@@#"
|
||||||
|
GROUP 3
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMERO 4 18
|
||||||
|
BEGIN
|
||||||
|
PROMPT 124 1 ""
|
||||||
|
FIELD 14->IMPORTO
|
||||||
|
PICTURE "###.###.###,@@#"
|
||||||
|
GROUP 4
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
END
|
||||||
|
STRINGA 31 32
|
||||||
|
BEGIN
|
||||||
|
PROMPT 110 5 "--------------------------------"
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
STRINGA 32 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT 109 6 "@B Totale"
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
STRINGA 33 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 114 6 "@B"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMERO 26 18
|
||||||
|
BEGIN
|
||||||
|
KEY "importo"
|
||||||
|
PROMPT 124 6 ""
|
||||||
|
MESSAGE _IMPORTO
|
||||||
|
MESSAGE ADD,FL->3
|
||||||
|
PICTURE "###.###.###,@@#"
|
||||||
|
END
|
||||||
|
|
||||||
|
END
|
||||||
|
SECTION FOOTER ODD 5
|
||||||
|
END
|
||||||
|
|
||||||
|
SECTION FOOTER LAST 5
|
||||||
|
|
||||||
|
STRINGA 1
|
||||||
|
BEGIN
|
||||||
|
KEY "riga separazione dalle righe del body"
|
||||||
|
PROMPT 2 1 "---------------------------------------------------------------------------------------------------------------------------------------------"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMERO 2 25
|
||||||
|
BEGIN
|
||||||
|
KEY "scritta n. documenti"
|
||||||
|
PROMPT 5 2 "ORDINI DI BONIFICO N. "
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMERO 3 50
|
||||||
|
BEGIN
|
||||||
|
KEY "Totale"
|
||||||
|
PROMPT 5 3 "Dell' importo complessivo di Eur.@B"
|
||||||
|
PICTURE "###.###.###.###,@@#"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING 93 3
|
||||||
|
BEGIN
|
||||||
|
KEY "test sulla valuta"
|
||||||
|
PROMPT 34 3 ""
|
||||||
|
FIELD CODVAL
|
||||||
|
// MESSAGE EMPTY ENABLE,4@|DISABLE,3@
|
||||||
|
GROUP 4
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 4 40
|
||||||
|
BEGIN
|
||||||
|
KEY "NUMERO C/C"
|
||||||
|
PROMPT 60 3 "@Raddebiterete il C/C N. @B"
|
||||||
|
FIELD 205@->S0
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
STRINGA 5 80
|
||||||
|
BEGIN
|
||||||
|
KEY "firma "
|
||||||
|
PROMPT 5 4 "presso di Voi, intestato a: @B"
|
||||||
|
MESSAGE _DITTA,!RAGSOC
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGA 6 40
|
||||||
|
BEGIN
|
||||||
|
KEY "firma "
|
||||||
|
PROMPT 65 5 "------------------------------------"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA 7 34
|
||||||
|
BEGIN
|
||||||
|
KEY "data valuta"
|
||||||
|
PROMPT 100 3 "@Rcon valuta per noi: @B"
|
||||||
|
FIELD 31->DATADIST
|
||||||
|
END
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
@ -5,10 +5,11 @@
|
|||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
const char op = argc < 2 ? '0' : argv[1][1];
|
const char op = argc < 2 ? '0' : argv[1][1];
|
||||||
|
op + 1; op + 1; op + 1; op + 1;
|
||||||
switch (op)
|
switch (op)
|
||||||
{
|
{
|
||||||
case '1':
|
case '1':
|
||||||
ef0200(argc,argv);// GENERAZIONE EFFETTI DA E/C
|
ef0200(argc,argv);// GENERAZIONE EFFETTI DA E/C (OBSOLETO NON USARE PIU")
|
||||||
break;
|
break;
|
||||||
case '2':
|
case '2':
|
||||||
ef0300(argc,argv);// GESTIONE DISTINTE
|
ef0300(argc,argv);// GESTIONE DISTINTE
|
||||||
|
|||||||
@ -19,7 +19,7 @@ BEGIN
|
|||||||
FIELD NPROGTR
|
FIELD NPROGTR
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_EFFETTI KEY 1
|
USE LF_EFFETTI KEY 1
|
||||||
JOIN LF_CLIFO TO LF_EFFETTI KEY 1 INTO CODCF=CODCF TIPOCF=F_TIPOCF
|
JOIN LF_CLIFO TO LF_EFFETTI KEY 1 INTO CODCF=CODCF TIPOCF=TIPOCF
|
||||||
INPUT NPROGTR F_NPROGTR
|
INPUT NPROGTR F_NPROGTR
|
||||||
DISPLAY "Nr.progr." NPROGTR
|
DISPLAY "Nr.progr." NPROGTR
|
||||||
DISPLAY "Tipo" TIPOCF
|
DISPLAY "Tipo" TIPOCF
|
||||||
@ -27,6 +27,7 @@ BEGIN
|
|||||||
DISPLAY "Data\nscadenza@10" DATASCAD
|
DISPLAY "Data\nscadenza@10" DATASCAD
|
||||||
DISPLAY "Tipo\ndistinta@9" TIPODIST
|
DISPLAY "Tipo\ndistinta@9" TIPODIST
|
||||||
DISPLAY "Nr.\ndistinta@9" NDIST
|
DISPLAY "Nr.\ndistinta@9" NDIST
|
||||||
|
DISPLAY "Importo@20" IMPORTO
|
||||||
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||||
OUTPUT F_NPROGTR NPROGTR
|
OUTPUT F_NPROGTR NPROGTR
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
|
|||||||
@ -695,11 +695,12 @@ bool TVariazione_distinte::data_handler(TMask_field& f, KEY k)
|
|||||||
TDate data_sh;
|
TDate data_sh;
|
||||||
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET);
|
TSheet_field& sf = (TSheet_field&)m.field(F_SHEET);
|
||||||
TString_array& sa = sf.rows_array();
|
TString_array& sa = sf.rows_array();
|
||||||
|
const int field = m.get(F_TIPORD) == "F" ? 6 : 2;
|
||||||
// tolgo dallo sheet gli effetti che hanno la data non compresa nel range
|
// tolgo dallo sheet gli effetti che hanno la data non compresa nel range
|
||||||
for (int i = sa.items()-1; i >=0 ; i--)
|
for (int i = sa.items()-1; i >=0 ; i--)
|
||||||
{
|
{
|
||||||
TToken_string& row = sa.row(i);
|
TToken_string& row = sa.row(i);
|
||||||
data_sh = (TDate)row.get(2);
|
data_sh = (TDate)row.get(field);
|
||||||
if (data_sh > dataa || data_sh < datad)
|
if (data_sh > dataa || data_sh < datad)
|
||||||
sa.remove(i);
|
sa.remove(i);
|
||||||
}
|
}
|
||||||
@ -713,16 +714,15 @@ bool TVariazione_distinte::data_handler(TMask_field& f, KEY k)
|
|||||||
// nello sheet, nella maschera di scelta delle riba (ef0300c)
|
// nello sheet, nella maschera di scelta delle riba (ef0300c)
|
||||||
HIDDEN int confronta_data(const TObject** o1, const TObject** o2)
|
HIDDEN int confronta_data(const TObject** o1, const TObject** o2)
|
||||||
{
|
{
|
||||||
int val;
|
|
||||||
TToken_string* s1 = (TToken_string*) *o1;
|
TToken_string* s1 = (TToken_string*) *o1;
|
||||||
TToken_string* s2 = (TToken_string*) *o2;
|
TToken_string* s2 = (TToken_string*) *o2;
|
||||||
TDate data1 = s1->get(2);
|
TDate data1 = s1->get(2);
|
||||||
TDate data2 = s2->get(2);
|
TDate data2 = s2->get(2);
|
||||||
|
|
||||||
if (data1 == data2)
|
if (data1 == data2)
|
||||||
val = 0;
|
return 0;
|
||||||
else
|
else
|
||||||
val = (data1 > data2) ? +1 : -1;
|
return (data1 > data2) ? +1 : -1;
|
||||||
return val;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handler per gestire l'ordinamento per data degli effetti presenti
|
// Handler per gestire l'ordinamento per data degli effetti presenti
|
||||||
@ -743,30 +743,16 @@ void TVariazione_distinte::ord_data()
|
|||||||
// effetti presenti nello sheet, nella maschera di scelta delle riba
|
// effetti presenti nello sheet, nella maschera di scelta delle riba
|
||||||
HIDDEN int confronta_fatt(const TObject** o1, const TObject** o2)
|
HIDDEN int confronta_fatt(const TObject** o1, const TObject** o2)
|
||||||
{
|
{
|
||||||
int val;
|
|
||||||
TToken_string* s1 = (TToken_string*) *o1;
|
TToken_string* s1 = (TToken_string*) *o1;
|
||||||
TToken_string* s2 = (TToken_string*) *o2;
|
TToken_string* s2 = (TToken_string*) *o2;
|
||||||
long num1 = s1->get_long(4);
|
TDate data1 = s1->get(6);
|
||||||
long num2 = s2->get_long(4);
|
TDate data2 = s2->get(6);
|
||||||
TDate data1 = s1->get(5);
|
|
||||||
TDate data2 = s2->get(5);
|
|
||||||
// ordinamento sul numero fattura
|
|
||||||
if (num1 != num2)
|
|
||||||
{
|
|
||||||
val = (num1 > num2) ? +1 : -1;
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
// ordinamento sulla data fattura
|
// ordinamento sulla data fattura
|
||||||
if (data1 == data2)
|
if (data1 == data2)
|
||||||
{
|
return 0;
|
||||||
val = 0;
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
return (data1 > data2) ? +1 : -1;
|
||||||
val = (data1 > data2) ? +1 : -1;
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handler per gestire l'ordinamento per numero e data fattura degli
|
// Handler per gestire l'ordinamento per numero e data fattura degli
|
||||||
|
|||||||
@ -18,8 +18,11 @@ BEGIN
|
|||||||
KEY 4
|
KEY 4
|
||||||
FIELD LF_EFFETTI->TIPODIST
|
FIELD LF_EFFETTI->TIPODIST
|
||||||
ITEM "I|All'incasso"
|
ITEM "I|All'incasso"
|
||||||
|
MESSAGE ENABLE,F_TIPOCF
|
||||||
ITEM "B|Salvo buon fine"
|
ITEM "B|Salvo buon fine"
|
||||||
|
MESSAGE RESET,F_TIPOCF|DISABLE,F_TIPOCF
|
||||||
ITEM "S|Allo sconto"
|
ITEM "S|Allo sconto"
|
||||||
|
MESSAGE RESET,F_TIPOCF|DISABLE,F_TIPOCF
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_NUMBERRIGA 12
|
LIST F_NUMBERRIGA 12
|
||||||
@ -46,6 +49,7 @@ BEGIN
|
|||||||
DISPLAY "Data@10" DATADIST
|
DISPLAY "Data@10" DATADIST
|
||||||
DISPLAY "ABI@5" CODABIP
|
DISPLAY "ABI@5" CODABIP
|
||||||
DISPLAY "CAB@5" CODCABP
|
DISPLAY "CAB@5" CODCABP
|
||||||
|
DISPLAY "C/F@5" TIPOCF
|
||||||
OUTPUT F_NUMBER NDIST
|
OUTPUT F_NUMBER NDIST
|
||||||
OUTPUT F_TIPODIST TIPODIST
|
OUTPUT F_TIPODIST TIPODIST
|
||||||
OUTPUT F_NUMBERRIGA NRIGADIST
|
OUTPUT F_NUMBERRIGA NRIGADIST
|
||||||
@ -119,7 +123,7 @@ END
|
|||||||
|
|
||||||
LIST F_TIPOPAG 24
|
LIST F_TIPOPAG 24
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 "Tipo Effetti "
|
PROMPT 2 6 "Tipo Pagamento "
|
||||||
FIELD LF_EFFETTI->TIPOPAG
|
FIELD LF_EFFETTI->TIPOPAG
|
||||||
ITEM "2|Tratta"
|
ITEM "2|Tratta"
|
||||||
ITEM "3|Ricevuta Bancaria"
|
ITEM "3|Ricevuta Bancaria"
|
||||||
|
|||||||
@ -6,7 +6,6 @@
|
|||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
#include <printer.h>
|
#include <printer.h>
|
||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
#include <utility.h>
|
|
||||||
|
|
||||||
#include "ef0.h"
|
#include "ef0.h"
|
||||||
#include "ef0301.h"
|
#include "ef0301.h"
|
||||||
@ -266,13 +265,13 @@ void TEmissione::floppy()
|
|||||||
error_box("Impossibile continuare dischetto pieno");
|
error_box("Impossibile continuare dischetto pieno");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TProgind pi(n_eff,"Emissione Ri.Ba. su floppy...",FALSE,TRUE);
|
TProgind pi(n_eff,"Emissione Ri.Ba. su floppy...",FALSE,TRUE);
|
||||||
|
|
||||||
TAssoc_array& tracciati = _trasfile->tracciati();
|
TAssoc_array& tracciati = _trasfile->tracciati();
|
||||||
header_rb();//intestazione flusso effetti
|
header_rb();//intestazione flusso effetti
|
||||||
//scandisco tutti gli effetti della distinta selezionata
|
//scandisco tutti gli effetti della distinta selezionata
|
||||||
for (*_cur = 0; _cur->pos() < n_eff; ++(*_cur))
|
for (*_cur = 0; _cur->pos() < n_eff; ++(*_cur))
|
||||||
{
|
{
|
||||||
pi.addstatus(1L);
|
pi.addstatus(1L);
|
||||||
save_data_emis();
|
save_data_emis();
|
||||||
THash_object* lavoro = tracciati.get_hashobj();
|
THash_object* lavoro = tracciati.get_hashobj();
|
||||||
@ -280,10 +279,10 @@ void TEmissione::floppy()
|
|||||||
for (int i = 0; lavoro != NULL; i++)
|
for (int i = 0; lavoro != NULL; i++)
|
||||||
{
|
{
|
||||||
record(*lavoro);//emetto il record
|
record(*lavoro);//emetto il record
|
||||||
lavoro = tracciati.get_hashobj();
|
lavoro = tracciati.get_hashobj();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
footer_ef(); //chiusura flusso effetti
|
footer_ef(); //chiusura flusso effetti
|
||||||
}
|
}
|
||||||
_trasfile->close();
|
_trasfile->close();
|
||||||
delete _trasfile;
|
delete _trasfile;
|
||||||
@ -331,6 +330,7 @@ void TEmissione::header_rb()
|
|||||||
}
|
}
|
||||||
_trasfile->autoload(rec, *_cur);
|
_trasfile->autoload(rec, *_cur);
|
||||||
_trasfile->write(rec);
|
_trasfile->write(rec);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//emetto il record di chiusura del flusso di effetti
|
//emetto il record di chiusura del flusso di effetti
|
||||||
|
|||||||
133
ef/ef0600.cpp
133
ef/ef0600.cpp
@ -23,9 +23,8 @@ class TPrint_effetti_app : public TPrintapp
|
|||||||
pt _pr_type;
|
pt _pr_type;
|
||||||
TRelation* _rel;
|
TRelation* _rel;
|
||||||
TPrintrow _pr;
|
TPrintrow _pr;
|
||||||
TString _ban, _cli, _val, _data_stampa, _ban_prec;
|
TString _ban, _banp, _cli, _val, _data_stampa, _ban_prec;
|
||||||
TDate _scad_prec;
|
TDate _scad_prec;
|
||||||
//TRectype* _rec_prec;
|
|
||||||
int _cur_1, _cur_2, _cur_3, _cur_4, _interline, _colonne;
|
int _cur_1, _cur_2, _cur_3, _cur_4, _interline, _colonne;
|
||||||
long _dist_prec, _cliente_prec;
|
long _dist_prec, _cliente_prec;
|
||||||
char _tipo_prec, _tipocf_prec;
|
char _tipo_prec, _tipocf_prec;
|
||||||
@ -65,7 +64,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Costruttore classe
|
// Costruttore classe
|
||||||
TPrint_effetti_app::TPrint_effetti_app():TPrintapp(), _ban(11), _ban_prec(11), _cli(60), _val(3), _data_stampa(10)
|
TPrint_effetti_app::TPrint_effetti_app():TPrintapp(), _ban(11), _banp(11), _ban_prec(11), _cli(60), _val(3), _data_stampa(10)
|
||||||
{
|
{
|
||||||
_rel = NULL;
|
_rel = NULL;
|
||||||
//_rec_prec = NULL;
|
//_rec_prec = NULL;
|
||||||
@ -88,14 +87,6 @@ const TString& TPrint_effetti_app::look_clifo(char tipo, long codcf, TString& cl
|
|||||||
// restituisce un campo di una tabella
|
// restituisce un campo di una tabella
|
||||||
const char* TPrint_effetti_app::look_tab(const char* tabname, const TString& cod, const char* fld)
|
const char* TPrint_effetti_app::look_tab(const char* tabname, const TString& cod, const char* fld)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
TTable tab(tabname);
|
|
||||||
tab.curr().zero();
|
|
||||||
tab.curr().put("CODTAB",cod);
|
|
||||||
tab.read();
|
|
||||||
if (tab.bad()) tab.curr().zero();
|
|
||||||
return tab.curr().get(fld);
|
|
||||||
*/
|
|
||||||
return cache().get(tabname, cod, fld);
|
return cache().get(tabname, cod, fld);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,13 +133,13 @@ void TPrint_effetti_app::st_header_scad(const TDate& scad)
|
|||||||
_pr.reset();
|
_pr.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
// stampa intestazione per banca di presentazione
|
// stampa intestazione per banca di appoggio
|
||||||
// (dopo la "rottura" per banca)
|
// (dopo la "rottura" per banca)
|
||||||
void TPrint_effetti_app::st_header_ban(const TString& ban)
|
void TPrint_effetti_app::st_header_ban(const TString& ban)
|
||||||
{
|
{
|
||||||
TString80 s = look_tab("%BAN",ban);
|
TString80 s = look_tab("%BAN",ban);
|
||||||
if (s.empty())
|
if (s.empty())
|
||||||
s = "Nessuna Banca di Presentazione";
|
s = "Banca assente";
|
||||||
_pr.put(s,1);
|
_pr.put(s,1);
|
||||||
printer().print(_pr);
|
printer().print(_pr);
|
||||||
_pr.reset();
|
_pr.reset();
|
||||||
@ -240,11 +231,11 @@ void TPrint_effetti_app::header_scadenza()
|
|||||||
set_header(j, (const char *)(TString(_colonne).fill('_')));
|
set_header(j, (const char *)(TString(_colonne).fill('_')));
|
||||||
}
|
}
|
||||||
|
|
||||||
// setta l'header per la stampa per banca di presentazione
|
// setta l'header per la stampa per banca di appoggio
|
||||||
void TPrint_effetti_app::header_banca()
|
void TPrint_effetti_app::header_banca()
|
||||||
{
|
{
|
||||||
int j = 2;
|
int j = 2;
|
||||||
set_header(j, "@45g@bSTAMPA RI.BA. PER BANCHE DI PRESENTAZIONE"); j++;
|
set_header(j, "@45g@bSTAMPA RI.BA. PER BANCA D'APPOGGIO"); j++;
|
||||||
set_header(j++, (const char *)(TString(_colonne).fill('_')));
|
set_header(j++, (const char *)(TString(_colonne).fill('_')));
|
||||||
TString head = "@b Banca Scadenza Cliente N.Riba N.Dist Importo Imp. in valuta Val Rata Data fattura N.";
|
TString head = "@b Banca Scadenza Cliente N.Riba N.Dist Importo Imp. in valuta Val Rata Data fattura N.";
|
||||||
if (_stampa_bancapp)
|
if (_stampa_bancapp)
|
||||||
@ -297,7 +288,7 @@ print_action TPrint_effetti_app::postprocess_print(int file, int counter)
|
|||||||
_pr.reset();
|
_pr.reset();
|
||||||
s = (look_tab("%BAN",_ban_prec));
|
s = (look_tab("%BAN",_ban_prec));
|
||||||
if (s.empty())
|
if (s.empty())
|
||||||
s = "Nessuna Banca di Presentazione";
|
s = "Banca assente";
|
||||||
_pr.put(s,52);
|
_pr.put(s,52);
|
||||||
printer().print(_pr);
|
printer().print(_pr);
|
||||||
_tot_banca = 0.0;
|
_tot_banca = 0.0;
|
||||||
@ -309,10 +300,12 @@ print_action TPrint_effetti_app::postprocess_print(int file, int counter)
|
|||||||
printer().print(_pr);
|
printer().print(_pr);
|
||||||
_pr.reset();
|
_pr.reset();
|
||||||
_pr.put("TOTALE",46);
|
_pr.put("TOTALE",46);
|
||||||
|
_pr.put(_tot_distinta.string(PICTURE_IMPORTO),63);
|
||||||
|
printer().print(_pr);
|
||||||
|
_pr.reset();
|
||||||
s = "Distinta ";
|
s = "Distinta ";
|
||||||
s << _dist_prec << " " << _tipo_prec ;
|
s << _dist_prec << " " << _tipo_prec ;
|
||||||
_pr.put(s,57);
|
_pr.put(s,52);
|
||||||
_pr.put(_tot_distinta.string(PICTURE_IMPORTO),63);
|
|
||||||
printer().print(_pr);
|
printer().print(_pr);
|
||||||
_tot_distinta = 0.0;
|
_tot_distinta = 0.0;
|
||||||
_pr.reset();
|
_pr.reset();
|
||||||
@ -433,9 +426,10 @@ void TPrint_effetti_app::write_bancapp()
|
|||||||
void TPrint_effetti_app::set_scadenza()
|
void TPrint_effetti_app::set_scadenza()
|
||||||
{
|
{
|
||||||
set_row(1," ");
|
set_row(1," ");
|
||||||
set_row(2,"@1g@s@13g#t@26g#t@49g@pn@55g@pn@63g@pn@105g@pn@111g@s@125g@n",
|
set_row(2,"@1g@s@13g#t@26g@pn@33g#t@49g@pn@55g@pn@63g@pn@105g@pn@111g@s@125g@n",
|
||||||
FLD(LF_EFFETTI, EFF_DATASCAD),
|
FLD(LF_EFFETTI, EFF_DATASCAD),
|
||||||
&_ban,
|
&_banp,
|
||||||
|
FLD(LF_EFFETTI, EFF_CODCF,"@@@@@@"),
|
||||||
&_cli,
|
&_cli,
|
||||||
FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"),
|
FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"),
|
||||||
FLD(LF_EFFETTI, EFF_NDIST, "#######@"),
|
FLD(LF_EFFETTI, EFF_NDIST, "#######@"),
|
||||||
@ -456,12 +450,12 @@ void TPrint_effetti_app::set_scadenza()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// setta la pagina logica nel caso di stampa per banca di presentazione
|
// setta la pagina logica nel caso di stampa per banca di appoggio
|
||||||
void TPrint_effetti_app::set_banca()
|
void TPrint_effetti_app::set_banca()
|
||||||
{
|
{
|
||||||
set_row(1," ");
|
set_row(1," ");
|
||||||
set_row(2,"@1g#t@14g@s@26g#t@49g@pn@55g@pn@63g@pn@105g@pn@111g@s@125g@pn",
|
set_row(2,"@1g#t@14g@s@26g#t@49g@pn@55g@pn@63g@pn@105g@pn@111g@s@125g@pn",
|
||||||
&_ban,
|
&_banp,
|
||||||
FLD(LF_EFFETTI, EFF_DATASCAD),
|
FLD(LF_EFFETTI, EFF_DATASCAD),
|
||||||
&_cli,
|
&_cli,
|
||||||
FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"),
|
FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"),
|
||||||
@ -491,7 +485,7 @@ void TPrint_effetti_app::set_distinta()
|
|||||||
FLD(LF_EFFETTI, EFF_NDIST, "#######@"),
|
FLD(LF_EFFETTI, EFF_NDIST, "#######@"),
|
||||||
FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"),
|
FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"),
|
||||||
FLD(LF_EFFETTI, EFF_DATASCAD),
|
FLD(LF_EFFETTI, EFF_DATASCAD),
|
||||||
&_ban,
|
&_banp,
|
||||||
&_cli,
|
&_cli,
|
||||||
FLD(LF_EFFETTI, EFF_IMPORTO, PICTURE_IMPORTO),
|
FLD(LF_EFFETTI, EFF_IMPORTO, PICTURE_IMPORTO),
|
||||||
FLD(LF_REFFETTI, REFF_NRATA,"##@"),
|
FLD(LF_REFFETTI, REFF_NRATA,"##@"),
|
||||||
@ -516,7 +510,7 @@ void TPrint_effetti_app::set_cliente()
|
|||||||
set_row(2,"@5g@pn@25g@s@37g#t@49g@pn@55g@pn@63g@pn@105g@pn@111g@s@125g@pn",
|
set_row(2,"@5g@pn@25g@s@37g#t@49g@pn@55g@pn@63g@pn@105g@pn@111g@s@125g@pn",
|
||||||
FLD(LF_EFFETTI, EFF_CODCF,"@@@@@@"),
|
FLD(LF_EFFETTI, EFF_CODCF,"@@@@@@"),
|
||||||
FLD(LF_EFFETTI, EFF_DATASCAD),
|
FLD(LF_EFFETTI, EFF_DATASCAD),
|
||||||
&_ban,
|
&_banp,
|
||||||
FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"),
|
FLD(LF_EFFETTI, EFF_NPROGTR, "#####@"),
|
||||||
FLD(LF_EFFETTI, EFF_NDIST, "#######@"),
|
FLD(LF_EFFETTI, EFF_NDIST, "#######@"),
|
||||||
FLD(LF_EFFETTI, EFF_IMPORTO, PICTURE_IMPORTO),
|
FLD(LF_EFFETTI, EFF_IMPORTO, PICTURE_IMPORTO),
|
||||||
@ -543,7 +537,7 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
|
|||||||
// necessitano per effettuare la "rorrura della stampa"
|
// necessitano per effettuare la "rorrura della stampa"
|
||||||
TRectype& rec = current_cursor()->curr();
|
TRectype& rec = current_cursor()->curr();
|
||||||
const TDate scad = rec.get_date (EFF_DATASCAD);
|
const TDate scad = rec.get_date (EFF_DATASCAD);
|
||||||
TString ban = rec.get (EFF_CODABIP);
|
TString ban = rec.get (EFF_CODABI);
|
||||||
long dist = rec.get_long (EFF_NDIST);
|
long dist = rec.get_long (EFF_NDIST);
|
||||||
char tipodist = rec.get_char(EFF_TIPODIST);
|
char tipodist = rec.get_char(EFF_TIPODIST);
|
||||||
long cliente = rec.get_long (EFF_CODCF);
|
long cliente = rec.get_long (EFF_CODCF);
|
||||||
@ -552,14 +546,21 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
|
|||||||
// elaboro le seguenti stringhe per la stampa
|
// elaboro le seguenti stringhe per la stampa
|
||||||
if (ban=="00000")
|
if (ban=="00000")
|
||||||
ban = "";
|
ban = "";
|
||||||
_ban = get_field(LF_EFFETTI, EFF_CODABIP);
|
_ban = get_field(LF_EFFETTI, EFF_CODABI);
|
||||||
if (_ban=="00000")
|
if (_ban=="00000")
|
||||||
_ban = "";
|
_ban = "";
|
||||||
s = get_field(LF_EFFETTI, EFF_CODCABP);
|
s = get_field(LF_EFFETTI, EFF_CODCAB);
|
||||||
if (s=="00000")
|
if (s=="00000")
|
||||||
s = "";
|
s = "";
|
||||||
_ban << " " << s;
|
_ban << " " << s;
|
||||||
|
|
||||||
|
_banp = get_field(LF_EFFETTI, EFF_CODABIP);
|
||||||
|
if (_banp=="00000")
|
||||||
|
_banp = "";
|
||||||
|
s = get_field(LF_EFFETTI, EFF_CODCABP);
|
||||||
|
if (s=="00000")
|
||||||
|
s = "";
|
||||||
|
_banp << " " << s;
|
||||||
_cli = get_field(LF_CLIFO, CLI_RAGSOC);
|
_cli = get_field(LF_CLIFO, CLI_RAGSOC);
|
||||||
s = _cli.mid(30,50); s.trim();
|
s = _cli.mid(30,50); s.trim();
|
||||||
_cli = _cli.mid(0,30); _cli.trim();
|
_cli = _cli.mid(0,30); _cli.trim();
|
||||||
@ -680,7 +681,7 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
|
|||||||
_pr.reset();
|
_pr.reset();
|
||||||
s = (look_tab("%BAN",_ban_prec));
|
s = (look_tab("%BAN",_ban_prec));
|
||||||
if (s.empty())
|
if (s.empty())
|
||||||
s = "Nessuna Banca di Presentazione";
|
s = "Banca assente";
|
||||||
_pr.put(s,52);
|
_pr.put(s,52);
|
||||||
printer().print(_pr);
|
printer().print(_pr);
|
||||||
_tot_banca = 0.0;
|
_tot_banca = 0.0;
|
||||||
@ -700,6 +701,8 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
|
|||||||
// è cambiato il numero distinta, stampo il relativo totale
|
// è cambiato il numero distinta, stampo il relativo totale
|
||||||
// è cambiato il mese della la data di scadenza, stampo il relativo totale
|
// è cambiato il mese della la data di scadenza, stampo il relativo totale
|
||||||
// ed il nuovo header del mese
|
// ed il nuovo header del mese
|
||||||
|
if (scad != _scad_prec)
|
||||||
|
st_tot_scad();
|
||||||
if (scad.month() !=_scad_prec.month())
|
if (scad.month() !=_scad_prec.month())
|
||||||
{
|
{
|
||||||
st_tot_mese();
|
st_tot_mese();
|
||||||
@ -718,10 +721,12 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
|
|||||||
printer().print(_pr);
|
printer().print(_pr);
|
||||||
_pr.reset();
|
_pr.reset();
|
||||||
_pr.put("TOTALE",46);
|
_pr.put("TOTALE",46);
|
||||||
|
_pr.put(_tot_distinta.string(PICTURE_IMPORTO),63);
|
||||||
|
printer().print(_pr);
|
||||||
|
_pr.reset();
|
||||||
s = "Distinta ";
|
s = "Distinta ";
|
||||||
s << _tipo_prec << " "<< _dist_prec;
|
s << _tipo_prec << " "<< _dist_prec;
|
||||||
_pr.put(s,57);
|
_pr.put(s,52);
|
||||||
_pr.put(_tot_distinta.string(PICTURE_IMPORTO),63);
|
|
||||||
printer().print(_pr);
|
printer().print(_pr);
|
||||||
_tot_distinta = 0.0;
|
_tot_distinta = 0.0;
|
||||||
_pr.reset();
|
_pr.reset();
|
||||||
@ -766,8 +771,10 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
|
|||||||
_scad_prec = scad;
|
_scad_prec = scad;
|
||||||
_dist_prec = dist;
|
_dist_prec = dist;
|
||||||
_tipo_prec = tipodist;
|
_tipo_prec = tipodist;
|
||||||
|
|
||||||
_tot_distinta += importo;
|
_tot_distinta += importo;
|
||||||
_tot_tip_dist += importo;
|
_tot_tip_dist += importo;
|
||||||
|
_tot_data += importo;
|
||||||
_tot_mese += importo;
|
_tot_mese += importo;
|
||||||
_tot_stampa += importo ;
|
_tot_stampa += importo ;
|
||||||
break;
|
break;
|
||||||
@ -845,19 +852,26 @@ bool TPrint_effetti_app::set_print(int)
|
|||||||
from.zero();
|
from.zero();
|
||||||
TRectype to(from);
|
TRectype to(from);
|
||||||
TString cod_from, cod_to, filter;
|
TString cod_from, cod_to, filter;
|
||||||
|
char tipocf;
|
||||||
// a seconda del tipo di stampa scelta , seleziono il curore
|
// a seconda del tipo di stampa scelta , seleziono il curore
|
||||||
// da utilizzare ed imposto i campi per la regione e il filtro
|
// da utilizzare ed imposto i campi per la regione e il filtro
|
||||||
// del cursore
|
// del cursore
|
||||||
switch(_pr_type)
|
switch(_pr_type)
|
||||||
{
|
{
|
||||||
case st_scadenza:
|
case st_scadenza:
|
||||||
|
{
|
||||||
cod_from = mask.get(F_DA_DATA);
|
cod_from = mask.get(F_DA_DATA);
|
||||||
cod_to = mask.get(F_A_DATA);
|
cod_to = mask.get(F_A_DATA);
|
||||||
from.put(EFF_DATASCAD,cod_from);
|
from.put(EFF_DATASCAD,cod_from);
|
||||||
to.put(EFF_DATASCAD,cod_to);
|
to.put(EFF_DATASCAD,cod_to);
|
||||||
|
tipocf = mask.get(F_TIPOCF)[0];
|
||||||
|
filter = "";
|
||||||
|
filter << "(TIPOCF=='" << tipocf << "')";
|
||||||
select_cursor(_cur_1);
|
select_cursor(_cur_1);
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
case st_banca:
|
case st_banca:
|
||||||
|
{
|
||||||
cod_from = mask.get(F_DA_DATA2);
|
cod_from = mask.get(F_DA_DATA2);
|
||||||
cod_to = mask.get(F_A_DATA2);
|
cod_to = mask.get(F_A_DATA2);
|
||||||
from.put(EFF_DATASCAD,cod_from);
|
from.put(EFF_DATASCAD,cod_from);
|
||||||
@ -866,36 +880,41 @@ bool TPrint_effetti_app::set_print(int)
|
|||||||
cod_to = mask.get(F_ABAN);
|
cod_to = mask.get(F_ABAN);
|
||||||
if (cod_from.empty())
|
if (cod_from.empty())
|
||||||
cod_from = "00000"; // per selezionare tutte
|
cod_from = "00000"; // per selezionare tutte
|
||||||
if (cod_to.empty()) // le banche di presentazione
|
if (cod_to.empty()) // le banche
|
||||||
cod_to = "99999";
|
cod_to = "99999";
|
||||||
|
tipocf = mask.get(F_TIPOCF2)[0];
|
||||||
filter = "";
|
filter = "";
|
||||||
filter << "(CODABIP>=" << cod_from << ")&&(CODABIP<=" << cod_to << ")";
|
filter << "(CODABI>=" << cod_from << ")&&(CODABI<=" << cod_to << ")";
|
||||||
|
filter << "&&(TIPOCF=='" << tipocf << "')";
|
||||||
select_cursor(_cur_2);
|
select_cursor(_cur_2);
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
case st_distinta:
|
case st_distinta:
|
||||||
{
|
{
|
||||||
cod_from = mask.get(F_DA_DATA3);
|
cod_from = mask.get(F_DA_DATA3);
|
||||||
cod_to = mask.get(F_A_DATA3);
|
cod_to = mask.get(F_A_DATA3);
|
||||||
from.put(EFF_DATASCAD,cod_from);
|
from.put(EFF_DATASCAD,cod_from);
|
||||||
to.put(EFF_DATASCAD,cod_to);
|
to.put(EFF_DATASCAD,cod_to);
|
||||||
cod_from = mask.get(F_DADIST);
|
cod_from = mask.get(F_DADIST);
|
||||||
cod_to = mask.get(F_ADIST);
|
cod_to = mask.get(F_ADIST);
|
||||||
filter.cut(0);
|
filter.cut(0);
|
||||||
const TString16 tipodist(mask.get(F_DATIPODIST));
|
const TString16 tipodist(mask.get(F_DATIPODIST));
|
||||||
|
|
||||||
if (tipodist.not_empty())
|
if (tipodist.not_empty())
|
||||||
{
|
{
|
||||||
if (cod_from.not_empty())
|
if (cod_from.not_empty())
|
||||||
filter << "STR(NDIST>=" << cod_from << ")&&";
|
filter << "STR(NDIST>=" << cod_from << ")&&";
|
||||||
if (cod_to.not_empty()) // le distinte
|
if (cod_to.not_empty()) // le distinte
|
||||||
filter << "STR(NDIST<=" << cod_to << ")&&";
|
filter << "STR(NDIST<=" << cod_to << ")&&";
|
||||||
filter << "(TIPODIST==\"" << tipodist << "\")";
|
filter << "(TIPODIST==\"" << tipodist << "\")";
|
||||||
}
|
|
||||||
else
|
|
||||||
filter << "(NDIST<=\"\")";
|
|
||||||
select_cursor(_cur_3);
|
|
||||||
}
|
}
|
||||||
break;
|
else
|
||||||
|
filter << "(NDIST<=\"\")";
|
||||||
|
tipocf = mask.get(F_TIPOCF3)[0];
|
||||||
|
filter << "&&(TIPOCF=='" << tipocf << "')";
|
||||||
|
select_cursor(_cur_3);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case st_cliente:
|
case st_cliente:
|
||||||
{
|
{
|
||||||
cod_from = mask.get(F_DA_DATA4);
|
cod_from = mask.get(F_DA_DATA4);
|
||||||
@ -911,7 +930,7 @@ bool TPrint_effetti_app::set_print(int)
|
|||||||
from.put(EFF_CODCF,cod_from);
|
from.put(EFF_CODCF,cod_from);
|
||||||
to.put(EFF_CODCF,cod_to);
|
to.put(EFF_CODCF,cod_to);
|
||||||
filter = "";
|
filter = "";
|
||||||
filter << "(TIPOCF == \"" << mask.get(F_TIPOCF) << "\")&&";
|
filter << "(TIPOCF == \"" << mask.get(F_TIPOCF4) << "\")&&";
|
||||||
filter << "(CODCF>=" << cod_from << ")&&(CODCF<=" << cod_to << ")" ;
|
filter << "(CODCF>=" << cod_from << ")&&(CODCF<=" << cod_to << ")" ;
|
||||||
select_cursor(_cur_4);
|
select_cursor(_cur_4);
|
||||||
}
|
}
|
||||||
@ -939,7 +958,7 @@ bool TPrint_effetti_app::user_create()
|
|||||||
//STAMPA PER SCADENZA
|
//STAMPA PER SCADENZA
|
||||||
_cur_1 = add_cursor(new TCursor(_rel,"",3));
|
_cur_1 = add_cursor(new TCursor(_rel,"",3));
|
||||||
//STAMPA PER BANCA
|
//STAMPA PER BANCA
|
||||||
TString ordine = "CODABIP|DATASCAD|NPROGTR";
|
TString ordine = "CODABI|CODCAB|DATASCAD|NPROGTR";
|
||||||
_cur_2 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
|
_cur_2 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
|
||||||
//STAMPA PER DISTINTA
|
//STAMPA PER DISTINTA
|
||||||
ordine = "TIPODIST|NDIST|NRIGADIST|DATASCAD|NPROGTR";
|
ordine = "TIPODIST|NDIST|NRIGADIST|DATASCAD|NPROGTR";
|
||||||
|
|||||||
39
ef/ef0600.h
39
ef/ef0600.h
@ -10,23 +10,26 @@
|
|||||||
#define F_A_DATA 104
|
#define F_A_DATA 104
|
||||||
#define F_DABAN 105
|
#define F_DABAN 105
|
||||||
#define F_ABAN 106
|
#define F_ABAN 106
|
||||||
#define F_DA_DATA2 107
|
#define F_TIPOCF 107
|
||||||
#define F_A_DATA2 108
|
#define F_DA_DATA2 108
|
||||||
#define F_NUMBERRIGA 109
|
#define F_A_DATA2 109
|
||||||
#define F_DATIPODIST 110
|
#define F_TIPOCF2 110
|
||||||
#define F_DADIST 111
|
#define F_NUMBERRIGA 111
|
||||||
#define F_ADIST 113
|
#define F_DATIPODIST 112
|
||||||
#define F_DA_DATA3 114
|
#define F_TIPOCF3 113
|
||||||
#define F_A_DATA3 115
|
#define F_DADIST 114
|
||||||
#define F_TIPOCF 116
|
#define F_ADIST 115
|
||||||
#define F_DACLI 117
|
#define F_DA_DATA3 116
|
||||||
#define F_ACLI 118
|
#define F_A_DATA3 117
|
||||||
#define F_DA_DATA4 119
|
#define F_TIPOCF4 118
|
||||||
#define F_A_DATA4 120
|
#define F_DACLI 119
|
||||||
#define F_BANCA_APP 121
|
#define F_ACLI 120
|
||||||
#define F_DABAN_DESCR 122
|
#define F_DA_DATA4 121
|
||||||
#define F_ABAN_DESCR 123
|
#define F_A_DATA4 122
|
||||||
#define F_DACLI_DESCR 124
|
#define F_BANCA_APP 123
|
||||||
#define F_ACLI_DESCR 125
|
#define F_DABAN_DESCR 124
|
||||||
|
#define F_ABAN_DESCR 125
|
||||||
|
#define F_DACLI_DESCR 126
|
||||||
|
#define F_ACLI_DESCR 127
|
||||||
|
|
||||||
#endif//__EF0600_H
|
#endif//__EF0600_H
|
||||||
|
|||||||
@ -34,7 +34,7 @@ BEGIN
|
|||||||
END
|
END
|
||||||
|
|
||||||
//---------data----------------------------------------------------------------------------------------------------------//
|
//---------data----------------------------------------------------------------------------------------------------------//
|
||||||
GROUPBOX DLG_NULL 75 3
|
GROUPBOX DLG_NULL 75 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 7 "Stampa effetti per Data di scadenza"
|
PROMPT 1 7 "Stampa effetti per Data di scadenza"
|
||||||
GROUP 1
|
GROUP 1
|
||||||
@ -54,10 +54,18 @@ BEGIN
|
|||||||
WARNING "Data limite superiore non valida"
|
WARNING "Data limite superiore non valida"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
LIST F_TIPOCF 11
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 9 "Tipo effetti "
|
||||||
|
ITEM "C|Attivi"
|
||||||
|
ITEM "F|Passivi"
|
||||||
|
GROUP 1
|
||||||
|
END
|
||||||
|
|
||||||
//---------banca----------------------------------------------------------------------------------------------------------//
|
//---------banca----------------------------------------------------------------------------------------------------------//
|
||||||
GROUPBOX DLG_NULL 75 6
|
GROUPBOX DLG_NULL 75 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 7 "Stampa effetti per Banca di presentazione"
|
PROMPT 1 7 "Stampa effetti per Banca di appoggio"
|
||||||
GROUP 2
|
GROUP 2
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -66,14 +74,13 @@ BEGIN
|
|||||||
PROMPT 2 8 "Dalla Banca "
|
PROMPT 2 8 "Dalla Banca "
|
||||||
FLAGS "RZ"
|
FLAGS "RZ"
|
||||||
GROUP 2
|
GROUP 2
|
||||||
USE BNP KEY 1 SELECT CODTAB ?= "??????????"
|
USE %BAN KEY 1 SELECT CODTAB ?= "??????????"
|
||||||
JOIN %BAN ALIAS 100 INTO CODTAB==CODTAB
|
|
||||||
INPUT CODTAB F_DABAN
|
INPUT CODTAB F_DABAN
|
||||||
DISPLAY "ABI@5" CODTAB[1,5]
|
DISPLAY "ABI@5" CODTAB[1,5]
|
||||||
DISPLAY "CAB@5" CODTAB[6,10]
|
DISPLAY "CAB@5" CODTAB[6,10]
|
||||||
DISPLAY "Denominazione@50" 100@->S0
|
DISPLAY "Denominazione@50" S0
|
||||||
OUTPUT F_DABAN CODTAB[1,5]
|
OUTPUT F_DABAN CODTAB[1,5]
|
||||||
OUTPUT F_DABAN_DESCR %BAN->S0
|
OUTPUT F_DABAN_DESCR S0
|
||||||
CHECKTYPE SEARCH
|
CHECKTYPE SEARCH
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -81,8 +88,7 @@ STRING F_DABAN_DESCR 50
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 23 8 ""
|
PROMPT 23 8 ""
|
||||||
GROUP 2
|
GROUP 2
|
||||||
USE %BAN KEY 2 SELECT (CODTAB?="??????????")&&(200@->CODTAB!="")
|
USE %BAN KEY 2 SELECT CODTAB?="??????????"
|
||||||
JOIN BNP ALIAS 200 INTO CODTAB==CODTAB
|
|
||||||
INPUT S0 F_DABAN_DESCR
|
INPUT S0 F_DABAN_DESCR
|
||||||
DISPLAY "Denominazione@50" S0
|
DISPLAY "Denominazione@50" S0
|
||||||
DISPLAY "ABI@5" CODTAB[1,5]
|
DISPLAY "ABI@5" CODTAB[1,5]
|
||||||
@ -96,14 +102,13 @@ BEGIN
|
|||||||
PROMPT 2 9 "Alla Banca "
|
PROMPT 2 9 "Alla Banca "
|
||||||
FLAGS "RZ"
|
FLAGS "RZ"
|
||||||
GROUP 2
|
GROUP 2
|
||||||
USE BNP KEY 1 SELECT CODTAB ?= "??????????"
|
USE %BAN KEY 1 SELECT CODTAB ?= "??????????"
|
||||||
JOIN %BAN ALIAS 100 INTO CODTAB==CODTAB
|
|
||||||
INPUT CODTAB F_ABAN
|
INPUT CODTAB F_ABAN
|
||||||
DISPLAY "ABI@5" CODTAB[1,5]
|
DISPLAY "ABI@5" CODTAB[1,5]
|
||||||
DISPLAY "CAB@5" CODTAB[6,10]
|
DISPLAY "CAB@5" CODTAB[6,10]
|
||||||
DISPLAY "Denominazione@50" 100@->S0
|
DISPLAY "Denominazione@50" S0
|
||||||
OUTPUT F_ABAN CODTAB[1,5]
|
OUTPUT F_ABAN CODTAB[1,5]
|
||||||
OUTPUT F_ABAN_DESCR %BAN->S0
|
OUTPUT F_ABAN_DESCR S0
|
||||||
CHECKTYPE SEARCH
|
CHECKTYPE SEARCH
|
||||||
END
|
END
|
||||||
|
|
||||||
@ -111,8 +116,7 @@ STRING F_ABAN_DESCR 50
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 23 9 ""
|
PROMPT 23 9 ""
|
||||||
GROUP 2
|
GROUP 2
|
||||||
USE %BAN KEY 2 SELECT (CODTAB?="??????????")&&(200@->CODTAB!="")
|
USE %BAN KEY 2 SELECT CODTAB?="??????????"
|
||||||
JOIN BNP ALIAS 200 INTO CODTAB==CODTAB
|
|
||||||
INPUT S0 F_ABAN_DESCR
|
INPUT S0 F_ABAN_DESCR
|
||||||
DISPLAY "Denominazione@50" S0
|
DISPLAY "Denominazione@50" S0
|
||||||
DISPLAY "ABI@5" CODTAB[1,5]
|
DISPLAY "ABI@5" CODTAB[1,5]
|
||||||
@ -132,11 +136,19 @@ BEGIN
|
|||||||
PROMPT 30 10 "Alla Data "
|
PROMPT 30 10 "Alla Data "
|
||||||
GROUP 2
|
GROUP 2
|
||||||
VALIDATE DATE_CMP_FUNC >= F_DA_DATA2
|
VALIDATE DATE_CMP_FUNC >= F_DA_DATA2
|
||||||
WARNING "Data limite superiore non valida"
|
WARNING "Data limite superiore non valida"
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_TIPOCF2 11
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 11 "Tipo effetti "
|
||||||
|
ITEM "C|Attivi"
|
||||||
|
ITEM "F|Passivi"
|
||||||
|
GROUP 2
|
||||||
END
|
END
|
||||||
|
|
||||||
//---------distinta-------------------------------------------------------------------------------------------------------//
|
//---------distinta-------------------------------------------------------------------------------------------------------//
|
||||||
GROUPBOX DLG_NULL 75 5
|
GROUPBOX DLG_NULL 75 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 7 "Stampa effetti per Distinta"
|
PROMPT 1 7 "Stampa effetti per Distinta"
|
||||||
GROUP 3
|
GROUP 3
|
||||||
@ -156,10 +168,14 @@ BEGIN
|
|||||||
PROMPT 4 8 " "
|
PROMPT 4 8 " "
|
||||||
KEY 4
|
KEY 4
|
||||||
GROUP 3
|
GROUP 3
|
||||||
ITEM " |Senza distinta" MESSAGE CLEAR,F_DADIST|CLEAR,F_ADIST
|
ITEM " |Senza distinta"
|
||||||
ITEM "I|All'incasso" MESSAGE ENABLE,F_DADIST|ENABLE,F_ADIST
|
MESSAGE CLEAR,F_DADIST|CLEAR,F_ADIST|ENABLE,F_TIPOCF3
|
||||||
ITEM "B|Salvo buon fine" MESSAGE ENABLE,F_DADIST|ENABLE,F_ADIST
|
ITEM "I|All'incasso"
|
||||||
ITEM "S|Allo sconto" MESSAGE ENABLE,F_DADIST|ENABLE,F_ADIST
|
MESSAGE ENABLE,F_DADIST|ENABLE,F_ADIST|ENABLE,F_TIPOCF3
|
||||||
|
ITEM "B|Salvo buon fine"
|
||||||
|
MESSAGE ENABLE,F_DADIST|ENABLE,F_ADIST|RESET,F_TIPOCF3|DISABLE,F_TIPOCF3
|
||||||
|
ITEM "S|Allo sconto"
|
||||||
|
MESSAGE ENABLE,F_DADIST|ENABLE,F_ADIST|RESET,F_TIPOCF3|DISABLE,F_TIPOCF3
|
||||||
END
|
END
|
||||||
|
|
||||||
TEXT DLG_NULL
|
TEXT DLG_NULL
|
||||||
@ -180,6 +196,7 @@ BEGIN
|
|||||||
INPUT NRIGADIST F_NUMBERRIGA
|
INPUT NRIGADIST F_NUMBERRIGA
|
||||||
DISPLAY "Nr. distinta" NDIST
|
DISPLAY "Nr. distinta" NDIST
|
||||||
DISPLAY "Tipo distinta" TIPODIST
|
DISPLAY "Tipo distinta" TIPODIST
|
||||||
|
DISPLAY "C/F" TIPOCF
|
||||||
OUTPUT F_DADIST NDIST
|
OUTPUT F_DADIST NDIST
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
@ -202,6 +219,7 @@ BEGIN
|
|||||||
INPUT NRIGADIST F_NUMBERRIGA
|
INPUT NRIGADIST F_NUMBERRIGA
|
||||||
DISPLAY "Nr. distinta" NDIST
|
DISPLAY "Nr. distinta" NDIST
|
||||||
DISPLAY "Tipo distinta" TIPODIST
|
DISPLAY "Tipo distinta" TIPODIST
|
||||||
|
DISPLAY "C/F" TIPOCF
|
||||||
OUTPUT F_ADIST NDIST
|
OUTPUT F_ADIST NDIST
|
||||||
OUTPUT F_NUMBERRIGA NRIGADIST
|
OUTPUT F_NUMBERRIGA NRIGADIST
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
@ -235,6 +253,14 @@ BEGIN
|
|||||||
WARNING "Data limite superiore non valida"
|
WARNING "Data limite superiore non valida"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
LIST F_TIPOCF3 11
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 11 "Tipo effetti "
|
||||||
|
ITEM "C|Attivi"
|
||||||
|
ITEM "F|Passivi"
|
||||||
|
GROUP 3
|
||||||
|
END
|
||||||
|
|
||||||
//---------clifo----------------------------------------------------------------------------------------------------------//
|
//---------clifo----------------------------------------------------------------------------------------------------------//
|
||||||
GROUPBOX DLG_NULL 75 6
|
GROUPBOX DLG_NULL 75 6
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -242,7 +268,7 @@ BEGIN
|
|||||||
GROUP 4
|
GROUP 4
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_TIPOCF 11
|
LIST F_TIPOCF4 11
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 "Tipo "
|
PROMPT 2 8 "Tipo "
|
||||||
ITEM "C|Clienti"
|
ITEM "C|Clienti"
|
||||||
@ -255,7 +281,7 @@ BEGIN
|
|||||||
PROMPT 2 9 "Da Codice "
|
PROMPT 2 9 "Da Codice "
|
||||||
GROUP 4
|
GROUP 4
|
||||||
USE LF_CLIFO
|
USE LF_CLIFO
|
||||||
INPUT TIPOCF F_TIPOCF SELECT
|
INPUT TIPOCF F_TIPOCF4 SELECT
|
||||||
INPUT CODCF F_DACLI
|
INPUT CODCF F_DACLI
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
DISPLAY "Ragione sociale@60" RAGSOC
|
DISPLAY "Ragione sociale@60" RAGSOC
|
||||||
@ -269,7 +295,7 @@ BEGIN
|
|||||||
PROMPT 21 9 " "
|
PROMPT 21 9 " "
|
||||||
GROUP 4
|
GROUP 4
|
||||||
USE LF_CLIFO KEY 2
|
USE LF_CLIFO KEY 2
|
||||||
INPUT TIPOCF F_TIPOCF SELECT
|
INPUT TIPOCF F_TIPOCF4 SELECT
|
||||||
INPUT RAGSOC F_DACLI_DESCR
|
INPUT RAGSOC F_DACLI_DESCR
|
||||||
DISPLAY "Ragione sociale@60" RAGSOC
|
DISPLAY "Ragione sociale@60" RAGSOC
|
||||||
DISPLAY "Codice" CODCF
|
DISPLAY "Codice" CODCF
|
||||||
@ -283,7 +309,7 @@ BEGIN
|
|||||||
PROMPT 2 10 "A Codice "
|
PROMPT 2 10 "A Codice "
|
||||||
GROUP 4
|
GROUP 4
|
||||||
COPY USE F_DACLI
|
COPY USE F_DACLI
|
||||||
INPUT TIPOCF F_TIPOCF SELECT
|
INPUT TIPOCF F_TIPOCF4 SELECT
|
||||||
INPUT CODCF F_ACLI
|
INPUT CODCF F_ACLI
|
||||||
COPY DISLAY F_DACLI
|
COPY DISLAY F_DACLI
|
||||||
OUTPUT F_ACLI CODCF
|
OUTPUT F_ACLI CODCF
|
||||||
@ -296,7 +322,7 @@ BEGIN
|
|||||||
PROMPT 21 10 " "
|
PROMPT 21 10 " "
|
||||||
GROUP 4
|
GROUP 4
|
||||||
COPY USE F_DACLI_DESCR
|
COPY USE F_DACLI_DESCR
|
||||||
INPUT TIPOCF F_TIPOCF SELECT
|
INPUT TIPOCF F_TIPOCF4 SELECT
|
||||||
INPUT RAGSOC F_ACLI_DESCR
|
INPUT RAGSOC F_ACLI_DESCR
|
||||||
COPY DISPLAY F_DACLI_DESCR
|
COPY DISPLAY F_DACLI_DESCR
|
||||||
OUTPUT F_ACLI_DESCR RAGSOC
|
OUTPUT F_ACLI_DESCR RAGSOC
|
||||||
|
|||||||
@ -33,7 +33,6 @@
|
|||||||
#include <modaut.h>
|
#include <modaut.h>
|
||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
#include <tabutil.h>
|
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
|
|
||||||
#include "../cg/cg2101.h"
|
#include "../cg/cg2101.h"
|
||||||
@ -95,8 +94,6 @@ class TContabilizzazione_effetti_app : public TSkeleton_application
|
|||||||
*_clifo, // file dei clienti
|
*_clifo, // file dei clienti
|
||||||
*_doc, // file dei documenti
|
*_doc, // file dei documenti
|
||||||
*_pcon; // file piano dei conti
|
*_pcon; // file piano dei conti
|
||||||
TTable *_cpg, // tabella condizioni di pagamento
|
|
||||||
*_bnp; // tabella banca presentazione effetti
|
|
||||||
TBill _banca, // conto di contropartita della banca
|
TBill _banca, // conto di contropartita della banca
|
||||||
_cliente, // conto di contropartita del cliente
|
_cliente, // conto di contropartita del cliente
|
||||||
_trandiffcam; // conto di transizione per differenze cambi
|
_trandiffcam; // conto di transizione per differenze cambi
|
||||||
@ -242,6 +239,7 @@ void TContabilizzazione_effetti_app::build_dist_sheet()
|
|||||||
char tipo_prec = rec.get_char(EFF_TIPODIST);
|
char tipo_prec = rec.get_char(EFF_TIPODIST);
|
||||||
|
|
||||||
TString16 codabi, codcab, codval;
|
TString16 codabi, codcab, codval;
|
||||||
|
char tipocf;
|
||||||
bool enabled = TRUE;
|
bool enabled = TRUE;
|
||||||
int num_eff = 0;
|
int num_eff = 0;
|
||||||
|
|
||||||
@ -259,6 +257,8 @@ void TContabilizzazione_effetti_app::build_dist_sheet()
|
|||||||
t->add(codabi);
|
t->add(codabi);
|
||||||
t->add(codcab);
|
t->add(codcab);
|
||||||
t->add(codval);
|
t->add(codval);
|
||||||
|
t->add(tipocf);
|
||||||
|
t->add(rec.get(EFF_DATADIST));
|
||||||
const long pos = _dist_sheet->add(t); //aggiunge una riga allo sheet delle distinte
|
const long pos = _dist_sheet->add(t); //aggiunge una riga allo sheet delle distinte
|
||||||
_dist_sheet->enable_row(pos, enabled);
|
_dist_sheet->enable_row(pos, enabled);
|
||||||
ndist_prec = ndist;
|
ndist_prec = ndist;
|
||||||
@ -271,6 +271,7 @@ void TContabilizzazione_effetti_app::build_dist_sheet()
|
|||||||
codabi = rec.get(EFF_CODABIP); // Memorizza dati della prima riga
|
codabi = rec.get(EFF_CODABIP); // Memorizza dati della prima riga
|
||||||
codcab = rec.get(EFF_CODCABP);
|
codcab = rec.get(EFF_CODCABP);
|
||||||
codval = rec.get(EFF_CODVAL);
|
codval = rec.get(EFF_CODVAL);
|
||||||
|
tipocf = rec.get_char(EFF_TIPOCF);
|
||||||
}
|
}
|
||||||
num_eff++; // numero di effetti che compongono la distinta
|
num_eff++; // numero di effetti che compongono la distinta
|
||||||
enabled &= !rec.get_bool(EFF_EFFCONT);
|
enabled &= !rec.get_bool(EFF_EFFCONT);
|
||||||
@ -284,6 +285,8 @@ void TContabilizzazione_effetti_app::build_dist_sheet()
|
|||||||
t->add(codabi);
|
t->add(codabi);
|
||||||
t->add(codcab);
|
t->add(codcab);
|
||||||
t->add(rec.get(EFF_CODVAL));
|
t->add(rec.get(EFF_CODVAL));
|
||||||
|
t->add(rec.get(EFF_TIPOCF));
|
||||||
|
t->add(rec.get(EFF_DATADIST));
|
||||||
|
|
||||||
const long pos = _dist_sheet->add(t); //aggiunge una riga allo sheet delle distinte
|
const long pos = _dist_sheet->add(t); //aggiunge una riga allo sheet delle distinte
|
||||||
_dist_sheet->enable_row(pos, enabled);
|
_dist_sheet->enable_row(pos, enabled);
|
||||||
@ -348,14 +351,12 @@ bool TContabilizzazione_effetti_app::create()
|
|||||||
_error = no_error;
|
_error = no_error;
|
||||||
_can_write = TRUE;
|
_can_write = TRUE;
|
||||||
_msk = new TContabilizzazione_mask();
|
_msk = new TContabilizzazione_mask();
|
||||||
_cpg = new TTable("%CPG");
|
|
||||||
_bnp = new TTable("BNP");
|
|
||||||
_clifo = new TLocalisamfile(LF_CLIFO);
|
_clifo = new TLocalisamfile(LF_CLIFO);
|
||||||
_doc = new TLocalisamfile(LF_DOC);
|
_doc = new TLocalisamfile(LF_DOC);
|
||||||
_distinta = new TDistinta;
|
_distinta = new TDistinta;
|
||||||
_movimento = new TMovimentoPN;
|
_movimento = new TMovimentoPN;
|
||||||
_dist_sheet = new TArray_sheet(-1, -1, -4, -4, "Selezione distinte",
|
_dist_sheet = new TArray_sheet(-1, -1, -4, -4, "Selezione distinte",
|
||||||
"@1|Tipo|Numero distinta@R|Numero effetti@R|ABI@5|CAB@5|Valuta");
|
"@1|Tipo|Numero distinta@R|Numero effetti@R|ABI@5|CAB@5|Valuta|C/F|Data Dist.");
|
||||||
_part_array = new TPartite_array;
|
_part_array = new TPartite_array;
|
||||||
return TSkeleton_application::create();
|
return TSkeleton_application::create();
|
||||||
}
|
}
|
||||||
@ -363,8 +364,6 @@ bool TContabilizzazione_effetti_app::create()
|
|||||||
bool TContabilizzazione_effetti_app::destroy()
|
bool TContabilizzazione_effetti_app::destroy()
|
||||||
{
|
{
|
||||||
if (_msk) delete _msk;
|
if (_msk) delete _msk;
|
||||||
if (_cpg) delete _cpg;
|
|
||||||
if (_bnp) delete _bnp;
|
|
||||||
if (_clifo)delete _clifo;
|
if (_clifo)delete _clifo;
|
||||||
if (_doc)delete _doc;
|
if (_doc)delete _doc;
|
||||||
if (_caus) delete _caus;
|
if (_caus) delete _caus;
|
||||||
@ -413,6 +412,13 @@ void TContabilizzazione_effetti_app::main_loop()
|
|||||||
_dett_rate_att = _msk->get_bool(F_DETT_RATE_ATT);
|
_dett_rate_att = _msk->get_bool(F_DETT_RATE_ATT);
|
||||||
_dett_rate_pas = _msk->get_bool(F_DETT_RATE_PAS);
|
_dett_rate_pas = _msk->get_bool(F_DETT_RATE_PAS);
|
||||||
|
|
||||||
|
// Salva parametri per la prossima volta
|
||||||
|
{
|
||||||
|
TConfig conf(CONFIG_DITTA, "ef");
|
||||||
|
conf.set("DETRATATT", _dett_rate_att ? "X" : "");
|
||||||
|
conf.set("DETRATPAS", _dett_rate_pas ? "X" : "");
|
||||||
|
}
|
||||||
|
|
||||||
contabilize();
|
contabilize();
|
||||||
_msk->reset(F_DISTINTE);
|
_msk->reset(F_DISTINTE);
|
||||||
build_dist_sheet();
|
build_dist_sheet();
|
||||||
@ -701,30 +707,40 @@ error_type TContabilizzazione_effetti_app::search_bank_counter_bill(int tipopag)
|
|||||||
_error = no_error;
|
_error = no_error;
|
||||||
if (tipopag == 0) // cerca sulla tabella e poi sulla 2a riga di causale
|
if (tipopag == 0) // cerca sulla tabella e poi sulla 2a riga di causale
|
||||||
{
|
{
|
||||||
|
_banca.set(0,0,0); // resetta il conto...
|
||||||
|
|
||||||
TString16 codtab(_distinta->abip());
|
TString16 codtab(_distinta->abip());
|
||||||
codtab << _distinta->cabp();
|
codtab << _distinta->cabp();
|
||||||
const char tipodist = _distinta->tipodist();
|
const TRectype& bnp = cache().get("BNP", codtab);
|
||||||
_banca.set(0,0,0); // resetta il conto...
|
if (!bnp.empty())
|
||||||
_bnp->put("CODTAB",codtab);
|
|
||||||
if (_bnp->read() == NOERR)
|
|
||||||
{
|
{
|
||||||
TString16 fg("I0"),fc("I1"),fs("I2"); // nel caso tipodist == DIST_INCASSO
|
const char* fg;
|
||||||
if (tipodist == DIST_SBF)
|
const char* fc;
|
||||||
|
const char* fs;
|
||||||
|
const char tipodist = _distinta->tipodist();
|
||||||
|
switch (tipodist)
|
||||||
{
|
{
|
||||||
fg = "I3";
|
case DIST_SBF:
|
||||||
fc = "I4";
|
fg = "I3"; fc = "I4"; fs = "I5";
|
||||||
fs = "I5";
|
break;
|
||||||
}
|
case DIST_SCONTO:
|
||||||
else
|
fg = "I6"; fc = "I7"; fs = "I8";
|
||||||
if (tipodist == DIST_SCONTO)
|
break;
|
||||||
|
case DIST_INCASSO: // Default
|
||||||
|
default:
|
||||||
|
if (_distinta->tipocf() == 'F')
|
||||||
{
|
{
|
||||||
fg = "I6";
|
fg = "I9"; fc = "I10"; fs = "I11";
|
||||||
fc = "I7";
|
|
||||||
fs = "I8";
|
|
||||||
}
|
}
|
||||||
const int g = _bnp->get_int(fg);
|
else
|
||||||
const int c = _bnp->get_int(fc);
|
{
|
||||||
const long s = _bnp->get_long(fs);
|
fg = "I0"; fc = "I1"; fs = "I2";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
const int g = bnp.get_int(fg);
|
||||||
|
const int c = bnp.get_int(fc);
|
||||||
|
const long s = bnp.get_long(fs);
|
||||||
_banca.set(g,c,s);
|
_banca.set(g,c,s);
|
||||||
}
|
}
|
||||||
// se non ha trovato la banca oppure il conto, verifica che vi sia
|
// se non ha trovato la banca oppure il conto, verifica che vi sia
|
||||||
@ -1460,13 +1476,7 @@ void TContabilizzazione_effetti_app::contabilize()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_total_bills > 0)
|
if (_total_bills > 0)
|
||||||
{
|
|
||||||
TConfig conf(CONFIG_DITTA, "ef");
|
|
||||||
conf.set("DETRATATT", _dett_rate_att ? "X" : "");
|
|
||||||
conf.set("DETRATPAS", _dett_rate_pas ? "X" : "");
|
|
||||||
|
|
||||||
message_box("Totale effetti contabilizzati: %ld",_total_bills);
|
message_box("Totale effetti contabilizzati: %ld",_total_bills);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ef0800 (int argc, char* argv[])
|
int ef0800 (int argc, char* argv[])
|
||||||
|
|||||||
@ -328,6 +328,7 @@ bool http_get(const char* server,
|
|||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
ok = client.HttpGetFile(connection, remote_file, local_file, authorization) != 0;
|
ok = client.HttpGetFile(connection, remote_file, local_file, authorization) != 0;
|
||||||
|
|
||||||
client.RemoveConnection(connection);
|
client.RemoveConnection(connection);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -356,28 +357,20 @@ bool http_dir(const char* server, const char* remote_dir, TString_array& list)
|
|||||||
bool http_post(const char* server, const char* remote_file,
|
bool http_post(const char* server, const char* remote_file,
|
||||||
const char* local_file, const char* authorization,
|
const char* local_file, const char* authorization,
|
||||||
byte*& answer, size_t& length)
|
byte*& answer, size_t& length)
|
||||||
|
|
||||||
{
|
{
|
||||||
TSocketClient client;
|
TSocketClient client;
|
||||||
if (!client.IsOk())
|
if (!client.IsOk())
|
||||||
return error_box("Impossibile inizializzare il client HTTP");
|
return error_box("Impossibile inizializzare il client HTTP");
|
||||||
|
|
||||||
TString srv = server;
|
unsigned long connection = client.QueryConnection("80", server);
|
||||||
TString port = "80";
|
|
||||||
|
|
||||||
const int colon = srv.rfind(':');
|
|
||||||
if (colon > 0 && isdigit(srv[colon+1]))
|
|
||||||
{
|
|
||||||
port = srv.mid(colon+1);
|
|
||||||
srv.cut(colon);
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned long connection = client.QueryConnection(port, srv);
|
|
||||||
bool ok = connection != 0;
|
bool ok = connection != 0;
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
ok = client.HttpPostFile(connection, remote_file, local_file, authorization) != 0;
|
ok = client.HttpPostFile(connection, remote_file, local_file, authorization) != 0;
|
||||||
client.RemoveConnection(connection);
|
client.RemoveConnection(connection);
|
||||||
answer = client.GetBuffer(length);
|
answer = client.GetBuffer(length);
|
||||||
|
|
||||||
if (!ok)
|
if (!ok)
|
||||||
{
|
{
|
||||||
error_box("Impossibile spedire il file %s al server %s:\n%s",
|
error_box("Impossibile spedire il file %s al server %s:\n%s",
|
||||||
@ -389,4 +382,3 @@ bool http_post(const char* server, const char* remote_file,
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -31,4 +31,5 @@ bool http_post(const char* server, const char* remote_file,
|
|||||||
const char* local_file, const char* authorization,
|
const char* local_file, const char* authorization,
|
||||||
byte*& answer, size_t& length);
|
byte*& answer, size_t& length);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -611,6 +611,7 @@ TConnection* TSocketClient::OnQueryConnection(const char* service, const char* s
|
|||||||
pConnection = NULL;
|
pConnection = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return pConnection;
|
return pConnection;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -677,14 +678,20 @@ void TSocketClient::ReleaseBuffer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool TSocketClient::HttpGetFile(CONNID id, const char* remote, const char* local, const char* authorization)
|
bool TSocketClient::HttpGetFile(CONNID id, const char* remote, const char* local, const char* authorization)
|
||||||
|
|
||||||
{
|
{
|
||||||
bool ok = FALSE;
|
bool ok = FALSE;
|
||||||
|
|
||||||
TString buf(4096);
|
TString buf(4096);
|
||||||
buf << "GET " << remote << " HTTP/1.0\r\n\r\n";
|
buf << "GET " << remote << " HTTP/1.0\r\n"
|
||||||
|
<< "User-Agent: Campo\r\n";
|
||||||
|
if (authorization && *authorization)
|
||||||
|
buf << "Authorization: " << authorization << "\r\n";
|
||||||
|
buf << "\r\n";
|
||||||
|
|
||||||
if (WriteLine(id, buf))
|
if (WriteLine(id, buf))
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
const clock_t start = clock();
|
const clock_t start = clock();
|
||||||
|
|
||||||
@ -694,7 +701,7 @@ bool TSocketClient::HttpGetFile(CONNID id, const char* remote, const char* local
|
|||||||
ReadLine(id, buf);
|
ReadLine(id, buf);
|
||||||
if (buf.blank())
|
if (buf.blank())
|
||||||
break;
|
break;
|
||||||
if (r == 0 && (buf.find("400") > 0 || buf.find("404")))
|
if (r == 0 && buf.find("200 OK") < 0)
|
||||||
return FALSE; // File not found
|
return FALSE; // File not found
|
||||||
if (buf.compare("Content-length:", 15, TRUE) == 0)
|
if (buf.compare("Content-length:", 15, TRUE) == 0)
|
||||||
{
|
{
|
||||||
@ -707,6 +714,7 @@ bool TSocketClient::HttpGetFile(CONNID id, const char* remote, const char* local
|
|||||||
{
|
{
|
||||||
buf.cut(0) << remote << " - " << (size / 1024 + 1) << " KBytes";
|
buf.cut(0) << remote << " - " << (size / 1024 + 1) << " KBytes";
|
||||||
TProgind pi(size, buf, TRUE, TRUE);
|
TProgind pi(size, buf, TRUE, TRUE);
|
||||||
|
|
||||||
long total = 0;
|
long total = 0;
|
||||||
|
|
||||||
skstream* cur_socket = ((TSocket_connection*)GetConnection(id))->GetSocket();
|
skstream* cur_socket = ((TSocket_connection*)GetConnection(id))->GetSocket();
|
||||||
@ -867,12 +875,38 @@ bool TSocketClient::HttpPostFile(CONNID id, const char* remote, const char* loca
|
|||||||
conn->ReadLine(buf);
|
conn->ReadLine(buf);
|
||||||
ok = buf.find("200 OK") >= 0;
|
ok = buf.find("200 OK") >= 0;
|
||||||
|
|
||||||
ReleaseBuffer();
|
if (ok)
|
||||||
m_dwSize = buf.len()+1;
|
{
|
||||||
m_pData = new BYTE[m_dwSize];
|
unsigned long size = 0;
|
||||||
memcpy(m_pData, buf, (size_t)m_dwSize);
|
for (int r = 0; !cur_socket->eof(); r++)
|
||||||
|
{
|
||||||
|
cur_socket->getline(buf.get_buffer(), buf.size(), '\n');
|
||||||
|
if (buf.blank())
|
||||||
|
break;
|
||||||
|
if (buf.compare("Content-length:", 15, TRUE) == 0)
|
||||||
|
{
|
||||||
|
const int colon = buf.find(':');
|
||||||
|
size = atol(buf.mid(colon+1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ReleaseBuffer();
|
||||||
|
ok = size > 0;
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
m_dwSize = size;
|
||||||
|
m_pData = new BYTE[m_dwSize+1];
|
||||||
|
memset(m_pData, 0, size_t(m_dwSize+1));
|
||||||
|
cur_socket->read(m_pData, (size_t)m_dwSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ReleaseBuffer();
|
||||||
|
m_dwSize = buf.len()+1;
|
||||||
|
m_pData = new BYTE[m_dwSize];
|
||||||
|
memcpy(m_pData, buf, (size_t)m_dwSize);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -52,6 +52,7 @@ public:
|
|||||||
bool HttpSoap(CONNID id, const char* query);
|
bool HttpSoap(CONNID id, const char* query);
|
||||||
bool HttpPostFile(CONNID id, const char* remote, const char* local, const char* authorization = NULL);
|
bool HttpPostFile(CONNID id, const char* remote, const char* local, const char* authorization = NULL);
|
||||||
|
|
||||||
|
|
||||||
TSocketClient();
|
TSocketClient();
|
||||||
virtual ~TSocketClient();
|
virtual ~TSocketClient();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -33,14 +33,6 @@ bool TMask_buildmov::handle_annoes(TMask_field &fld, KEY k)
|
|||||||
if (fld.to_check(k) || k == K_ENTER)
|
if (fld.to_check(k) || k == K_ENTER)
|
||||||
{
|
{
|
||||||
TConfig prassid(CONFIG_DITTA, "Euro");
|
TConfig prassid(CONFIG_DITTA, "Euro");
|
||||||
TDate adozione = prassid.get("DataAdozione");
|
|
||||||
if (adozione.ok())
|
|
||||||
{
|
|
||||||
TEsercizi_contabili esc;
|
|
||||||
const int anno = esc.date2esc(adozione);
|
|
||||||
if (mask.get_int(F_ANNOES) < anno)
|
|
||||||
return fld.error_box("Impossibile effettuare la ricostruzione saldi su\n un esercizio precedente alla data adozione Euro") ;
|
|
||||||
}
|
|
||||||
if (mask.esercizi.exist(mask.get_int(F_ANNOES)))
|
if (mask.esercizi.exist(mask.get_int(F_ANNOES)))
|
||||||
{
|
{
|
||||||
const TEsercizio & e=mask.esercizi.esercizio(mask.get_int(F_ANNOES));
|
const TEsercizio & e=mask.esercizi.esercizio(mask.get_int(F_ANNOES));
|
||||||
|
|||||||
@ -479,10 +479,8 @@ void TStampa_datistorici::setprint_perarticoli()
|
|||||||
|
|
||||||
darec.put("ANNOES",_mask->get(F_ANNOES));
|
darec.put("ANNOES",_mask->get(F_ANNOES));
|
||||||
darec.put("CODMAG",_mask->get(F_DAMAG));
|
darec.put("CODMAG",_mask->get(F_DAMAG));
|
||||||
// darec.put("CODART",_mask->get(F_DAART));
|
|
||||||
arec.put("ANNOES",_mask->get(F_ANNOES));
|
arec.put("ANNOES",_mask->get(F_ANNOES));
|
||||||
arec.put("CODMAG",_mask->get(F_AMAG));
|
arec.put("CODMAG",_mask->get(F_AMAG));
|
||||||
// arec.put("CODART",_mask->get(F_AART));
|
|
||||||
|
|
||||||
const bool order_by_group = subordine == 'M' || subordine == 'S';
|
const bool order_by_group = subordine == 'M' || subordine == 'S';
|
||||||
|
|
||||||
@ -518,9 +516,6 @@ void TStampa_datistorici::setprint_perarticoli_all()
|
|||||||
char filtro_articoli=*_mask->get(F_FILTRO);
|
char filtro_articoli=*_mask->get(F_FILTRO);
|
||||||
char subordine=*_mask->get(F_ORDINEART);
|
char subordine=*_mask->get(F_ORDINEART);
|
||||||
|
|
||||||
//_form = filtro_articoli == 'T' ?
|
|
||||||
// new TForm_giacprezzi("mg3100aa", "") :
|
|
||||||
// new TForm_giacprezzi("mg3100a", "");;
|
|
||||||
_form = new TForm_giacprezzi("mg3100aa", "");
|
_form = new TForm_giacprezzi("mg3100aa", "");
|
||||||
// ********************
|
// ********************
|
||||||
// range di stampa magazzini
|
// range di stampa magazzini
|
||||||
@ -646,7 +641,7 @@ void TStampa_datistorici::setprint_perarticoli_all()
|
|||||||
|
|
||||||
_form->set_codlistino(_mask->get(F_CATVENLISTINO),_mask->get(F_CODLISTINO));
|
_form->set_codlistino(_mask->get(F_CATVENLISTINO),_mask->get(F_CODLISTINO));
|
||||||
|
|
||||||
joinexp << "ANNOES==" << _mask->get(F_ANNOES) << "|CODART==CODART";
|
joinexp << "ANNOES==\"" << _mask->get(F_ANNOES) << "\"|CODART==CODART";
|
||||||
|
|
||||||
TSortedfile *mag;
|
TSortedfile *mag;
|
||||||
// !?!?!! ATTENZIONE : Modifica temporanea
|
// !?!?!! ATTENZIONE : Modifica temporanea
|
||||||
|
|||||||
@ -345,7 +345,7 @@ void TStampa_disp::setprint_perarticoli()
|
|||||||
_mask->get_bool(F_DETTAGLIOMAG));
|
_mask->get_bool(F_DETTAGLIOMAG));
|
||||||
|
|
||||||
|
|
||||||
joinexp << "ANNOES==" << _mask->get(F_ANNOES) << "|CODART==CODART";
|
joinexp << "ANNOES==\"" << _mask->get(F_ANNOES) << "\"|CODART==CODART";
|
||||||
|
|
||||||
TSortedfile *mag;
|
TSortedfile *mag;
|
||||||
// !?!?!! ATTENZIONE : Modifica temporanea
|
// !?!?!! ATTENZIONE : Modifica temporanea
|
||||||
|
|||||||
@ -757,7 +757,8 @@ void TStampa_schede_mag::setprint_permagazzini()
|
|||||||
TLocalisamfile *mag=new TLocalisamfile(LF_MAG);
|
TLocalisamfile *mag=new TLocalisamfile(LF_MAG);
|
||||||
mag->setkey(2);
|
mag->setkey(2);
|
||||||
TString mag_joinexp;
|
TString mag_joinexp;
|
||||||
mag_joinexp << "ANNOES==" << _mask->get(F_ANNOES) << "|CODMAG==CODMAG|CODART==CODART|LIVELLO==LIVGIAC";
|
mag_joinexp << "ANNOES==\"" << _mask->get(F_ANNOES) << "\"|CODMAG==CODMAG|CODART==CODART|LIVELLO==LIVGIAC";
|
||||||
|
|
||||||
_cur->relation()->replace(mag,1,mag_joinexp);
|
_cur->relation()->replace(mag,1,mag_joinexp);
|
||||||
_cur->setfilter(cfilter,TRUE);
|
_cur->setfilter(cfilter,TRUE);
|
||||||
_cur->setregion(darec,arec,0x2);
|
_cur->setregion(darec,arec,0x2);
|
||||||
@ -865,7 +866,7 @@ void TStampa_schede_mag::setprint_perarticoli()
|
|||||||
TLocalisamfile *mag=new TLocalisamfile(LF_MAG);
|
TLocalisamfile *mag=new TLocalisamfile(LF_MAG);
|
||||||
mag->setkey(2);
|
mag->setkey(2);
|
||||||
TString mag_joinexp;
|
TString mag_joinexp;
|
||||||
mag_joinexp << "ANNOES==" << _mask->get(F_ANNOES) << "|CODMAG==CODMAG|CODART==CODART|LIVELLO==LIVGIAC";
|
mag_joinexp << "ANNOES==\"" << _mask->get(F_ANNOES) << "\"|CODMAG==CODMAG|CODART==CODART|LIVELLO==LIVGIAC";
|
||||||
_cur->relation()->replace(mag,2,mag_joinexp);
|
_cur->relation()->replace(mag,2,mag_joinexp);
|
||||||
|
|
||||||
if (cfilter.not_empty())
|
if (cfilter.not_empty())
|
||||||
|
|||||||
@ -502,7 +502,7 @@ bool TStampa_inventario::calcola_giacenze(const bool b)
|
|||||||
TArticolo_giacenza_data art_giac;
|
TArticolo_giacenza_data art_giac;
|
||||||
const TEsercizi_contabili esc;
|
const TEsercizi_contabili esc;
|
||||||
const int anno = esc.date2esc(data_limite);
|
const int anno = esc.date2esc(data_limite);
|
||||||
TString16 annoes; annoes << anno;
|
TString16 annoes; annoes.format("%04d", anno);
|
||||||
|
|
||||||
TString msg;
|
TString msg;
|
||||||
msg << "Elaborazione saldi al " << data_limite << " ...";
|
msg << "Elaborazione saldi al " << data_limite << " ...";
|
||||||
@ -909,7 +909,6 @@ void TStampa_inventario::setprint_perarticoli_all()
|
|||||||
break;
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
{
|
{
|
||||||
//TString filter_expr;
|
|
||||||
_form->set_ordering(mg_ragg_fisc);// Setta la subsection in modo da raggruppare per RAGGFIS
|
_form->set_ordering(mg_ragg_fisc);// Setta la subsection in modo da raggruppare per RAGGFIS
|
||||||
_form->use_alternate_cursor();
|
_form->use_alternate_cursor();
|
||||||
_cur = _form->cursor(); // Setta il cursore sortato per questo ordinamento... siccome non esiste una chiave RAGGFIS+CODART
|
_cur = _form->cursor(); // Setta il cursore sortato per questo ordinamento... siccome non esiste una chiave RAGGFIS+CODART
|
||||||
@ -941,14 +940,10 @@ void TStampa_inventario::setprint_perarticoli_all()
|
|||||||
_mask->get_bool(F_RAGGCODICE),_mask->get_int(F_FROMLIVELLOART),_mask->get_int(F_TOLIVELLOART),
|
_mask->get_bool(F_RAGGCODICE),_mask->get_int(F_FROMLIVELLOART),_mask->get_int(F_TOLIVELLOART),
|
||||||
_mask->get_bool(F_RAGGLIVGIAC),_mask->get_int(F_FROMLIVELLOGIAC),_mask->get_int(F_TOLIVELLOGIAC),
|
_mask->get_bool(F_RAGGLIVGIAC),_mask->get_int(F_FROMLIVELLOGIAC),_mask->get_int(F_TOLIVELLOGIAC),
|
||||||
_mask->get_bool(F_TOTALIMAGAZZINI),_mask->get_bool(F_DETTAGLIOMAG));
|
_mask->get_bool(F_TOTALIMAGAZZINI),_mask->get_bool(F_DETTAGLIOMAG));
|
||||||
/* if (*_mask->get(F_FILTRO)=='N')
|
|
||||||
_form->find_field('B',odd_page,"TOT_DEPOSITO").setcondition("GIAC!=0");
|
|
||||||
if (*_mask->get(F_FILTRO)=='+')
|
|
||||||
_form->find_field('B',odd_page,"TOT_DEPOSITO").setcondition("GIAC>0");
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
joinexp << "ANNOES==" << _mask->get(F_ANNOES) << "|CODART==CODART";
|
joinexp << "ANNOES==\"" << _mask->get(F_ANNOES) << "\"|CODART==CODART";
|
||||||
|
|
||||||
|
|
||||||
TSortedfile *mag;
|
TSortedfile *mag;
|
||||||
TRelation *rel = NULL;
|
TRelation *rel = NULL;
|
||||||
|
|||||||
@ -11,6 +11,7 @@ int main(int argc,char** argv)
|
|||||||
case 2: sc2300(argc,argv); break; // Stampa Scaduto
|
case 2: sc2300(argc,argv); break; // Stampa Scaduto
|
||||||
case 3: sc2400(argc,argv); break; // Stampa Solleciti
|
case 3: sc2400(argc,argv); break; // Stampa Solleciti
|
||||||
case 4: sc2500(argc,argv); break; // Confronto saldi contabili con saldaconto
|
case 4: sc2500(argc,argv); break; // Confronto saldi contabili con saldaconto
|
||||||
|
case 5: sc2600(argc,argv); break; // Stampa Prospetto Scadenze
|
||||||
default: sc2100(argc,argv); break; // Stampa Estratti conto
|
default: sc2100(argc,argv); break; // Stampa Estratti conto
|
||||||
}
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|||||||
2
sc/sc2.h
2
sc/sc2.h
@ -4,5 +4,5 @@ int sc2200(int argc, char** argv);
|
|||||||
int sc2300(int argc, char** argv);
|
int sc2300(int argc, char** argv);
|
||||||
int sc2400(int argc, char** argv);
|
int sc2400(int argc, char** argv);
|
||||||
int sc2500(int argc, char** argv);
|
int sc2500(int argc, char** argv);
|
||||||
|
int sc2600(int argc, char** argv);
|
||||||
|
|
||||||
|
|||||||
949
sc/sc2600.cpp
Executable file
949
sc/sc2600.cpp
Executable file
@ -0,0 +1,949 @@
|
|||||||
|
#include <config.h>
|
||||||
|
#include <currency.h>
|
||||||
|
#include <printapp.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include "../cg/cgsaldac.h"
|
||||||
|
#include "../cg/cglib02.h"
|
||||||
|
#include "sc2.h"
|
||||||
|
#include "sc2201.h"
|
||||||
|
#include "sc2600.h"
|
||||||
|
|
||||||
|
#include <clifo.h>
|
||||||
|
#include <nditte.h>
|
||||||
|
#include <pconti.h>
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Stampa prospetto scadenze
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define NUMERO_FASCE 5
|
||||||
|
#define LIMITI {30,60,90,120,150,30,60,90,120,150}
|
||||||
|
|
||||||
|
enum tipo_st {clienti=0, fornitori=1, altri=2};
|
||||||
|
|
||||||
|
class TLineTotal : public TObject //Oggetto di base per i TAssoc_array dei totali
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
real _s1;// Scaglione 1 scaduto
|
||||||
|
real _s2;// Scaglione 2 scaduto
|
||||||
|
real _s3;// Scaglione 3 scaduto
|
||||||
|
real _s4;// Scaglione 4 scaduto
|
||||||
|
real _s5;// Scaglione 5 scaduto
|
||||||
|
real _s6;// Scaglione 6 scaduto
|
||||||
|
real _ns1;// Scaglione 1 non scaduto
|
||||||
|
real _ns2;// Scaglione 2 non scaduto
|
||||||
|
real _ns3;// Scaglione 3 non scaduto
|
||||||
|
real _ns4;// Scaglione 4 non scaduto
|
||||||
|
real _ns5;// Scaglione 5 non scaduto
|
||||||
|
real _ns6;// Scaglione 6 non scaduto
|
||||||
|
real _es; // esposto
|
||||||
|
real _sl; // saldo
|
||||||
|
|
||||||
|
virtual TObject* dup() const { return new TLineTotal(*this); }
|
||||||
|
virtual TLineTotal & copy(const TLineTotal & l);
|
||||||
|
TLineTotal(const TLineTotal* l) { copy(*l); }
|
||||||
|
TLineTotal();
|
||||||
|
};
|
||||||
|
|
||||||
|
TLineTotal & TLineTotal::copy(const TLineTotal & l)
|
||||||
|
{
|
||||||
|
_s1=l._s1;
|
||||||
|
_s2=l._s2;
|
||||||
|
_s3=l._s3;
|
||||||
|
_s4=l._s4;
|
||||||
|
_s5=l._s5;
|
||||||
|
_s6=l._s6;
|
||||||
|
_ns1=l._ns1;
|
||||||
|
_ns2=l._ns2;
|
||||||
|
_ns3=l._ns3;
|
||||||
|
_ns4=l._ns4;
|
||||||
|
_ns5=l._ns5;
|
||||||
|
_ns6=l._ns6;
|
||||||
|
_es=l._es;
|
||||||
|
_sl=l._sl;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
TLineTotal::TLineTotal()
|
||||||
|
{
|
||||||
|
_s1=ZERO;
|
||||||
|
_s2=ZERO;
|
||||||
|
_s3=ZERO;
|
||||||
|
_s4=ZERO;
|
||||||
|
_s5=ZERO;
|
||||||
|
_s6=ZERO;
|
||||||
|
_ns1=ZERO;
|
||||||
|
_ns2=ZERO;
|
||||||
|
_ns3=ZERO;
|
||||||
|
_ns4=ZERO;
|
||||||
|
_ns5=ZERO;
|
||||||
|
_ns6=ZERO;
|
||||||
|
_es=ZERO;
|
||||||
|
_sl=ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TProspettoScadenze : public TPrintapp
|
||||||
|
{
|
||||||
|
TRelation *_rel1, *_rel2; // Relazioni di lavoro...
|
||||||
|
int _cur1, _cur2, // Identificatori dei cursori di lavoro...
|
||||||
|
_cur3, _cur4;
|
||||||
|
TSelection_ext_mask *_m;
|
||||||
|
TLocalisamfile *_scad,*_pagsca;
|
||||||
|
tipo_st _tipost; // Tipo di stampa impostato
|
||||||
|
bool _end_printed,
|
||||||
|
_stvaluta,
|
||||||
|
_ordcod, // VERO=ordine per codice, FALSO=ordine per ragione sociale
|
||||||
|
_sinfasce,
|
||||||
|
_nsinfasce;
|
||||||
|
TString _anno,_numdoc,_protiva,_datadoc,_codval,
|
||||||
|
_cod, _cod_pre, _des, _des_pre;
|
||||||
|
TDate _limop, _limscad, _datas, _limbf; // Data limite operazione, data limite scaduto e data di stampa
|
||||||
|
int _gcr, // Giorni per Calcolo Rischio (valido solo per stampa clienti)
|
||||||
|
_sfasce,
|
||||||
|
_nsfasce;
|
||||||
|
real _unsnc,_uns; // Unassigned per partita.
|
||||||
|
TArray _conti_cf, // array per conti mastro
|
||||||
|
_t, // Array per i totali
|
||||||
|
_ns_date, // Date per non scaduto
|
||||||
|
_s_date; // Date per lo scaduto
|
||||||
|
|
||||||
|
static TString _last_game;
|
||||||
|
static bool fil_function(const TRelation *);
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual bool preprocess_page(int file, int counter);
|
||||||
|
virtual bool preprocess_print(int file, int counter);
|
||||||
|
virtual print_action postprocess_print(int file, int counter);
|
||||||
|
virtual print_action postprocess_page(int file, int counter);
|
||||||
|
virtual void preprocess_header() {};
|
||||||
|
virtual bool user_create();
|
||||||
|
virtual bool user_destroy();
|
||||||
|
virtual bool set_print(int);
|
||||||
|
virtual void set_page (int file, int counter);
|
||||||
|
void print_totali_rows(int& nriga, bool what);
|
||||||
|
void print_totali(int& nriga);
|
||||||
|
void print_header();
|
||||||
|
void update_totals(bool what, real& esp,
|
||||||
|
real& s1,real& s2,real& s3,real& s4,real& s5, real& s6,
|
||||||
|
real& ns1,real& ns2,real& ns3,real& ns4,real& ns5, real& ns6);
|
||||||
|
void compute_unassigned(TPartita& p);
|
||||||
|
void compute_all(TPartita& p, TBill& bill);
|
||||||
|
void print_real(TString& dest, const real& num);
|
||||||
|
void riempi_conti_mastro(const char cf);
|
||||||
|
void calcola_saldo();
|
||||||
|
TProspettoScadenze();
|
||||||
|
};
|
||||||
|
|
||||||
|
TString TProspettoScadenze::_last_game;
|
||||||
|
|
||||||
|
inline TProspettoScadenze& app() {return (TProspettoScadenze&)main_app();}
|
||||||
|
|
||||||
|
void TProspettoScadenze::print_real(TString& dest, const real& num)
|
||||||
|
{
|
||||||
|
const bool stampa_in_valuta = _stvaluta && !_codval.blank();
|
||||||
|
const TString& val = stampa_in_valuta ? _codval : EMPTY_STRING;
|
||||||
|
const TCurrency cur(num, val);
|
||||||
|
dest = cur.string(TRUE);
|
||||||
|
dest.right_just(13);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TProspettoScadenze::fil_function(const TRelation *r)
|
||||||
|
{
|
||||||
|
TRectype& part = r->curr(LF_PARTITE);
|
||||||
|
|
||||||
|
TString80 key;
|
||||||
|
key.format("%03d%03d%06ld%4d",
|
||||||
|
part.get_int(PART_GRUPPO), part.get_int(PART_CONTO),
|
||||||
|
part.get_long(PART_SOTTOCONTO), part.get_int(PART_ANNO));
|
||||||
|
key << part.get(PART_NUMPART);
|
||||||
|
|
||||||
|
const bool rt = key != _last_game;
|
||||||
|
if (rt)
|
||||||
|
_last_game = key;
|
||||||
|
return rt;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TProspettoScadenze::update_totals(bool what, real& esp,
|
||||||
|
real& s1, real& s2, real& s3, real& s4, real& s5, real& s6,
|
||||||
|
real& ns1, real& ns2, real& ns3, real& ns4, real& ns5, real& ns6)
|
||||||
|
{
|
||||||
|
TAssoc_array& a = (TAssoc_array&) _t[what];
|
||||||
|
TLineTotal *ll = (TLineTotal *) a.objptr(_codval);
|
||||||
|
if (ll == NULL)
|
||||||
|
{
|
||||||
|
ll = new TLineTotal;
|
||||||
|
a.add(_codval, ll);
|
||||||
|
}
|
||||||
|
ll->_s1 += s1;
|
||||||
|
ll->_s2 += s2;
|
||||||
|
ll->_s3 += s3;
|
||||||
|
ll->_s4 += s4;
|
||||||
|
ll->_s5 += s5;
|
||||||
|
ll->_s6 += s6;
|
||||||
|
ll->_ns1 += ns1;
|
||||||
|
ll->_ns2 += ns2;
|
||||||
|
ll->_ns3 += ns3;
|
||||||
|
ll->_ns4 += ns4;
|
||||||
|
ll->_ns5 += ns5;
|
||||||
|
ll->_ns6 += ns6;
|
||||||
|
ll->_es += esp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TProspettoScadenze::compute_unassigned(TPartita& p)
|
||||||
|
{
|
||||||
|
TRecord_array& ra = p.unassigned();
|
||||||
|
|
||||||
|
_uns = ZERO; _unsnc = ZERO;
|
||||||
|
for (int r = ra.last_row(); r > 0; r = ra.pred_row(r))
|
||||||
|
{
|
||||||
|
const TRectype& rec = ra.row(r);
|
||||||
|
const TRiga_partite& sum = p.riga(rec.get_int(PAGSCA_NRIGP));
|
||||||
|
const char * field = (_stvaluta && sum.in_valuta() ? PAGSCA_IMPORTOVAL : PAGSCA_IMPORTO);
|
||||||
|
if (sum.get_int(PART_TIPOMOV) == 2) // Is it a credit note ?
|
||||||
|
_unsnc += rec.get_real(field);
|
||||||
|
else
|
||||||
|
_uns += rec.get_real(field);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TProspettoScadenze::compute_all(TPartita& p, TBill& bill)
|
||||||
|
{
|
||||||
|
real residuo, s1,s2,s3,s4,s5,s6,ns1,ns2,ns3,ns4,ns5,ns6,res_pagati,esposto;
|
||||||
|
compute_unassigned(p);
|
||||||
|
for (int r = p.last(); r > 0; r = p.pred(r)) // Browse all rows (partite)
|
||||||
|
{
|
||||||
|
const TRiga_partite& rp = p.riga(r);
|
||||||
|
// se la data di registrazione della partita ' > di _limop (data lim operazione)
|
||||||
|
// non deve scorrere le scadenze
|
||||||
|
const TDate data_reg(rp.get_date(PART_DATAREG));
|
||||||
|
if (data_reg > _limop) continue;
|
||||||
|
for (int n=rp.rate(); n > 0; n--) // Browse all rows (scadenze)
|
||||||
|
{
|
||||||
|
const TRiga_scadenze& rs = rp.rata(n);
|
||||||
|
const TDate d(rs.get_date(SCAD_DATASCAD));
|
||||||
|
const char* field = (_stvaluta && rs.in_valuta()) ? PAGSCA_IMPORTOVAL : PAGSCA_IMPORTO;
|
||||||
|
const char* sfield = (_stvaluta && rs.in_valuta()) ? SCAD_IMPORTOVAL : SCAD_IMPORTO;
|
||||||
|
const char ssez = rp.sezione();
|
||||||
|
|
||||||
|
TImporto scd,pag,bf,work_imp;
|
||||||
|
scd += TImporto(ssez,rs.get_real(sfield)); // Importo in scadenza...
|
||||||
|
pag += rs.importo_pagato(_stvaluta); // Quanto e' stato pagato per questa scadenza?
|
||||||
|
|
||||||
|
// Scorre le righe di pagamento per trovare la riga corripondente alla prima data pagamento
|
||||||
|
// di questa rata. Motivo: il primo pagamento delle rata corrente, effettuato tramite effetto
|
||||||
|
// (ai fini del calcolo B.F.) deve essere considerato con la data scadenza
|
||||||
|
const int lst = rs.last();
|
||||||
|
int prima_riga_pagamento = -1;
|
||||||
|
TDate first_date;// data relativa alla prima riga di pagamento
|
||||||
|
for (int pp = rs.first(); pp <= lst; pp = rs.succ(pp))
|
||||||
|
{
|
||||||
|
const TRiga_partite& sum = p.riga(pp);
|
||||||
|
TDate current_date(sum.get_date(PART_DATAPAG));
|
||||||
|
int tipo_pag = rs.get_int(SCAD_TIPOPAG);
|
||||||
|
if (tipo_pag>=2 && tipo_pag<=7) //Incasso tramite effetto
|
||||||
|
if (prima_riga_pagamento==-1 || first_date > current_date)
|
||||||
|
{
|
||||||
|
first_date = current_date;
|
||||||
|
prima_riga_pagamento = pp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (pp = rs.first(); pp <= lst; pp = rs.succ(pp)) // Browse all rows (pagamenti)
|
||||||
|
{
|
||||||
|
const TRectype pg = rs.row(pp);
|
||||||
|
const TRiga_partite& sum = p.riga(pp);
|
||||||
|
const char sez = sum.sezione();
|
||||||
|
const int tipomov = sum.get_int(PART_TIPOMOV);
|
||||||
|
// se tipomov e' 2 (Nota di credito assegnata)
|
||||||
|
// storna da scdz. In entrambi i casi si ha l'operatore +=, perche' nel TImporto e' gia'
|
||||||
|
// compresa la sezione opposta
|
||||||
|
if (tipomov==2)
|
||||||
|
{
|
||||||
|
work_imp = TImporto(sez,pg.get_real(field));
|
||||||
|
scd += work_imp;
|
||||||
|
pag -= work_imp;
|
||||||
|
}
|
||||||
|
if ((tipomov==3 || tipomov==5) && _tipost==clienti && _gcr!=0)
|
||||||
|
{
|
||||||
|
TDate data_pag(sum.get_date(PART_DATAPAG));
|
||||||
|
int tipo_pag = rs.get_int(SCAD_TIPOPAG);
|
||||||
|
if (tipo_pag>=2 && tipo_pag<=7 && data_pag.ok()) //Incasso tramite effetto
|
||||||
|
{
|
||||||
|
if (prima_riga_pagamento > -1 && prima_riga_pagamento == pp)
|
||||||
|
data_pag = d; // Se e' il primo pagamento(in ordine di data) di questa rata
|
||||||
|
// prende la data di scadenza relativa.
|
||||||
|
if (data_pag >= _limbf) // && data_pag <= _limscad)
|
||||||
|
bf += TImporto(sez,pg.get_real(field));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
char norm='D';
|
||||||
|
if (_tipost == fornitori)
|
||||||
|
norm = 'A';
|
||||||
|
else
|
||||||
|
if (_tipost == altri && bill.find())
|
||||||
|
norm = bill.sezione();
|
||||||
|
pag.normalize((norm=='D') ? 'A' : 'D'); scd.normalize(norm); bf.normalize((norm=='D') ? 'A' : 'D');
|
||||||
|
real res,a,b; a = pag.valore(); b = scd.valore(); //buonf += bf.valore();
|
||||||
|
res = b - a;
|
||||||
|
if (_uns > ZERO) // Rettifica i pagamenti con i non assegnati (calcolo sul residuo: scadenza-pagamento)
|
||||||
|
{
|
||||||
|
real gap = (_uns > res ? res : _uns); // questo e' quanto manca per completare questa scadenza
|
||||||
|
a += gap;
|
||||||
|
_uns -= gap; // aggiorna la cache..
|
||||||
|
}
|
||||||
|
if (_unsnc > ZERO) // Rettifica le scadenze con le N.C non assegnate.
|
||||||
|
{
|
||||||
|
real gap = (_unsnc > b ? b : _unsnc);
|
||||||
|
b -= gap;
|
||||||
|
_unsnc -= gap;
|
||||||
|
}
|
||||||
|
res = b - a; // Scadenze - pagati = scaduto per questo gruppo di rate
|
||||||
|
if (b == ZERO) // Se le scadenze sono a zero, vuol dire che sono state stornate
|
||||||
|
res = ZERO; // da qualche nota di credito o non assegnato percio' non si ha residuo
|
||||||
|
|
||||||
|
if (res < ZERO) // Significa che l'importo pagato e' maggiore dell'importo in scadenza
|
||||||
|
{ // c'e' un residuo positivo, e quindi va memorizzato
|
||||||
|
res *= -1.0; // cambia il segno
|
||||||
|
res_pagati+= res; // Residui pagati in piu'
|
||||||
|
res = ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (d > _limscad)
|
||||||
|
{
|
||||||
|
if (d > _limscad && d <= (TDate&)_ns_date[0])
|
||||||
|
ns1 += res;
|
||||||
|
if (d > (TDate&)_ns_date[0] && d <= (TDate&)_ns_date[1])
|
||||||
|
ns2 += res;
|
||||||
|
if (d > (TDate&)_ns_date[1] && d <= (TDate&)_ns_date[2])
|
||||||
|
ns3 += res;
|
||||||
|
if (d > (TDate&)_ns_date[2] && d <= (TDate&)_ns_date[3])
|
||||||
|
ns4 += res;
|
||||||
|
if (d > (TDate&)_ns_date[3] && d <= (TDate&)_ns_date[4])
|
||||||
|
ns5 += res;
|
||||||
|
if (d > (TDate&)_ns_date[4])
|
||||||
|
ns6 += res;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Detrae dal residuo scaduto eventuali pagamenti in piu' effettuati
|
||||||
|
real gap = (res_pagati > res ? res : res_pagati);
|
||||||
|
res -= gap;
|
||||||
|
res_pagati -= gap;
|
||||||
|
}
|
||||||
|
if (d <= _limscad && d >= (TDate&)_s_date[0])
|
||||||
|
s1 += res;
|
||||||
|
if (d < (TDate&)_s_date[0] && d >= (TDate&)_s_date[1])
|
||||||
|
s2 += res;
|
||||||
|
if (d < (TDate&)_s_date[1] && d >= (TDate&)_s_date[2])
|
||||||
|
s3 += res;
|
||||||
|
if (d < (TDate&)_s_date[2] && d >= (TDate&)_s_date[3])
|
||||||
|
s4 += res;
|
||||||
|
if (d < (TDate&)_s_date[3] && d >= (TDate&)_s_date[4])
|
||||||
|
s5 += res;
|
||||||
|
if (d < (TDate&)_s_date[4])
|
||||||
|
s6 += res;
|
||||||
|
residuo += res;
|
||||||
|
}
|
||||||
|
bool sbf;
|
||||||
|
TImporto esp = rp.esposto(_stvaluta, _limscad, _limbf, sbf);
|
||||||
|
esposto += esp.valore();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aggiorna i totali...
|
||||||
|
if (s1!=ZERO || s2!=ZERO || s3!=ZERO || s4!= ZERO || s5!= ZERO || s6!=ZERO ||
|
||||||
|
ns1!=ZERO || ns2!=ZERO || ns3!=ZERO || ns4!= ZERO || ns5!= ZERO || ns6!=ZERO || esposto!=ZERO)
|
||||||
|
{
|
||||||
|
update_totals(0, esposto, s1, s2, s3, s4, s5, s6, ns1, ns2, ns3, ns4, ns5, ns6); // Singolo...
|
||||||
|
update_totals(1, esposto, s1, s2, s3, s4, s5, s6, ns1, ns2, ns3, ns4, ns5, ns6); // ...Generale
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TProspettoScadenze::calcola_saldo()
|
||||||
|
{
|
||||||
|
TAssoc_array& a = (TAssoc_array&) _t[0];
|
||||||
|
TLineTotal *ll = (TLineTotal *) a.objptr(_codval);
|
||||||
|
TSaldo saldo;
|
||||||
|
int g,c;
|
||||||
|
long s;
|
||||||
|
if (_tipost == altri)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s = atol(_cod_pre);
|
||||||
|
for (int i = 0; i < _conti_cf.items(); i++)
|
||||||
|
{
|
||||||
|
TToken_string& cf = (TToken_string&)_conti_cf[i];
|
||||||
|
g = cf.get_int(0);
|
||||||
|
c = cf.get_int(1);
|
||||||
|
TToken_string key;
|
||||||
|
key.add(g); key.add(c); key.add(s);
|
||||||
|
const TRectype& pc = cache().get(LF_PCON, key);
|
||||||
|
int indbil_conto = pc.get_int (PCN_INDBIL);
|
||||||
|
TDate dataini = TDate(1, 1, _limop.year());
|
||||||
|
saldo.data_limite_bilancio( 1, g, c, s, dataini, _limop, indbil_conto, FALSE);
|
||||||
|
ll->_sl += saldo.saldo();
|
||||||
|
}
|
||||||
|
// aggiorno il totale generale
|
||||||
|
TAssoc_array& at = (TAssoc_array&) _t[1];
|
||||||
|
TLineTotal *lt = (TLineTotal *) a.objptr(_codval);
|
||||||
|
lt->_sl += ll->_sl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TProspettoScadenze::preprocess_page(int file, int counter)
|
||||||
|
{
|
||||||
|
if (file == LF_PARTITE)
|
||||||
|
{
|
||||||
|
const TRectype& curr = current_cursor()->curr(file);
|
||||||
|
|
||||||
|
TBill bill(curr);
|
||||||
|
const bool checked = _m->selected(bill);
|
||||||
|
|
||||||
|
if (!checked && !_end_printed) // Se non e' stato selezionato salta al prossimo record
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
int nriga = 1;
|
||||||
|
if (_tipost == clienti || _tipost == fornitori)
|
||||||
|
{
|
||||||
|
const TRectype& clifo = current_cursor()->curr(LF_CLIFO);
|
||||||
|
_des = clifo.get(CLI_RAGSOC);
|
||||||
|
_cod = clifo.get(CLI_CODCF);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const TRectype& pcon = current_cursor()->curr(LF_PCON);
|
||||||
|
_des = pcon.get(PCN_DESCR);
|
||||||
|
_cod = pcon.get(PCN_GRUPPO);
|
||||||
|
_cod << " " << pcon.get(PCN_CONTO);
|
||||||
|
_cod << " " << pcon.get(PCN_SOTTOCONTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_cod != _cod_pre || _end_printed) // Controlla se e' cambiato il codice cli/fo/conto
|
||||||
|
{
|
||||||
|
reset_print();
|
||||||
|
if (_cod_pre != "") // stampa i totali del precedente solo se non e' la prima
|
||||||
|
{
|
||||||
|
//calcola_saldo();
|
||||||
|
TAssoc_array& sin_tot = (TAssoc_array&) _t[0];
|
||||||
|
if (sin_tot.items() > 0)
|
||||||
|
print_totali(nriga);
|
||||||
|
if (_end_printed)
|
||||||
|
{
|
||||||
|
TAssoc_array& gen_tot = (TAssoc_array&) _t[1];
|
||||||
|
if (gen_tot.items() > 0)
|
||||||
|
{
|
||||||
|
nriga++;
|
||||||
|
print_totali_rows(nriga,1);
|
||||||
|
}
|
||||||
|
return TRUE; // Go back, print and exit!
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_des.trim();
|
||||||
|
_cod_pre = _cod;
|
||||||
|
_des_pre = _des;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (curr.empty()) // Attenzione: Possono succedere anche queste cose!
|
||||||
|
return FALSE;
|
||||||
|
TPartita p(curr);
|
||||||
|
|
||||||
|
//Pesca gli estremi dalla prima riga di fattura, che non e' necessariamente la riga #1
|
||||||
|
const int r = p.prima_fattura();
|
||||||
|
if (r <= 0)
|
||||||
|
return TRUE; // se non ci sono fatture ... salta al prossimo
|
||||||
|
|
||||||
|
if (r > 0) //Skip next partita if no fatture!
|
||||||
|
{
|
||||||
|
TRiga_partite& rp = p.riga(r);
|
||||||
|
_anno = rp.get(PART_ANNO);
|
||||||
|
_anno.ltrim(2);
|
||||||
|
_numdoc = rp.get(PART_NUMDOC);
|
||||||
|
_protiva = rp.get(PART_PROTIVA);
|
||||||
|
_datadoc = (const char*) rp.get_date(PART_DATADOC);
|
||||||
|
_codval = (_stvaluta ? rp.get(PART_CODVAL): "");
|
||||||
|
if (_codval.empty()) _codval = " ";
|
||||||
|
// Now performing fulkrum...
|
||||||
|
compute_all(p, bill);
|
||||||
|
}
|
||||||
|
current_cursor()->repos(); // Very, very necessary...
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TProspettoScadenze::preprocess_print(int file, int counter)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
print_action TProspettoScadenze::postprocess_print(int file, int counter)
|
||||||
|
{
|
||||||
|
print_action rt = NEXT_PAGE;
|
||||||
|
if (!_end_printed)
|
||||||
|
if ((file == LF_PARTITE))
|
||||||
|
{
|
||||||
|
rt = REPEAT_PAGE;
|
||||||
|
_end_printed = TRUE;
|
||||||
|
}
|
||||||
|
return rt;
|
||||||
|
}
|
||||||
|
|
||||||
|
print_action TProspettoScadenze::postprocess_page(int file, int counter)
|
||||||
|
{
|
||||||
|
return NEXT_PAGE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TProspettoScadenze::user_create()
|
||||||
|
{
|
||||||
|
_rel1 = new TRelation(LF_PARTITE);
|
||||||
|
_rel1->add(LF_CLIFO,"TIPOCF=TIPOC|CODCF=SOTTOCONTO",1);
|
||||||
|
_cur1 = add_cursor(new TCursor(_rel1));
|
||||||
|
_cur2 = add_cursor(new TSorted_cursor(_rel1,"UPPER(20->RAGSOC)||NUMPART","",1));
|
||||||
|
|
||||||
|
_rel2 = new TRelation(LF_PARTITE);
|
||||||
|
_rel2->add(LF_PCON,"GRUPPO=GRUPPO|CONTO=CONTO|SOTTOCONTO=SOTTOCONTO",1);
|
||||||
|
_cur3 = add_cursor(new TCursor(_rel2));
|
||||||
|
_cur4 = add_cursor(new TSorted_cursor(_rel2,"UPPER(19->DESCR)|ANNO|NUMPART","",1));
|
||||||
|
|
||||||
|
_scad = new TLocalisamfile(LF_SCADENZE);
|
||||||
|
_pagsca = new TLocalisamfile(LF_PAGSCA);
|
||||||
|
_t.add(new TAssoc_array);_t.add(new TAssoc_array);
|
||||||
|
|
||||||
|
for (int i = 0; i < NUMERO_FASCE; i++)
|
||||||
|
{
|
||||||
|
_s_date.add(new TDate);
|
||||||
|
_ns_date.add(new TDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
TConfig conf (CONFIG_DITTA,"cg");
|
||||||
|
_m = new TSelection_ext_mask("sc2600a");
|
||||||
|
_m->enable(F_VALUTA,conf.get_bool("GesVal"));
|
||||||
|
|
||||||
|
enable_print_menu();
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TProspettoScadenze::user_destroy()
|
||||||
|
{
|
||||||
|
if (_rel1) delete _rel1;
|
||||||
|
if (_rel2) delete _rel2;
|
||||||
|
if (_scad) delete _scad;
|
||||||
|
if (_pagsca) delete _pagsca;
|
||||||
|
if (_m) delete _m;
|
||||||
|
_t.destroy();
|
||||||
|
_s_date.destroy();
|
||||||
|
_ns_date.destroy();
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TProspettoScadenze::riempi_conti_mastro(const char cf)
|
||||||
|
{
|
||||||
|
_conti_cf.destroy();
|
||||||
|
TRelation rel = TRelation(LF_PCON);
|
||||||
|
TString80 filtro;
|
||||||
|
filtro.format("TMCF==\'%c\'", cf);
|
||||||
|
TCursor cur(&rel, filtro);
|
||||||
|
TToken_string gc(10);
|
||||||
|
for (cur=0; cur.pos() < cur.items(); ++cur)
|
||||||
|
{
|
||||||
|
const int g = cur.curr().get_int(PCN_GRUPPO);
|
||||||
|
const int c = cur.curr().get_int(PCN_CONTO);
|
||||||
|
gc.add(g,0);
|
||||||
|
gc.add(c,1);
|
||||||
|
_conti_cf.add(gc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TProspettoScadenze::set_print(int)
|
||||||
|
{
|
||||||
|
const bool rt = _m->run() == K_ENTER;
|
||||||
|
if (rt)
|
||||||
|
{
|
||||||
|
reset_files();
|
||||||
|
reset_print();
|
||||||
|
if (_m->get_who() == 'P')
|
||||||
|
_tipost = altri;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_m->get_who() == 'C')
|
||||||
|
_tipost = clienti;
|
||||||
|
else
|
||||||
|
_tipost = fornitori;
|
||||||
|
riempi_conti_mastro(_m->get_who());
|
||||||
|
}
|
||||||
|
if (_m->get_key() == 1)
|
||||||
|
_ordcod = TRUE;
|
||||||
|
else
|
||||||
|
_ordcod = FALSE;
|
||||||
|
_end_printed = FALSE;
|
||||||
|
_gcr = _m->get_int(F_GIORNI);
|
||||||
|
_stvaluta = _m->get_bool(F_VALUTA);
|
||||||
|
_datas = (const char *)(_m->get(F_DATASTAMPA));
|
||||||
|
_limop = (const char *)(_m->get(F_DATAOPERAZIONE));
|
||||||
|
_limscad = (const char *)(_m->get(F_DATASCADUTO));
|
||||||
|
_limbf = _limscad - (long)_gcr; // Limite inferiore per le scadenze a Buon Fine.
|
||||||
|
_sinfasce = _m->get_bool(F_SCADINFASCE);
|
||||||
|
_sfasce = _m->get_int(F_SCADFASCE);
|
||||||
|
_nsinfasce = _m->get_bool(F_ASCADINFASCE);
|
||||||
|
_nsfasce = _m->get_int(F_ASCADFASCE);
|
||||||
|
_anno.cut(0);_numdoc.cut(0);_protiva.cut(0);_datadoc.cut(0);
|
||||||
|
_codval.cut(0);_cod.cut(0); _des.cut(0); _cod_pre.cut(0);
|
||||||
|
for (int it=0; it < _t.items(); it++)
|
||||||
|
{
|
||||||
|
TAssoc_array& aa = (TAssoc_array&) _t[it];
|
||||||
|
aa.destroy(); // Totali lineari (singolo e generale)
|
||||||
|
}
|
||||||
|
|
||||||
|
get_cursor(_cur1)->set_filterfunction(fil_function,TRUE);
|
||||||
|
get_cursor(_cur2)->set_filterfunction(fil_function,TRUE);
|
||||||
|
get_cursor(_cur3)->set_filterfunction(fil_function,TRUE);
|
||||||
|
get_cursor(_cur4)->set_filterfunction(fil_function,TRUE);
|
||||||
|
_last_game.cut(0);
|
||||||
|
|
||||||
|
TRectype filter_from(LF_PARTITE), filter_to(LF_PARTITE);
|
||||||
|
|
||||||
|
switch (_tipost)
|
||||||
|
{
|
||||||
|
case clienti:
|
||||||
|
case fornitori:
|
||||||
|
filter_from.put("TIPOC", _tipost == clienti ? "C" : "F");
|
||||||
|
filter_to = filter_from;
|
||||||
|
if (_ordcod) // Per codice...
|
||||||
|
{
|
||||||
|
select_cursor(_cur1);
|
||||||
|
get_cursor(_cur1)->setregion(filter_from, filter_to);
|
||||||
|
}
|
||||||
|
else // ... e ragione sociale
|
||||||
|
{
|
||||||
|
select_cursor(_cur2);
|
||||||
|
get_cursor(_cur2)->setregion(filter_from, filter_to);
|
||||||
|
}
|
||||||
|
add_file(LF_PARTITE);
|
||||||
|
add_file(LF_CLIFO,LF_PARTITE);
|
||||||
|
break;
|
||||||
|
case altri:
|
||||||
|
filter_to.put("TIPOC", "A"); // Sporco trucco per selezionare solo i conti
|
||||||
|
if (_ordcod) // Per codice...
|
||||||
|
{
|
||||||
|
select_cursor(_cur3);
|
||||||
|
get_cursor(_cur3)->setregion(filter_from, filter_to); // Filtro per i conti normali!
|
||||||
|
}
|
||||||
|
else // ... e descrizione
|
||||||
|
{
|
||||||
|
select_cursor(_cur4);
|
||||||
|
get_cursor(_cur4)->setregion(filter_from, filter_to); // Filtro per i conti normali!
|
||||||
|
}
|
||||||
|
add_file(LF_PARTITE);
|
||||||
|
add_file(LF_PCON,LF_PARTITE);
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
} // End of inner switch
|
||||||
|
|
||||||
|
int limiti[2][NUMERO_FASCE] = LIMITI;
|
||||||
|
int row = 0;
|
||||||
|
if (_tipost == fornitori)
|
||||||
|
row = 1;
|
||||||
|
for (int j = 0; j < NUMERO_FASCE; j++)
|
||||||
|
{
|
||||||
|
long inc = (long) limiti[row][j];
|
||||||
|
TDate* d = (TDate *)_s_date.objptr(j);
|
||||||
|
|
||||||
|
if (j < _sfasce)
|
||||||
|
*d = _limscad - inc;
|
||||||
|
else
|
||||||
|
*d = NULLDATE;
|
||||||
|
TDate* dns = (TDate *)_ns_date.objptr(j);
|
||||||
|
if (j < _nsfasce)
|
||||||
|
*dns = _limscad + inc;
|
||||||
|
else
|
||||||
|
*dns = NULLDATE;
|
||||||
|
}
|
||||||
|
} // End if
|
||||||
|
return rt;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TProspettoScadenze::print_totali_rows(int& nriga, bool what)
|
||||||
|
// If what is 0 prints single total... else prints also general total
|
||||||
|
{
|
||||||
|
reset_print();
|
||||||
|
TAssoc_array& xassoc = (TAssoc_array&) _t[what];
|
||||||
|
TString_array as;
|
||||||
|
const int items = xassoc.items();
|
||||||
|
xassoc.get_keys(as);
|
||||||
|
as.sort();
|
||||||
|
for (int i=0; i < items; i++)
|
||||||
|
{
|
||||||
|
if (!what)
|
||||||
|
calcola_saldo();
|
||||||
|
TString k(as.row(i)); // Chiave di ordinamento(valuta)
|
||||||
|
TString value;
|
||||||
|
TLineTotal& v = (TLineTotal&)xassoc[k];
|
||||||
|
|
||||||
|
int pos = 60;
|
||||||
|
TString rw(255);
|
||||||
|
rw = "";
|
||||||
|
|
||||||
|
if (_sinfasce)
|
||||||
|
{
|
||||||
|
if (v._s1 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._s1);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
if (_sfasce >= 1)
|
||||||
|
pos = pos + 16;
|
||||||
|
|
||||||
|
if (v._s2 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._s2);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
if (_sfasce >= 2)
|
||||||
|
pos = pos + 16;
|
||||||
|
|
||||||
|
if (v._s3 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._s3);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
if (_sfasce >= 3)
|
||||||
|
pos = pos + 16;
|
||||||
|
|
||||||
|
if (v._s4 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._s4);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
if (_sfasce >= 4)
|
||||||
|
pos = pos + 16;
|
||||||
|
|
||||||
|
if (v._s5 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._s5);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
if (_sfasce >= 5)
|
||||||
|
pos = pos + 16;
|
||||||
|
}
|
||||||
|
if (v._s6 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._s6);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
pos = pos + 16;
|
||||||
|
|
||||||
|
if (_nsinfasce)
|
||||||
|
{
|
||||||
|
if (v._ns1 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._ns1);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
if (_nsfasce >= 1)
|
||||||
|
pos = pos + 16;
|
||||||
|
|
||||||
|
if (v._ns2 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._ns2);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
if (_nsfasce >= 2)
|
||||||
|
pos = pos + 16;
|
||||||
|
|
||||||
|
if (v._ns3 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._ns3);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
if (_nsfasce >= 3)
|
||||||
|
pos = pos + 16;
|
||||||
|
|
||||||
|
if (v._ns4 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._ns4);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
if (_nsfasce >= 4)
|
||||||
|
pos = pos + 16;
|
||||||
|
|
||||||
|
if (v._ns5 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._ns5);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
if (_nsfasce >= 5)
|
||||||
|
pos = pos + 16;
|
||||||
|
}
|
||||||
|
if (v._ns6 != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._ns6);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
pos = pos + 16;
|
||||||
|
const real tot = v._s1+v._s2+v._s3+v._s4+v._s5+v._s6+v._ns1+v._ns2+v._ns3+v._ns4+v._ns5+v._ns6;
|
||||||
|
if (tot != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, tot);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
pos = pos + 16;
|
||||||
|
if (v._es != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._es);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
pos = pos + 16;
|
||||||
|
if (v._sl != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, v._sl);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
pos = pos + 16;
|
||||||
|
|
||||||
|
if (!what)
|
||||||
|
{
|
||||||
|
const real diff = tot - v._sl;
|
||||||
|
if (diff != ZERO)
|
||||||
|
{
|
||||||
|
print_real(value, diff);
|
||||||
|
rw << format("@%dg%15s", pos, (const char*) value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rw.not_empty())
|
||||||
|
{
|
||||||
|
if (!what)
|
||||||
|
rw.insert(format("%6s@8g%s", (const char*) _cod_pre, (const char*) _des_pre));
|
||||||
|
else
|
||||||
|
rw.insert("TOTALE GENERALE");
|
||||||
|
set_row(nriga, rw);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xassoc.destroy(); // Distrugge il totale appena stampato
|
||||||
|
}
|
||||||
|
|
||||||
|
void TProspettoScadenze::print_totali(int& nriga)
|
||||||
|
{
|
||||||
|
reset_row(nriga);
|
||||||
|
//set_row(nriga++,"");
|
||||||
|
//reset_row(nriga);
|
||||||
|
print_totali_rows(nriga,0);
|
||||||
|
//set_row(++nriga,"");
|
||||||
|
//nriga++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TProspettoScadenze::print_header()
|
||||||
|
// Setta le righe dell'intestazione
|
||||||
|
{
|
||||||
|
int soh = 1;
|
||||||
|
const long firm = get_firm();
|
||||||
|
TString rw(255);
|
||||||
|
|
||||||
|
reset_header ();
|
||||||
|
TLocalisamfile ditte(LF_NDITTE);
|
||||||
|
ditte.zero();
|
||||||
|
ditte.put(NDT_CODDITTA, firm);
|
||||||
|
ditte.read();
|
||||||
|
if (ditte.bad()) ditte.zero();
|
||||||
|
|
||||||
|
TString s;
|
||||||
|
s = ditte.get(NDT_RAGSOC);
|
||||||
|
TString datas = _datas.string();
|
||||||
|
TString limop = _limop.string();
|
||||||
|
TString limscad = _limscad.string();
|
||||||
|
|
||||||
|
set_header (soh++, "Ditta : %ld %s@158gData@163g%s @190gPag. @#",
|
||||||
|
firm, (const char *)s, (const char *)datas);
|
||||||
|
|
||||||
|
switch (_tipost)
|
||||||
|
{
|
||||||
|
case fornitori:
|
||||||
|
case clienti:
|
||||||
|
{
|
||||||
|
TString s1,s2, s3;
|
||||||
|
int o = 0; // Offset per scaglioni.
|
||||||
|
if (_tipost==fornitori)
|
||||||
|
set_header(soh++,"@72g** PROSPETTO SCADENZE FORNITORI **");
|
||||||
|
else
|
||||||
|
set_header(soh++,"@73g** PROSPETTO SCADENZE CLIENTI **");
|
||||||
|
set_header (soh++,"@68gAl %s - Operazioni al %s",(const char*)limscad, (const char*)limop);
|
||||||
|
rw.cut(0);
|
||||||
|
rw.fill('-');
|
||||||
|
set_header(soh++, (const char *) rw);
|
||||||
|
set_header(soh,"CODICE@8gC O G N O M E E N O M E ");
|
||||||
|
int limiti[2][NUMERO_FASCE] = LIMITI;
|
||||||
|
int row = 0;
|
||||||
|
if (_tipost==fornitori)
|
||||||
|
row = 1;
|
||||||
|
int pos = 60;
|
||||||
|
rw = "";
|
||||||
|
if (_sinfasce)
|
||||||
|
{
|
||||||
|
rw << format("@%dg%15s", pos, "0 gg");
|
||||||
|
for (int i = 0; i < _sfasce; i++)
|
||||||
|
{
|
||||||
|
pos = pos + 16;
|
||||||
|
rw << format("@%dg%12d gg", pos, limiti[row][i]);
|
||||||
|
}
|
||||||
|
set_header(soh, format("@%dg%15s", 60+((pos-60)/2)-4, "SCADUTO"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
set_header(soh, format("@%dg%15s", pos, "SCADUTO"));
|
||||||
|
pos = pos + 16;
|
||||||
|
const int pos_ascad = pos;
|
||||||
|
if (_nsinfasce)
|
||||||
|
{
|
||||||
|
rw << format("@%dg%15s", pos, "0 gg");
|
||||||
|
for (int i = 0; i < _nsfasce; i++)
|
||||||
|
{
|
||||||
|
pos = pos + 16;
|
||||||
|
rw << format("@%dg%12d gg", pos, limiti[row][i]);
|
||||||
|
}
|
||||||
|
set_header(soh, format("@%dg%15s", pos_ascad+((pos-pos_ascad)/2)-5, "A SCADERE"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
set_header(soh, format("@%dg%15s", pos, "A SCADERE"));
|
||||||
|
pos = pos + 16;
|
||||||
|
set_header(soh, format("@%dg%15s", pos, "TOTALE"));
|
||||||
|
pos = pos + 16;
|
||||||
|
set_header(soh, format("@%dg%15s", pos, "ESPOSTO"));
|
||||||
|
pos = pos + 16;
|
||||||
|
set_header(soh, format("@%dg%15s", pos, "SALDO"));
|
||||||
|
pos = pos + 16;
|
||||||
|
set_header(soh, format("@%dg%15s", pos, "DIFFERENZA"));
|
||||||
|
set_header(++soh,(const char *)rw);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case altri: // Piano dei conti
|
||||||
|
{
|
||||||
|
set_header(soh++,"@79g** SCADENZE **");
|
||||||
|
set_header (soh++,"@68gAl %s - Operazioni al %s",(const char*)limscad, (const char*)limop);
|
||||||
|
rw.fill('-');
|
||||||
|
set_header(soh++, (const char *) rw);
|
||||||
|
set_header(soh++,"CONTO@16gD E S C R I Z I O N E");
|
||||||
|
set_header(soh++,(const char *)rw);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
set_header(soh,"");
|
||||||
|
}
|
||||||
|
|
||||||
|
void TProspettoScadenze::set_page(int file, int counter)
|
||||||
|
{
|
||||||
|
print_header();
|
||||||
|
}
|
||||||
|
|
||||||
|
TProspettoScadenze::TProspettoScadenze()
|
||||||
|
{
|
||||||
|
_rel1=_rel2=NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sc2600(int argc, char** argv)
|
||||||
|
{
|
||||||
|
TProspettoScadenze app;
|
||||||
|
app.run(argc, argv, "Stampa Prospetto Scadenze");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
14
sc/sc2600.h
Executable file
14
sc/sc2600.h
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#include "scselmsk.h"
|
||||||
|
|
||||||
|
#define F_CODDITTA 101
|
||||||
|
#define F_RAGSOC 102
|
||||||
|
#define F_DATASTAMPA 103
|
||||||
|
#define F_DATAOPERAZIONE 104
|
||||||
|
#define F_DATASCADUTO 105
|
||||||
|
#define F_GIORNI 106
|
||||||
|
#define F_VALUTA 107
|
||||||
|
#define F_SCADINFASCE 201
|
||||||
|
#define F_SCADFASCE 202
|
||||||
|
#define F_ASCADINFASCE 203
|
||||||
|
#define F_ASCADFASCE 204
|
||||||
|
|
||||||
227
sc/sc2600a.uml
Executable file
227
sc/sc2600a.uml
Executable file
@ -0,0 +1,227 @@
|
|||||||
|
#include "sc2600.h"
|
||||||
|
|
||||||
|
PAGE "Stampa Prospetto Scadenze" -1 -1 78 20
|
||||||
|
|
||||||
|
NUMBER F_CODDITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "Cod. "
|
||||||
|
FLAGS "DFR"
|
||||||
|
USE LF_NDITTE
|
||||||
|
INPUT CODDITTA F_CODDITTA
|
||||||
|
OUTPUT F_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSOC 50 46
|
||||||
|
BEGIN
|
||||||
|
PROMPT 14 1 "R.S. "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 68 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATASTAMPA
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Data di stampa "
|
||||||
|
HELP "Data di stampa"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Si deve specificare la data di stampa"
|
||||||
|
FLAGS "A"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATAOPERAZIONE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Data limite operazione "
|
||||||
|
HELP "Data limite operazione"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FLAGS "A"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATASCADUTO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Data limite scaduto "
|
||||||
|
HELP "Data limite scaduto"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Data limite scaduto non valida"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_GIORNI 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Giorni per calcolo rischio "
|
||||||
|
HELP "Inserire il numero di giorni per il calcolo del rischio"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_VALUTA
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Stampa in valuta"
|
||||||
|
HELP "Selezionare se si vuole la stampa in valuta"
|
||||||
|
END
|
||||||
|
|
||||||
|
RADIOBUTTON SC_CLIFO 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 9 "Selezione"
|
||||||
|
ITEM "C|Clienti" MESSAGE ENABLE, F_GIORNI|K_SPACE,SC_SORTCF
|
||||||
|
ITEM "F|Fornitori" MESSAGE DISABLE, F_GIORNI|K_SPACE,SC_SORTCF
|
||||||
|
//ITEM "P|Conti" MESSAGE DISABLE, F_GIORNI|K_SPACE,SC_SORTCF
|
||||||
|
END
|
||||||
|
|
||||||
|
RADIOBUTTON SC_SORTCF 29
|
||||||
|
BEGIN
|
||||||
|
GROUP 1
|
||||||
|
PROMPT 23 9 "Ordinamento"
|
||||||
|
ITEM "1|Per codice/conto"
|
||||||
|
ITEM "2|Per rag.soc./descrizione"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON SC_SELECT 10 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 55 10 "S~elezione"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON SC_RESET 10 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 55 11 "A~zzera"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER SC_CFCODFR 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Da codice "
|
||||||
|
FLAGS "B"
|
||||||
|
GROUP 3
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER SC_CFCODTO 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 37 14 "a codice "
|
||||||
|
FLAGS "B"
|
||||||
|
GROUP 3
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING SC_CFDESFR 50 40
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Da ragione sociale "
|
||||||
|
GROUP 4
|
||||||
|
FLAGS "HB"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING SC_CFDESTO 50 40
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 "A ragione sociale "
|
||||||
|
GROUP 4
|
||||||
|
FLAGS "HB"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER SC_PCONCODFR1 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Da conto "
|
||||||
|
GROUP 5
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER SC_PCONCODFR2 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 15 14 ""
|
||||||
|
GROUP 5
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER SC_PCONCODFR3 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 19 14 ""
|
||||||
|
FLAGS "B"
|
||||||
|
GROUP 5
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER SC_PCONCODTO1 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 31 14 "a conto "
|
||||||
|
GROUP 5
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER SC_PCONCODTO2 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 43 14 ""
|
||||||
|
GROUP 5
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER SC_PCONCODTO3 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 47 14 ""
|
||||||
|
FLAGS "B"
|
||||||
|
GROUP 5
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING SC_PCONDESFR 50 40
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Da descrizione "
|
||||||
|
GROUP 6
|
||||||
|
FLAGS "HB"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING SC_PCONDESTO 50 40
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 "A descrizione "
|
||||||
|
GROUP 6
|
||||||
|
FLAGS "HB"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER SC_NSEL 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 60 13 "N. "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_SCADINFASCE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 16 "Scaduto suddiviso in fasce"
|
||||||
|
HELP "Selezionare se si vuole la stampa scaduto suddiviso in fasce"
|
||||||
|
MESSAGE TRUE ENABLE,F_SCADFASCE
|
||||||
|
MESSAGE FALSE RESET,F_SCADFASCE|DISABLE,F_SCADFASCE
|
||||||
|
END
|
||||||
|
|
||||||
|
LISTBOX F_SCADFASCE 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 16 "Fino alla fascia "
|
||||||
|
ITEM "0|0"
|
||||||
|
ITEM "1|30"
|
||||||
|
ITEM "2|60"
|
||||||
|
ITEM "3|90"
|
||||||
|
ITEM "4|120"
|
||||||
|
ITEM "5|150"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_ASCADINFASCE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 17 "A scadere suddiviso in fasce"
|
||||||
|
HELP "Selezionare se si vuole la stampa a scadere suddiviso in fasce"
|
||||||
|
MESSAGE TRUE ENABLE,F_ASCADFASCE
|
||||||
|
MESSAGE FALSE RESET,F_ASCADFASCE|DISABLE,F_ASCADFASCE
|
||||||
|
END
|
||||||
|
|
||||||
|
LISTBOX F_ASCADFASCE 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 17 "Fino alla fascia "
|
||||||
|
ITEM "0|0"
|
||||||
|
ITEM "1|30"
|
||||||
|
ITEM "2|60"
|
||||||
|
ITEM "3|90"
|
||||||
|
ITEM "4|120"
|
||||||
|
ITEM "5|150"
|
||||||
|
NUM_EXPR {#F_SCADFASCE+#F_ASCADFASCE<7}
|
||||||
|
WARNING "E' possibile selezionare massimo 6 fasce in totale"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_PRINT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -1 ""
|
||||||
|
MESSAGE EXIT,K_ENTER
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
ENDMASK
|
||||||
@ -49,6 +49,7 @@
|
|||||||
#define H_DOC 166
|
#define H_DOC 166
|
||||||
#define F_AGGIORNA_TESTATA 167
|
#define F_AGGIORNA_TESTATA 167
|
||||||
#define F_ORDINA 168
|
#define F_ORDINA 168
|
||||||
|
#define F_PROTOCOLLO 169
|
||||||
|
|
||||||
#define F_CAMBIO 201
|
#define F_CAMBIO 201
|
||||||
#define F_SCONTO 202
|
#define F_SCONTO 202
|
||||||
|
|||||||
@ -488,17 +488,20 @@ BEGIN
|
|||||||
MESSAGE TRUE ENABLE,F_PROVVISORIO
|
MESSAGE TRUE ENABLE,F_PROVVISORIO
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 35 5
|
BOOLEAN F_PROVVISORIO 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 44 13 "@bTipo numerazione"
|
PROMPT 45 13 "Genera documento provvisorio"
|
||||||
|
FIELD B5
|
||||||
END
|
END
|
||||||
|
|
||||||
RADIOBUTTON F_PROVVISORIO 20
|
RADIOBUTTON F_PROTOCOLLO 1 38
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 44 13 ""
|
PROMPT 44 14 "@bProtocollo IVA"
|
||||||
ITEM " |Definitiva"
|
ITEM " |Da numero documento"
|
||||||
ITEM "X|Provvisioria"
|
ITEM "X|Da registro IVA"
|
||||||
FIELD B4
|
FIELD B4
|
||||||
|
GROUP 3
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_AGGIORNA_TESTATA
|
BOOLEAN F_AGGIORNA_TESTATA
|
||||||
|
|||||||
@ -592,6 +592,30 @@ BEGIN
|
|||||||
GROUP 20
|
GROUP 20
|
||||||
END
|
END
|
||||||
|
|
||||||
|
LIST F_GEN_EAN 2 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 17 "Genera il codice articolo con "
|
||||||
|
ITEM " |Nulla" MESSAGE ENABLE,F_EAN8|ENABLE,F_EAN13
|
||||||
|
ITEM "08|EAN 8" MESSAGE ENABLE,F_EAN8|CLEAR,F_EAN13
|
||||||
|
ITEM "13|EAN 13" MESSAGE CLEAR,F_EAN8|ENABLE,F_EAN13
|
||||||
|
FIELD GEN_EAN
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_EAN8 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 45 17 "Prefisso : EAN 8 "
|
||||||
|
FIELD EAN8
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_EAN13 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 67 17 "EAN 13 "
|
||||||
|
FIELD EAN13
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
18
ve/ve1100.h
18
ve/ve1100.h
@ -1,15 +1,15 @@
|
|||||||
#define F_CODNUM 101
|
#define F_CODNUM 121
|
||||||
#define F_ANNO 102
|
#define F_ANNO 122
|
||||||
#define F_PROVV 103
|
#define F_PROVV 123
|
||||||
#define F_NCOPIE 104
|
#define F_NCOPIE 124
|
||||||
|
|
||||||
#define F_DATA_O_NUM 105
|
#define F_DATA_O_NUM 125
|
||||||
|
|
||||||
#define F_DA_NDOC 106
|
#define F_DA_NDOC 126
|
||||||
#define F_A_NDOC 107
|
#define F_A_NDOC 127
|
||||||
|
|
||||||
#define F_DA_DATADOC 108
|
#define F_DA_DATADOC 128
|
||||||
#define F_A_DATADOC 109
|
#define F_A_DATADOC 129
|
||||||
|
|
||||||
#define F_TIPOCF 110
|
#define F_TIPOCF 110
|
||||||
#define F_CODFR 111
|
#define F_CODFR 111
|
||||||
|
|||||||
201
ve/ve2400.cpp
201
ve/ve2400.cpp
@ -14,6 +14,8 @@
|
|||||||
#include "..\cg\cglib01.h"
|
#include "..\cg\cglib01.h"
|
||||||
#include "..\mg\mglib.h"
|
#include "..\mg\mglib.h"
|
||||||
#include "..\mg\stomag.h"
|
#include "..\mg\stomag.h"
|
||||||
|
#include "..\mg\anamag.h"
|
||||||
|
#include "..\mg\codcorr.h"
|
||||||
|
|
||||||
// maschera dell'anagrafica di magazzino
|
// maschera dell'anagrafica di magazzino
|
||||||
class TMask_anamag: public TMask {
|
class TMask_anamag: public TMask {
|
||||||
@ -24,6 +26,11 @@ class TMask_anamag: public TMask {
|
|||||||
int last_annogiac;
|
int last_annogiac;
|
||||||
int last_annosto;
|
int last_annosto;
|
||||||
|
|
||||||
|
int _type_cod;
|
||||||
|
TString16 _ean8_pref;
|
||||||
|
TString16 _ean13_pref;
|
||||||
|
TString16 _generated_code;
|
||||||
|
|
||||||
TString16 _um_principale;
|
TString16 _um_principale;
|
||||||
TMagazzini *_magazzini;
|
TMagazzini *_magazzini;
|
||||||
TEsercizi_contabili *_esercizi_contabili;
|
TEsercizi_contabili *_esercizi_contabili;
|
||||||
@ -37,6 +44,7 @@ class TMask_anamag: public TMask {
|
|||||||
static bool notify_sheet_um(TSheet_field & s, int r, KEY k); // notify dello sheet delle unità di misura
|
static bool notify_sheet_um(TSheet_field & s, int r, KEY k); // notify dello sheet delle unità di misura
|
||||||
static bool handle_sheet_deslin(TMask_field &, KEY); // handler dello sheet delle descrizioni in lingua
|
static bool handle_sheet_deslin(TMask_field &, KEY); // handler dello sheet delle descrizioni in lingua
|
||||||
static bool handle_sheet_cod(TMask_field &, KEY); // handler dello sheet dei codici alternativi
|
static bool handle_sheet_cod(TMask_field &, KEY); // handler dello sheet dei codici alternativi
|
||||||
|
static bool handle_codcorr(TMask_field &, KEY); // handler dello sheet dei codici alternativi
|
||||||
static bool notify_sheet_giac(TSheet_field & s, int r, KEY k); // notify delle giacenze
|
static bool notify_sheet_giac(TSheet_field & s, int r, KEY k); // notify delle giacenze
|
||||||
static bool handle_sheetgiac(TMask_field &, KEY); // handler dello sheet giacenze
|
static bool handle_sheetgiac(TMask_field &, KEY); // handler dello sheet giacenze
|
||||||
static bool notify_sheet_sto(TSheet_field & s, int r, KEY k); // notify dello storico
|
static bool notify_sheet_sto(TSheet_field & s, int r, KEY k); // notify dello storico
|
||||||
@ -59,12 +67,15 @@ class TMask_anamag: public TMask {
|
|||||||
bool remove_totali_storico(TString & codmag);
|
bool remove_totali_storico(TString & codmag);
|
||||||
void update_totali_storico(TString & codmag);
|
void update_totali_storico(TString & codmag);
|
||||||
bool check_totali_storico();
|
bool check_totali_storico();
|
||||||
|
bool generate_code(int _type = 0);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void update_ordc_ordf();
|
void update_ordc_ordf();
|
||||||
void set_parametered_fields();
|
void set_parametered_fields();
|
||||||
void ricalcola_giacenze();
|
void ricalcola_giacenze();
|
||||||
|
|
||||||
TString16 &um_principale() {return _um_principale;}
|
TString &generated_code() {return _generated_code;}
|
||||||
|
TString16 &um_principale() {return _um_principale;}
|
||||||
TMagazzini & magazzini() {return *_magazzini;}
|
TMagazzini & magazzini() {return *_magazzini;}
|
||||||
TEsercizi_contabili &esercizi_contabili() {return *_esercizi_contabili;}
|
TEsercizi_contabili &esercizi_contabili() {return *_esercizi_contabili;}
|
||||||
|
|
||||||
@ -204,35 +215,16 @@ void TMask_anamag::set_parametered_fields()
|
|||||||
enable_page(PAGE_STORICO,gestmag);
|
enable_page(PAGE_STORICO,gestmag);
|
||||||
|
|
||||||
// abilita la visualizzazione dei campi distinti per i livelli articolo
|
// abilita la visualizzazione dei campi distinti per i livelli articolo
|
||||||
if (FALSE)
|
set_handler(F_CODART, handle_codice);
|
||||||
|
if (livelli_art->enabled())
|
||||||
{
|
{
|
||||||
field(F_CODART).hide();
|
for (int i=0; i<9; i++)
|
||||||
field(F_GCA).hide();
|
field(F_LIVART1+i).hide();
|
||||||
|
if (!livelli_art->enabled(2))
|
||||||
for (int i=0; i<3; i++)
|
field(F_GCA).hide();
|
||||||
{
|
|
||||||
// versione con campi predefiniti sulla maschera
|
|
||||||
if (livelli_art->enabled(1+i)) {
|
|
||||||
field(F_LIVART1+i).show();
|
|
||||||
field(F_LIVART1+livelli_giac->last_level()-1).check_type(1+i==livelli_art->last_level() ? CHECK_NONE : CHECK_REQUIRED);
|
|
||||||
((TEdit_field&)field(F_LIVART1+livelli_giac->last_level()-1)).set_width(livelli_art->code_length(1+i));
|
|
||||||
set_handler(F_LIVART1+i, handle_livart);
|
|
||||||
} else {
|
|
||||||
field(F_LIVART1+i).hide();
|
|
||||||
field(F_LIVART1+livelli_giac->last_level()-1).check_type(CHECK_NONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (livelli_art->enabled())
|
|
||||||
{
|
|
||||||
set_handler(F_CODART, handle_codice);
|
|
||||||
for (int i=0; i<9; i++)
|
|
||||||
field(F_LIVART1+i).hide();
|
|
||||||
if (!livelli_art->enabled(2))
|
|
||||||
field(F_GCA).hide();
|
|
||||||
} else
|
|
||||||
field(F_GCA).hide();
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
field(F_GCA).hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
// costruttore della maschera anagrafica di magazzino
|
// costruttore della maschera anagrafica di magazzino
|
||||||
@ -256,6 +248,9 @@ TMask_anamag::TMask_anamag(TRelation * rel) : TMask("ve2400")
|
|||||||
set_handler(F_SHEETDESLIN, handle_sheet_deslin);
|
set_handler(F_SHEETDESLIN, handle_sheet_deslin);
|
||||||
// sheet codici corrispondenti
|
// sheet codici corrispondenti
|
||||||
set_handler(F_SHEETCOD, handle_sheet_cod);
|
set_handler(F_SHEETCOD, handle_sheet_cod);
|
||||||
|
TSheet_field &fc= sfield(F_SHEETCOD);
|
||||||
|
TMask &fmc = fc.sheet_mask();
|
||||||
|
fmc.set_handler(FS_CODARTALT, handle_codcorr);
|
||||||
|
|
||||||
livelli_giac = NULL;
|
livelli_giac = NULL;
|
||||||
livelli_art = NULL;
|
livelli_art = NULL;
|
||||||
@ -298,6 +293,9 @@ TMask_anamag::TMask_anamag(TRelation * rel) : TMask("ve2400")
|
|||||||
disable_user_page = FALSE;
|
disable_user_page = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_type_cod = c.get_int("GEN_EAN");
|
||||||
|
_ean8_pref = c.get("EAN8");
|
||||||
|
_ean13_pref = c.get("EAN13");
|
||||||
|
|
||||||
if (disable_user_page)
|
if (disable_user_page)
|
||||||
disable_page(PAGE_USER);
|
disable_page(PAGE_USER);
|
||||||
@ -383,12 +381,124 @@ bool TMask_anamag::handle_autoinsert_livgiac(TMask_field &fld, KEY k)
|
|||||||
|
|
||||||
|
|
||||||
// HANDLER DEL CODICE: controlla la corrispondenza al formato previsto
|
// HANDLER DEL CODICE: controlla la corrispondenza al formato previsto
|
||||||
|
bool TMask_anamag::generate_code(int type)
|
||||||
|
{
|
||||||
|
if (type == 0)
|
||||||
|
{
|
||||||
|
type = _type_cod;
|
||||||
|
if (type == 0)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (_type_cod != 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
TString cod(20);
|
||||||
|
TLocalisamfile anamag(LF_ANAMAG);
|
||||||
|
long progr = 0;
|
||||||
|
|
||||||
|
if (type == 8)
|
||||||
|
{
|
||||||
|
if (_ean8_pref.empty())
|
||||||
|
return FALSE;
|
||||||
|
cod = _ean8_pref;
|
||||||
|
cod << "999";
|
||||||
|
if (_type_cod != 0)
|
||||||
|
{
|
||||||
|
anamag.put(ANAMAG_CODART, cod);
|
||||||
|
|
||||||
|
if (anamag.read(_isgteq) != _isemptyfile)
|
||||||
|
{
|
||||||
|
cod = anamag.get(ANAMAG_CODART);
|
||||||
|
|
||||||
|
if (_ean8_pref < cod.left(4))
|
||||||
|
{
|
||||||
|
anamag.prev();
|
||||||
|
cod = anamag.get(ANAMAG_CODART);
|
||||||
|
}
|
||||||
|
if (_ean8_pref == cod.left(4))
|
||||||
|
progr = atol(cod.right(3));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TLocalisamfile codcorr(LF_CODCORR);
|
||||||
|
|
||||||
|
codcorr.setkey(2);
|
||||||
|
codcorr.put(CODCORR_CODARTALT, cod);
|
||||||
|
|
||||||
|
if (codcorr.read(_isgteq) != _isemptyfile)
|
||||||
|
{
|
||||||
|
cod = codcorr.get(CODCORR_CODARTALT);
|
||||||
|
|
||||||
|
if (_ean8_pref < cod.left(4))
|
||||||
|
{
|
||||||
|
codcorr.prev();
|
||||||
|
cod = codcorr.get(CODCORR_CODARTALT);
|
||||||
|
}
|
||||||
|
if (_ean8_pref == cod.left(4))
|
||||||
|
progr = atol(cod.right(3));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
progr++;
|
||||||
|
_generated_code.format("%s%03ld", (const char *)_ean8_pref, progr);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_ean13_pref.empty())
|
||||||
|
return FALSE;
|
||||||
|
cod = _ean13_pref;
|
||||||
|
cod << "999999";
|
||||||
|
if (_type_cod != 0)
|
||||||
|
{
|
||||||
|
anamag.put(ANAMAG_CODART, cod);
|
||||||
|
|
||||||
|
if (anamag.read(_isgteq) != _isemptyfile)
|
||||||
|
{
|
||||||
|
cod = anamag.get(ANAMAG_CODART);
|
||||||
|
|
||||||
|
if (_ean13_pref < cod.left(6))
|
||||||
|
{
|
||||||
|
anamag.prev();
|
||||||
|
cod = anamag.get(ANAMAG_CODART);
|
||||||
|
}
|
||||||
|
if (_ean13_pref == cod.left(6))
|
||||||
|
progr = atol(cod.right(6));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TLocalisamfile codcorr(LF_CODCORR);
|
||||||
|
|
||||||
|
codcorr.setkey(2);
|
||||||
|
codcorr.put(CODCORR_CODARTALT, cod);
|
||||||
|
|
||||||
|
if (codcorr.read(_isgteq) != _isemptyfile)
|
||||||
|
{
|
||||||
|
cod = codcorr.get(CODCORR_CODARTALT);
|
||||||
|
|
||||||
|
if (_ean13_pref < cod.left(6))
|
||||||
|
{
|
||||||
|
codcorr.prev();
|
||||||
|
cod = codcorr.get(CODCORR_CODARTALT);
|
||||||
|
}
|
||||||
|
if (_ean13_pref == cod.left(6))
|
||||||
|
progr = atol(cod.right(6));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
progr++;
|
||||||
|
_generated_code.format("%s%06ld", (const char *)_ean13_pref, progr);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
bool TMask_anamag::handle_codice(TMask_field &fld, KEY k)
|
bool TMask_anamag::handle_codice(TMask_field &fld, KEY k)
|
||||||
{
|
{
|
||||||
TMask_anamag &mask=(TMask_anamag &)fld.mask();
|
TMask_anamag &mask=(TMask_anamag &)fld.mask();
|
||||||
|
|
||||||
TString codepart;
|
TString codepart;
|
||||||
if (k == K_TAB && !fld.get().blank()) {
|
if (k == K_TAB && !fld.get().blank() && mask.livelli_art->enabled())
|
||||||
|
{
|
||||||
int l;
|
int l;
|
||||||
TTable _tabgrp("GCA");
|
TTable _tabgrp("GCA");
|
||||||
for (l=1; l<mask.livelli_art->last_level(); l++) {
|
for (l=1; l<mask.livelli_art->last_level(); l++) {
|
||||||
@ -411,6 +521,14 @@ bool TMask_anamag::handle_codice(TMask_field &fld, KEY k)
|
|||||||
return(FALSE);
|
return(FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (k == K_F8)
|
||||||
|
{
|
||||||
|
if (mask.generate_code())
|
||||||
|
{
|
||||||
|
fld.set(mask.generated_code());
|
||||||
|
mask.stop_run(K_INS);
|
||||||
|
}
|
||||||
|
}
|
||||||
return(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -516,16 +634,6 @@ static bool in_handler = FALSE;
|
|||||||
TMask_anamag &mask=(TMask_anamag &)fld.mask();
|
TMask_anamag &mask=(TMask_anamag &)fld.mask();
|
||||||
TSheet_field &fld_stomag= mask.sfield(F_SHEETSTOMAG);
|
TSheet_field &fld_stomag= mask.sfield(F_SHEETSTOMAG);
|
||||||
|
|
||||||
/*if (mask.get_int(F_STOANNO) >=mask.esercizi_contabili().last())
|
|
||||||
{
|
|
||||||
fld.error_box("Impossibile dare la composizione delle rimanenze per l'ultimo anno");
|
|
||||||
mask.reset(F_STOANNO);
|
|
||||||
}*/
|
|
||||||
/* if (mask.get(F_STOANNO).empty() )
|
|
||||||
{
|
|
||||||
mask.set(F_STOANNORIF, mask.esercizi_contabili().last()) ;
|
|
||||||
mask.set(F_STOANNO, mask.get(F_STOANNORIF));
|
|
||||||
} */
|
|
||||||
if (mask.last_annosto>0 && mask.last_annosto!=fld.mask().get_int(F_STOANNO))
|
if (mask.last_annosto>0 && mask.last_annosto!=fld.mask().get_int(F_STOANNO))
|
||||||
{
|
{
|
||||||
if ((fld_stomag.dirty() || mask.info_sto_dirty()) &&
|
if ((fld_stomag.dirty() || mask.info_sto_dirty()) &&
|
||||||
@ -671,6 +779,21 @@ bool TMask_anamag::handle_sheet_cod(TMask_field &fld, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TMask_anamag::handle_codcorr(TMask_field &fld, KEY k)
|
||||||
|
{
|
||||||
|
if (k == K_F8)
|
||||||
|
{
|
||||||
|
TMask &m = fld.mask(); // prende la maschere d'origine del campo
|
||||||
|
TMask_anamag & mask = (TMask_anamag &) m.get_sheet()->mask();
|
||||||
|
char val = fld.mask().get(FS_TIPO)[0];
|
||||||
|
int type = val == '8' ? 8 : (val == '1' ? 13 : 0);
|
||||||
|
|
||||||
|
if (type > 0 && mask.generate_code(type))
|
||||||
|
fld.set(mask.generated_code());
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
bool TMask_anamag::handle_sheetgiac(TMask_field &fld, KEY k)
|
bool TMask_anamag::handle_sheetgiac(TMask_field &fld, KEY k)
|
||||||
{
|
{
|
||||||
if (k==K_ENTER)
|
if (k==K_ENTER)
|
||||||
|
|||||||
@ -49,7 +49,6 @@ class TContabilizzazione_app : public TApplication
|
|||||||
TDate _data_ini; // data di inizio intervallo
|
TDate _data_ini; // data di inizio intervallo
|
||||||
TDate _data_fine; // data di fine intervallo
|
TDate _data_fine; // data di fine intervallo
|
||||||
bool _auto_data; // se TRUE prende in automatico la data di registrazione dalla data documento
|
bool _auto_data; // se TRUE prende in automatico la data di registrazione dalla data documento
|
||||||
byte _nump_iva;
|
|
||||||
TMask *_msk; // maschera di selezione dati
|
TMask *_msk; // maschera di selezione dati
|
||||||
TArray_sheet *_num_sheet; // Array sheet selezionabile dei codici numerazione
|
TArray_sheet *_num_sheet; // Array sheet selezionabile dei codici numerazione
|
||||||
TString_array _tipi_doc; // Array di stringhe contenente i tipi documenti da elaborare
|
TString_array _tipi_doc; // Array di stringhe contenente i tipi documenti da elaborare
|
||||||
@ -276,7 +275,6 @@ bool TContabilizzazione_app::menu(MENU_TAG mt)
|
|||||||
_data_fine = _msk->get_date(F_DATA_FIN);
|
_data_fine = _msk->get_date(F_DATA_FIN);
|
||||||
_data_reg = _msk->get_date(F_DATA_REG);
|
_data_reg = _msk->get_date(F_DATA_REG);
|
||||||
_auto_data = _msk->get_bool(F_DATA_AUTO);
|
_auto_data = _msk->get_bool(F_DATA_AUTO);
|
||||||
_nump_iva = _msk->get_int(F_SELPROT);
|
|
||||||
contabilize();
|
contabilize();
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -298,7 +296,6 @@ void TContabilizzazione_app::contabilize()
|
|||||||
// Compone la lista dei documenti da elaborare
|
// Compone la lista dei documenti da elaborare
|
||||||
|
|
||||||
cont.set_auto(_auto_data); // Setta il flag per il settaggio automatico della data di registrazione del movimento
|
cont.set_auto(_auto_data); // Setta il flag per il settaggio automatico della data di registrazione del movimento
|
||||||
cont.set_nump(_nump_iva); // Setta il flag per il settaggio del numero di protocollo
|
|
||||||
|
|
||||||
da.put("DATADOC",_data_ini);
|
da.put("DATADOC",_data_ini);
|
||||||
da.put("PROVV","D");
|
da.put("PROVV","D");
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
#include "ve6100a.h"
|
#include "ve6100a.h"
|
||||||
|
|
||||||
PAGE "Contabilizzazione documenti" -1 -1 78 14
|
PAGE "Contabilizzazione documenti" -1 -1 75 10
|
||||||
|
|
||||||
STRING F_CODICE_ELAB 8
|
STRING F_CODICE_ELAB 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Codice elaborazione "
|
PROMPT 1 1 "Codice "
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE %ELD SELECT I0 == 3
|
USE %ELD SELECT I0 == 3
|
||||||
INPUT CODTAB F_CODICE_ELAB
|
INPUT CODTAB F_CODICE_ELAB
|
||||||
@ -12,13 +12,14 @@ BEGIN
|
|||||||
DISPLAY "Descrizione@55" S0
|
DISPLAY "Descrizione@55" S0
|
||||||
OUTPUT F_CODICE_ELAB CODTAB
|
OUTPUT F_CODICE_ELAB CODTAB
|
||||||
OUTPUT F_DESC_ELAB S0
|
OUTPUT F_DESC_ELAB S0
|
||||||
|
OUTPUT F_SELPROT B4
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
WARNING "E' necessario specificare il codice elaborazione"
|
WARNING "E' necessario specificare il codice elaborazione"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESC_ELAB 50 39
|
STRING F_DESC_ELAB 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 35 2 ""
|
PROMPT 20 1 ""
|
||||||
USE %ELD KEY 2 SELECT I0 == 3
|
USE %ELD KEY 2 SELECT I0 == 3
|
||||||
INPUT S0 F_DESC_ELAB
|
INPUT S0 F_DESC_ELAB
|
||||||
DISPLAY "Descrizione@55" S0
|
DISPLAY "Descrizione@55" S0
|
||||||
@ -28,40 +29,41 @@ END
|
|||||||
|
|
||||||
GROUPBOX DLG_NULL 32 4
|
GROUPBOX DLG_NULL 32 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Date intervallo documenti"
|
PROMPT 1 2 "Date intervallo documenti"
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATA_INI
|
DATE F_DATA_INI
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Inizio "
|
PROMPT 2 3 "Inizio "
|
||||||
VALIDATE NOT_EMPTY_FUNC
|
VALIDATE NOT_EMPTY_FUNC
|
||||||
WARNING "La data di inizio intervallo e' obbligatoria"
|
WARNING "La data di inizio intervallo e' obbligatoria"
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATA_FIN
|
DATE F_DATA_FIN
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 "Fine "
|
PROMPT 2 4 "Fine "
|
||||||
VALIDATE NOT_EMPTY_FUNC
|
VALIDATE NOT_EMPTY_FUNC
|
||||||
WARNING "La data di fine intervallo e' obbligatoria"
|
WARNING "La data di fine intervallo e' obbligatoria"
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_DATA_AUTO
|
BOOLEAN F_DATA_AUTO
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 42 5 "Data registrazione automatica"
|
PROMPT 40 3 "Data registrazione automatica"
|
||||||
MESSAGE TRUE CLEAR,F_DATA_REG|"",F_DATA_REG
|
MESSAGE TRUE CLEAR,F_DATA_REG|"",F_DATA_REG
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATA_REG
|
DATE F_DATA_REG
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 42 6 "Data registrazione "
|
PROMPT 40 4 "Data registrazione "
|
||||||
FLAG "D"
|
FLAG "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
RADIOBUTTON F_SELPROT 1 32
|
RADIOBUTTON F_SELPROT 1 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 8 "Selezione numero protocollo"
|
PROMPT 1 6 "Selezione numero protocollo"
|
||||||
ITEM "1|Da registro IVA"
|
ITEM " |Da numero documento"
|
||||||
ITEM "2|Da numero documento"
|
ITEM "X|Da registro IVA"
|
||||||
|
FLAGS "DZ"
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_OK 10 2
|
BUTTON DLG_OK 10 2
|
||||||
|
|||||||
351
ve/ve6300.cpp
351
ve/ve6300.cpp
@ -21,25 +21,23 @@
|
|||||||
// Have you ever heard MK ?
|
// Have you ever heard MK ?
|
||||||
|
|
||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
#include <relation.h>
|
|
||||||
#include <tabutil.h>
|
|
||||||
#include <mask.h>
|
|
||||||
#include <sheet.h>
|
|
||||||
#include <progind.h>
|
|
||||||
#include <modaut.h>
|
#include <modaut.h>
|
||||||
#include <doc.h>
|
#include <progind.h>
|
||||||
|
#include <relation.h>
|
||||||
|
#include <sheet.h>
|
||||||
|
#include <tabutil.h>
|
||||||
#include <urldefid.h>
|
#include <urldefid.h>
|
||||||
|
|
||||||
#include "velib.h"
|
#include "velib.h"
|
||||||
#include "ve6300a.h"
|
#include "ve6300a.h"
|
||||||
|
|
||||||
|
#include <doc.h>
|
||||||
|
|
||||||
// TGenerazioneEffetti_app
|
// TGenerazioneEffetti_app
|
||||||
// Applicazione di generazione effetti
|
// Applicazione di generazione effetti
|
||||||
class TGenerazioneEffetti_app : public TSkeleton_application
|
class TGenerazioneEffetti_app : public TSkeleton_application
|
||||||
{
|
{
|
||||||
TString16 _cod_el; // codice elaborazione immesso
|
TString16 _cod_el; // codice elaborazione immesso
|
||||||
TDate _data_ini; // data di inizio intervallo
|
|
||||||
TDate _data_fine; // data di fine intervallo
|
|
||||||
bool _raggruppa; // se TRUE raggruppa gli effetti secondo i criteri
|
bool _raggruppa; // se TRUE raggruppa gli effetti secondo i criteri
|
||||||
TMask *_msk; // maschera di selezione dati
|
TMask *_msk; // maschera di selezione dati
|
||||||
TBit_array _valid_array; // array dei tipi di pagamento validi per la generazione di effetti
|
TBit_array _valid_array; // array dei tipi di pagamento validi per la generazione di effetti
|
||||||
@ -72,6 +70,9 @@ protected: // TApplication
|
|||||||
static bool handle_data_range(TMask_field& f, KEY k);
|
static bool handle_data_range(TMask_field& f, KEY k);
|
||||||
// Handler del pulsante di selezione codici numerazione
|
// Handler del pulsante di selezione codici numerazione
|
||||||
static bool handle_select(TMask_field& f, KEY k);
|
static bool handle_select(TMask_field& f, KEY k);
|
||||||
|
// Handler del campo numerazione
|
||||||
|
static bool handle_codnum(TMask_field& f, KEY k);
|
||||||
|
|
||||||
// Ritorna il TArray_sheet contenente le selezioni sui codici numerazione
|
// Ritorna il TArray_sheet contenente le selezioni sui codici numerazione
|
||||||
TArray_sheet* get_num_sheet() const { return _num_sheet; }
|
TArray_sheet* get_num_sheet() const { return _num_sheet; }
|
||||||
// Costruisce lo sheet dei codici numerazione
|
// Costruisce lo sheet dei codici numerazione
|
||||||
@ -117,11 +118,28 @@ bool TGenerazioneEffetti_app::handle_data_range(TMask_field& f, KEY k)
|
|||||||
|
|
||||||
bool TGenerazioneEffetti_app::handle_cod_eld(TMask_field& f, KEY k)
|
bool TGenerazioneEffetti_app::handle_cod_eld(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
|
TMask& m = f.mask();
|
||||||
|
|
||||||
|
if (k == K_TAB && !m.is_running())
|
||||||
|
{
|
||||||
|
TEdit_field& e = (TEdit_field&)f;
|
||||||
|
TCursor& cur = *e.browse()->cursor();
|
||||||
|
if (cur.items() > 0)
|
||||||
|
{
|
||||||
|
cur = 0L;
|
||||||
|
const TRectype& eld = cur.curr();
|
||||||
|
app()._cod_el = eld.get("CODTAB");
|
||||||
|
f.set(app()._cod_el);
|
||||||
|
m.set(F_DESC_ELAB, eld.get("S0"));
|
||||||
|
app().build_num_sheet();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (f.to_check(k) && k == K_TAB) // se e' cambiato ricostruisce anche lo sheet dei codici numerazione
|
if (f.to_check(k) && k == K_TAB) // se e' cambiato ricostruisce anche lo sheet dei codici numerazione
|
||||||
{
|
{
|
||||||
app()._cod_el = f.get(); // aggiorna il codice elaborazione per la build_num_sheet()
|
app()._cod_el = f.get(); // aggiorna il codice elaborazione per la build_num_sheet()
|
||||||
f.mask().disable(DLG_OK);
|
|
||||||
app().build_num_sheet();
|
app().build_num_sheet();
|
||||||
|
m.disable(DLG_OK);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -130,12 +148,22 @@ bool TGenerazioneEffetti_app::handle_select(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
if (k == K_SPACE)
|
if (k == K_SPACE)
|
||||||
{
|
{
|
||||||
TMask& m = f.mask();
|
TArray_sheet& s = *app().get_num_sheet();
|
||||||
TArray_sheet* s = app().get_num_sheet();
|
if (s.run())
|
||||||
if (s->run())
|
|
||||||
{
|
{
|
||||||
if (s->checked() != 0) // Hai selezionato qualcosa ?
|
TMask& m = f.mask();
|
||||||
|
if (s.checked() > 0) // Hai selezionato qualcosa ?
|
||||||
|
{
|
||||||
|
// Cerca di proporre la prima numerazione possibile
|
||||||
|
for (long i = 0; i < s.items(); i++) if (s.checked(i))
|
||||||
|
{
|
||||||
|
TToken_string& row = s.row(i);
|
||||||
|
m.set(F_CODNUM, row.get(1));
|
||||||
|
m.set(F_DESCNUM, row.get());
|
||||||
|
break;
|
||||||
|
}
|
||||||
m.enable(DLG_OK); // allora abilita il pulsante di conferma
|
m.enable(DLG_OK); // allora abilita il pulsante di conferma
|
||||||
|
}
|
||||||
else
|
else
|
||||||
m.disable(DLG_OK);
|
m.disable(DLG_OK);
|
||||||
}
|
}
|
||||||
@ -143,30 +171,97 @@ bool TGenerazioneEffetti_app::handle_select(TMask_field& f, KEY k)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TGenerazioneEffetti_app::handle_codnum(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
TMask& m = f.mask();
|
||||||
|
|
||||||
|
if (k == K_F9)
|
||||||
|
return handle_select(m.field(DLG_USER), K_SPACE);
|
||||||
|
|
||||||
|
if (k == K_TAB && f.focusdirty() && !f.empty())
|
||||||
|
{
|
||||||
|
m.set(F_DESCNUM, cache().get("%NUM", f.get(), "S0"));
|
||||||
|
k = K_ENTER;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (k == K_ENTER)
|
||||||
|
{
|
||||||
|
TArray_sheet& s = *app().get_num_sheet();
|
||||||
|
for (long i = 0; i < s.items(); i++) if (s.row_enabled(i))
|
||||||
|
{
|
||||||
|
TToken_string& row = s.row(i);
|
||||||
|
if (f.get() == row.get(1))
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return error_box("Numerazione non valida");
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void TGenerazioneEffetti_app::build_num_sheet()
|
void TGenerazioneEffetti_app::build_num_sheet()
|
||||||
{
|
{
|
||||||
_num_sheet->destroy();
|
_num_sheet->destroy();
|
||||||
_tipi_doc.destroy();
|
_tipi_doc.destroy();
|
||||||
|
|
||||||
TTable num("%NUM");
|
if (_cod_el.not_empty())
|
||||||
TString s1,s2,s3;
|
|
||||||
|
|
||||||
TContabilizzazione* cont = new TContabilizzazione(_cod_el);
|
|
||||||
if (!cont->empty())
|
|
||||||
{
|
{
|
||||||
TToken_string t;
|
TContabilizzazione* cont = new TContabilizzazione(_cod_el);
|
||||||
TString16 tipo;
|
if (!cont->empty())
|
||||||
_final_doc_status = cont->stato_finale()[0];
|
|
||||||
for (int i=0;i<TElaborazione::_max_tipi_doc_elab;i++)
|
|
||||||
{
|
{
|
||||||
tipo = cont->tipo_iniziale(i);
|
TToken_string t;
|
||||||
if (tipo.not_empty())
|
TString16 tipo;
|
||||||
|
_final_doc_status = cont->stato_finale()[0];
|
||||||
|
for (int i=0;i<TElaborazione::_max_tipi_doc_elab;i++)
|
||||||
{
|
{
|
||||||
t = tipo;
|
tipo = cont->tipo_iniziale(i);
|
||||||
t.add(cont->stato_iniziale(i)); // Stato iniziale
|
if (tipo.not_empty())
|
||||||
_tipi_doc.add(t); // Aggiunge questo tipo documento alla lista
|
{
|
||||||
|
t = tipo;
|
||||||
|
t.add(cont->stato_iniziale(i)); // Stato iniziale
|
||||||
|
_tipi_doc.add(t); // Aggiunge questo tipo documento alla lista
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long pos = 0l;
|
||||||
|
|
||||||
|
TTable num("%NUM");
|
||||||
|
for (num.first();num.good();num.next(),pos++) // scorre tutte le numerazioni possibili
|
||||||
|
{
|
||||||
|
TToken_string t,z;
|
||||||
|
t.add(" ");
|
||||||
|
t.add(num.get("CODTAB"));
|
||||||
|
t.add(num.get("S0"));
|
||||||
|
_num_sheet->add(t);
|
||||||
|
|
||||||
|
const TString& s2 = num.get("S2"); // reperisce i tipi documento validi per questa numerazione
|
||||||
|
for (int x = 0; x <= s2.len(); x += 4)
|
||||||
|
z.add(s2.mid(x,4));
|
||||||
|
|
||||||
|
bool found = FALSE;
|
||||||
|
for (int i = _tipi_doc.last(); !found && i >= 0; i--)
|
||||||
|
found |= z.find(((TToken_string &)_tipi_doc[i]).get(0)) >= 0;
|
||||||
|
|
||||||
|
if (found)
|
||||||
|
_num_sheet->enable_row(pos);
|
||||||
|
else
|
||||||
|
_num_sheet->disable_row(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Applica un filtro ai documenti da elaborare
|
||||||
|
TString filter;
|
||||||
|
for (int td = _tipi_doc.last(); td >= 0; td--)
|
||||||
|
{
|
||||||
|
TToken_string& row = _tipi_doc.row(td);
|
||||||
|
if (filter.not_empty())
|
||||||
|
filter << "||";
|
||||||
|
filter << "((" << DOC_TIPODOC << "==\"" << row.get(0) << "\")&&(";
|
||||||
|
filter << DOC_STATO << "==\"" << row.get(1) << "\"))" ;
|
||||||
|
}
|
||||||
|
_msk->efield(F_NDOC_INI).browse()->set_filter(filter);
|
||||||
|
_msk->efield(F_NDOC_FIN).browse()->set_filter(filter);
|
||||||
}
|
}
|
||||||
|
delete cont;
|
||||||
|
|
||||||
|
|
||||||
long pos = 0l;
|
long pos = 0l;
|
||||||
|
|
||||||
@ -190,8 +285,8 @@ void TGenerazioneEffetti_app::build_num_sheet()
|
|||||||
else
|
else
|
||||||
_num_sheet->disable_row(pos);
|
_num_sheet->disable_row(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
delete cont;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TGenerazioneEffetti_app::create()
|
bool TGenerazioneEffetti_app::create()
|
||||||
@ -201,12 +296,15 @@ bool TGenerazioneEffetti_app::create()
|
|||||||
error_box("Impossibile eseguire il programma se il modulo Effetti non e' abilitato");
|
error_box("Impossibile eseguire il programma se il modulo Effetti non e' abilitato");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_OCCAS, LF_INDSP, LF_CFVEN, LF_DOC, LF_RIGHEDOC, LF_ANAMAG, LF_MOVMAG, LF_RMOVMAG, LF_CONDV, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_CESS, LF_CAUSALI, 0);
|
open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_OCCAS, LF_INDSP, LF_CFVEN,
|
||||||
|
LF_DOC, LF_RIGHEDOC, LF_ANAMAG, LF_MOVMAG, LF_RMOVMAG, LF_CONDV,
|
||||||
|
LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_CESS, LF_CAUSALI, 0);
|
||||||
_msk = new TMask("ve6300a");
|
_msk = new TMask("ve6300a");
|
||||||
_msk->set_handler(F_CODICE_ELAB,handle_cod_eld);
|
_msk->set_handler(F_CODICE_ELAB, handle_cod_eld);
|
||||||
_msk->set_handler(F_DATA_INI,handle_data_range);
|
_msk->set_handler(F_DATA_INI, handle_data_range);
|
||||||
_msk->set_handler(F_DATA_FIN,handle_data_range);
|
_msk->set_handler(F_DATA_FIN, handle_data_range);
|
||||||
_msk->set_handler(DLG_USER,handle_select);
|
_msk->set_handler(F_CODNUM, handle_codnum);
|
||||||
|
_msk->set_handler(DLG_USER, handle_select);
|
||||||
_num_sheet = new TArray_sheet(-1,-1,-4,-4,"Codici numerazione",
|
_num_sheet = new TArray_sheet(-1,-1,-4,-4,"Codici numerazione",
|
||||||
"@1|Cod. numerazione|Descrizione@50");
|
"@1|Cod. numerazione|Descrizione@50");
|
||||||
return TSkeleton_application::create();
|
return TSkeleton_application::create();
|
||||||
@ -224,8 +322,6 @@ void TGenerazioneEffetti_app::main_loop()
|
|||||||
while (_msk->run() == K_ENTER)
|
while (_msk->run() == K_ENTER)
|
||||||
{
|
{
|
||||||
_cod_el = _msk->get(F_CODICE_ELAB);
|
_cod_el = _msk->get(F_CODICE_ELAB);
|
||||||
_data_ini = _msk->get_date(F_DATA_INI);
|
|
||||||
_data_fine = _msk->get_date(F_DATA_FIN);
|
|
||||||
_raggruppa = _msk->get_bool(F_RAGGRUPPA);
|
_raggruppa = _msk->get_bool(F_RAGGRUPPA);
|
||||||
generate();
|
generate();
|
||||||
}
|
}
|
||||||
@ -361,9 +457,8 @@ void TGenerazioneEffetti_app::build_doc_key(TToken_string& key, TDocumento* doc)
|
|||||||
|
|
||||||
void TGenerazioneEffetti_app::set_options()
|
void TGenerazioneEffetti_app::set_options()
|
||||||
{
|
{
|
||||||
TTable eld("%ELD");
|
const TRectype& eld = cache().get("%ELD", _cod_el);
|
||||||
eld.put("CODTAB",_cod_el);
|
if (!eld.empty())
|
||||||
if (eld.read() == NOERR)
|
|
||||||
{
|
{
|
||||||
TString s1;
|
TString s1;
|
||||||
s1.format("%-20s",(const char*)eld.get("S1")); // Forzo la sua lunghezza a 20 per evitare subscript errors
|
s1.format("%-20s",(const char*)eld.get("S1")); // Forzo la sua lunghezza a 20 per evitare subscript errors
|
||||||
@ -381,105 +476,133 @@ void TGenerazioneEffetti_app::set_options()
|
|||||||
void TGenerazioneEffetti_app::generate()
|
void TGenerazioneEffetti_app::generate()
|
||||||
{
|
{
|
||||||
TRelation doc_rel(LF_DOC);
|
TRelation doc_rel(LF_DOC);
|
||||||
TRectype da(LF_DOC);
|
|
||||||
TRectype a(LF_DOC);
|
|
||||||
const long items = _num_sheet->items();
|
const long items = _num_sheet->items();
|
||||||
long tot = 0L;
|
long tot = 0L;
|
||||||
int year_from = _data_ini.year();
|
|
||||||
int year_to = _data_fine.year();
|
|
||||||
TString16 codnum;
|
|
||||||
TString msg,filt_expr;
|
|
||||||
TGenerazione_effetti gen_eff(_cod_el);
|
TGenerazione_effetti gen_eff(_cod_el);
|
||||||
TDate data;
|
TDate data;
|
||||||
|
|
||||||
_group_array.destroy();
|
_group_array.destroy();
|
||||||
set_options();
|
set_options();
|
||||||
da.put("DATADOC",_data_ini);
|
|
||||||
da.put("PROVV","D");
|
const bool sort_by_date = _msk->get_int(F_ORDERBY) == 0;
|
||||||
da.put("ANNO",year_from);
|
|
||||||
a.put("DATADOC",_data_fine);
|
|
||||||
a.put("PROVV","D");
|
|
||||||
a.put("ANNO",year_to);
|
|
||||||
for (long i=0L; i<items;i++) // Scorre per tutte le numerazioni dello sheet
|
for (long i=0L; i<items;i++) // Scorre per tutte le numerazioni dello sheet
|
||||||
if (_num_sheet->checked(i)) // Se la numerazione corrente e' stata selezionata
|
{
|
||||||
{ // istanzia un cursore per la numerazione corrente, con i limiti di data
|
const TString8 codnum = _num_sheet->row(i).get(1);
|
||||||
codnum = _num_sheet->row(i).get(1);
|
|
||||||
filt_expr = "CODNUM=\"";
|
// Controlla se la numerazione corrente e' stata selezionata
|
||||||
filt_expr << codnum << "\"";
|
bool is_selected = _num_sheet->row_enabled(i);
|
||||||
TCursor doc_cur(&doc_rel,filt_expr,3,&da,&a);
|
if (is_selected)
|
||||||
const long cur_items = doc_cur.items(); // Scorre tutti i documenti che rientrano nell'intervallo selezionato
|
{
|
||||||
if (cur_items == 0)
|
if (sort_by_date)
|
||||||
|
is_selected = _num_sheet->checked(i);
|
||||||
|
else
|
||||||
|
is_selected = _msk->get(F_CODNUM) == codnum;
|
||||||
|
}
|
||||||
|
if (!is_selected)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
TString filt_expr;
|
||||||
|
int cursor_key = 0;
|
||||||
|
|
||||||
|
TRectype da(LF_DOC), a(LF_DOC);
|
||||||
|
da.put(DOC_PROVV,"D");
|
||||||
|
a.put(DOC_PROVV,"D");
|
||||||
|
|
||||||
|
if (sort_by_date)
|
||||||
|
{
|
||||||
|
cursor_key = 3;
|
||||||
|
const TDate dataini = _msk->get(F_DATA_INI);
|
||||||
|
da.put(DOC_ANNO,dataini.year());
|
||||||
|
da.put(DOC_DATADOC,dataini);
|
||||||
|
const TDate datafin = _msk->get(F_DATA_FIN);
|
||||||
|
a.put(DOC_ANNO,datafin.year());
|
||||||
|
a.put(DOC_DATADOC,datafin);
|
||||||
|
filt_expr << DOC_CODNUM << "=\"" << codnum << "\"";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cursor_key = 1;
|
||||||
|
da.put(DOC_ANNO, _msk->get(F_ANNO));
|
||||||
|
da.put(DOC_CODNUM, codnum);
|
||||||
|
da.put(DOC_NDOC, _msk->get(F_NDOC_INI));
|
||||||
|
a.put(DOC_ANNO, _msk->get(F_ANNO));
|
||||||
|
a.put(DOC_CODNUM, codnum);
|
||||||
|
a.put(DOC_NDOC, _msk->get(F_NDOC_FIN));
|
||||||
|
}
|
||||||
|
|
||||||
|
TCursor doc_cur(&doc_rel, filt_expr, cursor_key, &da, &a);
|
||||||
|
|
||||||
|
const long cur_items = doc_cur.items(); // Scorre tutti i documenti che rientrano nell'intervallo selezionato
|
||||||
|
if (cur_items == 0)
|
||||||
|
{
|
||||||
|
warning_box("Non vi sono effetti da generare per il codice numerazione %s",(const char*)codnum);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
TString msg;
|
||||||
|
msg << "Selezione documenti " << codnum;
|
||||||
|
if (sort_by_date)
|
||||||
|
{
|
||||||
|
msg << " dal " << _msk->get(F_DATA_INI);
|
||||||
|
msg << " al " << _msk->get(F_DATA_FIN);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg << " dal " << _msk->get(F_NDOC_INI);
|
||||||
|
msg << " al " << _msk->get(F_NDOC_FIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
TProgind p(cur_items,msg,FALSE,TRUE);
|
||||||
|
long j = 0;
|
||||||
|
// Comportamento:
|
||||||
|
// - scorre i documenti della numerazione corrente.
|
||||||
|
// - se e' possibile generare subito l'effetto (tipo di pagamento valido,
|
||||||
|
// stato documento valido e non e' abilitato il raggruppamento) lo fa,
|
||||||
|
// altrimenti compone una lista dei documenti da raggruppare
|
||||||
|
// - alla fine del ciclo per numerazioni scorre la lista residua e genera gli
|
||||||
|
// effetti rimasti
|
||||||
|
for (;j<cur_items;j++)
|
||||||
|
{
|
||||||
|
p.setstatus(j+1);
|
||||||
|
doc_cur = j;
|
||||||
|
TDocumento* doc = new TDocumento;
|
||||||
|
if (doc->read(doc_cur.curr()) == NOERR && // legge il documento
|
||||||
|
codnum == doc->get(DOC_CODNUM) && // patch del cazzo
|
||||||
|
doc_tipo_stato_ok(doc)) // controlla che il tipo documento e lo stato siano coerenti con la ELD selezionata
|
||||||
{
|
{
|
||||||
warning_box("Non vi sono effetti da generare per il codice numerazione %s",(const char*)codnum);
|
TPagamento & pag = doc->pagamento();
|
||||||
continue;
|
if (pag.code().not_empty())
|
||||||
}
|
|
||||||
msg = "Selezione documenti ";
|
|
||||||
msg << codnum << " dal ";
|
|
||||||
msg << _data_ini.string() << " al ";
|
|
||||||
msg << _data_fine.string();
|
|
||||||
#ifdef DBG
|
|
||||||
TProgind p(cur_items,msg,TRUE,TRUE,1);
|
|
||||||
#else
|
|
||||||
TProgind p(cur_items,msg,FALSE,TRUE,1);
|
|
||||||
#endif
|
|
||||||
long j = 0;
|
|
||||||
// Comportamento:
|
|
||||||
// - scorre i documenti della numerazione corrente.
|
|
||||||
// - se e' possibile generare subito l'effetto (tipo di pagamento valido,
|
|
||||||
// stato documento valido e non e' abilitato il raggruppamento) lo fa,
|
|
||||||
// altrimenti compone una lista dei documenti da raggruppare
|
|
||||||
// - alla fine del ciclo per numerazioni scorre la lista residua e genera gli
|
|
||||||
// effetti rimasti
|
|
||||||
#ifdef DBG
|
|
||||||
for (;j<cur_items && !p.iscancelled();j++)
|
|
||||||
#else
|
|
||||||
for (;j<cur_items;j++)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
p.setstatus(j+1);
|
|
||||||
doc_cur = j;
|
|
||||||
TDocumento* doc = new TDocumento;
|
|
||||||
if (doc->read(doc_cur.curr()) == NOERR && // legge il documento
|
|
||||||
codnum == doc->get(DOC_CODNUM) && // patch del cazzo
|
|
||||||
doc_tipo_stato_ok(doc)) // controlla che il tipo documento e lo stato siano coerenti con la ELD selezionata
|
|
||||||
{
|
{
|
||||||
TPagamento & pag = doc->pagamento();
|
const bool raggruppabile = doc->get_bool(DOC_RAGGREFF);
|
||||||
if (pag.code().not_empty())
|
if (!_raggruppa || (_raggruppa && !raggruppabile))
|
||||||
{
|
{
|
||||||
const bool raggruppabile = doc->get_bool(DOC_RAGGREFF);
|
// Aggiunge alla lista degli effetti da generare singolarmente
|
||||||
if (!_raggruppa || (_raggruppa && !raggruppabile))
|
TLista_documenti lista_in,lista_out;
|
||||||
{
|
|
||||||
// Aggiunge alla lista degli effetti da generare singolarmente
|
|
||||||
TLista_documenti lista_in,lista_out;
|
|
||||||
|
|
||||||
lista_in.add(doc);
|
lista_in.add(doc);
|
||||||
if (!gen_eff.elabora(lista_in,lista_out,data)) // La data non serve, cosi' come la lista documenti in uscita
|
if (!gen_eff.elabora(lista_in,lista_out,data)) // La data non serve, cosi' come la lista documenti in uscita
|
||||||
gen_eff.set_writeable(FALSE);
|
gen_eff.set_writeable(FALSE);
|
||||||
|
|
||||||
tot += gen_eff.bills();
|
tot += gen_eff.bills();
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
add_to_group_list(doc); // Aggiorna la lista degli effetti da raggruppare
|
|
||||||
delete doc;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int err = change_doc_status(doc); // Cambia lo stato al documento
|
add_to_group_list(doc); // Aggiorna la lista degli effetti da raggruppare
|
||||||
if (err != NOERR)
|
|
||||||
warning_box("Errore %d tentando di cambiare lo stato del documento %s/%d",err,(const char*)doc->numerazione(),doc->numero());
|
|
||||||
delete doc;
|
delete doc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
int err = change_doc_status(doc); // Cambia lo stato al documento
|
||||||
|
if (err != NOERR)
|
||||||
|
warning_box("Errore %d tentando di cambiare lo stato del documento %s/%d",err,(const char*)doc->numerazione(),doc->numero());
|
||||||
delete doc;
|
delete doc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#ifdef DBG
|
else
|
||||||
if (p.iscancelled()) break;
|
delete doc;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Ogni elemento di _group_array è una TToken_string. Ogni elemento della TToken_string contiene
|
// Ogni elemento di _group_array è una TToken_string. Ogni elemento della TToken_string contiene
|
||||||
// la chiave per identificare il documento che fa parte di quel raggruppamento
|
// la chiave per identificare il documento che fa parte di quel raggruppamento
|
||||||
tot += gen_eff.group_bills(_group_array);// Setta l'elenco dei documenti per generare effetti raggruppati
|
tot += gen_eff.group_bills(_group_array);// Setta l'elenco dei documenti per generare effetti raggruppati
|
||||||
|
|||||||
@ -5,3 +5,10 @@
|
|||||||
#define F_DATA_INI 103
|
#define F_DATA_INI 103
|
||||||
#define F_DATA_FIN 104
|
#define F_DATA_FIN 104
|
||||||
#define F_RAGGRUPPA 105
|
#define F_RAGGRUPPA 105
|
||||||
|
#define F_ORDERBY 106
|
||||||
|
|
||||||
|
#define F_ANNO 201
|
||||||
|
#define F_CODNUM 202
|
||||||
|
#define F_NDOC_INI 203
|
||||||
|
#define F_NDOC_FIN 204
|
||||||
|
#define F_DESCNUM 205
|
||||||
|
|||||||
@ -4,9 +4,9 @@ PAGE "Generazione effetti" -1 -1 78 12
|
|||||||
|
|
||||||
STRING F_CODICE_ELAB 8
|
STRING F_CODICE_ELAB 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "Codice elaborazione "
|
PROMPT 1 1 "Codice elaborazione "
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE %ELD SELECT I0 == 5
|
USE %ELD SELECT I0==5
|
||||||
INPUT CODTAB F_CODICE_ELAB
|
INPUT CODTAB F_CODICE_ELAB
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Descrizione@55" S0
|
DISPLAY "Descrizione@55" S0
|
||||||
@ -16,38 +16,110 @@ BEGIN
|
|||||||
WARNING "E' necessario specificare il codice elaborazione"
|
WARNING "E' necessario specificare il codice elaborazione"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESC_ELAB 50 39
|
STRING F_DESC_ELAB 50 40
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 35 2 ""
|
PROMPT 34 1 ""
|
||||||
USE %ELD KEY 2 SELECT I0 == 4
|
USE %ELD KEY 2 SELECT I0==5
|
||||||
INPUT S0 F_DESC_ELAB
|
INPUT S0 F_DESC_ELAB
|
||||||
DISPLAY "Descrizione@55" S0
|
DISPLAY "Descrizione@55" S0
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
COPY OUTPUT F_CODICE_ELAB
|
COPY OUTPUT F_CODICE_ELAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 32 4
|
RADIOBUTTON F_ORDERBY 1 76
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Date intervallo documenti"
|
PROMPT 1 2 "Sequenza di ordinamento"
|
||||||
|
ITEM "0|Per data documento"
|
||||||
|
MESSAGE SHOW,1@|HIDE,2@
|
||||||
|
ITEM "1|Per numero documento"
|
||||||
|
MESSAGE SHOW,2@|HIDE,1@
|
||||||
|
FLAGS "Z"
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 76 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 5 "Intervallo documenti"
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATA_INI
|
DATE F_DATA_INI
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Inizio "
|
PROMPT 2 7 "Data iniziale "
|
||||||
VALIDATE NOT_EMPTY_FUNC
|
CHECKTYPE REQUIRED
|
||||||
WARNING "La data di inizio intervallo e' obbligatoria"
|
WARNING "La data di inizio intervallo e' obbligatoria"
|
||||||
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DATA_FIN
|
DATE F_DATA_FIN
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 "Fine "
|
PROMPT 2 8 "Data finale "
|
||||||
VALIDATE NOT_EMPTY_FUNC
|
CHECKTYPE REQUIRED
|
||||||
WARNING "La data di fine intervallo e' obbligatoria"
|
WARNING "La data di fine intervallo e' obbligatoria"
|
||||||
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_ANNO 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Anno "
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
GROUP 2
|
||||||
|
FLAGS "A"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODNUM 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 14 6 "Numerazione "
|
||||||
|
FLAGS "BU"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
GROUP 2
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCNUM 50 40
|
||||||
|
BEGIN
|
||||||
|
PROMPT 34 6 ""
|
||||||
|
FLAGS "D"
|
||||||
|
GROUP 2
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_NDOC_INI 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Documento iniziale "
|
||||||
|
USE LF_DOC
|
||||||
|
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||||
|
INPUT PROVV "D"
|
||||||
|
INPUT ANNO F_ANNO SELECT
|
||||||
|
INPUT CODNUM F_CODNUM SELECT
|
||||||
|
INPUT NDOC F_NDOC_INI
|
||||||
|
DISPLAY "Numero" NDOC
|
||||||
|
DISPLAY "Data@10" DATADOC
|
||||||
|
DISPLAY "Tipo" TIPOCF
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
|
||||||
|
OUTPUT F_NDOC_INI NDOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Numero documento errato"
|
||||||
|
GROUP 2
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_NDOC_FIN 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Documento finale "
|
||||||
|
COPY USE F_NDOC_INI
|
||||||
|
INPUT PROVV "D"
|
||||||
|
INPUT ANNO F_ANNO SELECT
|
||||||
|
INPUT CODNUM F_CODNUM SELECT
|
||||||
|
INPUT NDOC F_NDOC_FIN
|
||||||
|
COPY DISPLAY F_NDOC_INI
|
||||||
|
OUTPUT F_NDOC_FIN NDOC
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Numero documento errato"
|
||||||
|
GROUP 2
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN F_RAGGRUPPA
|
BOOLEAN F_RAGGRUPPA
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 35 6 "Raggruppa effetti"
|
PROMPT 1 10 "Raggruppamento effetti"
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_OK 10 2
|
BUTTON DLG_OK 10 2
|
||||||
|
|||||||
@ -211,5 +211,8 @@
|
|||||||
#define F_DEC_USER8 167
|
#define F_DEC_USER8 167
|
||||||
#define F_DEC_USER9 168
|
#define F_DEC_USER9 168
|
||||||
#define F_DEC_USER10 169
|
#define F_DEC_USER10 169
|
||||||
|
#define F_GEN_EAN 170
|
||||||
|
#define F_EAN8 171
|
||||||
|
#define F_EAN13 172
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -1078,7 +1078,7 @@ class TSaldo_agg;
|
|||||||
class TContabilizzazione : public TElaborazione // velib04b
|
class TContabilizzazione : public TElaborazione // velib04b
|
||||||
{
|
{
|
||||||
bool _auto_data; // Flag per data di registrazione automatica
|
bool _auto_data; // Flag per data di registrazione automatica
|
||||||
byte _nump_iva; // se 1 prende il numero protocollo da registro iva, se 2 prende il numero protocollo dal numero doc.
|
bool _nump_iva; // se TRUE prende il numero protocollo da registro iva, se no prende il numero protocollo dal numero doc.
|
||||||
TDate _data_reg; // Data di registrazione documenti
|
TDate _data_reg; // Data di registrazione documenti
|
||||||
long _total_docs;// Numero di documenti contabilizzati
|
long _total_docs;// Numero di documenti contabilizzati
|
||||||
error_type _error; // Errore rilevato durante l'elaborazione
|
error_type _error; // Errore rilevato durante l'elaborazione
|
||||||
@ -1192,7 +1192,6 @@ public:
|
|||||||
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
|
||||||
const TDate& data_elab, bool interattivo = FALSE);
|
const TDate& data_elab, bool interattivo = FALSE);
|
||||||
void set_auto(const bool a) { _auto_data = a; }
|
void set_auto(const bool a) { _auto_data = a; }
|
||||||
void set_nump(const byte n) { _nump_iva = n; }
|
|
||||||
void set_writeable(const bool b) { _can_write = b; }
|
void set_writeable(const bool b) { _can_write = b; }
|
||||||
const long processed_docs() const { return _total_docs; }
|
const long processed_docs() const { return _total_docs; }
|
||||||
void inc_processed_docs() { _total_docs++; }
|
void inc_processed_docs() { _total_docs++; }
|
||||||
|
|||||||
@ -930,7 +930,7 @@ error_type TIVA_array::add(const TRiga_documento & r, const TBill& conto, const
|
|||||||
|
|
||||||
|
|
||||||
TContabilizzazione::TContabilizzazione(const char* cod)
|
TContabilizzazione::TContabilizzazione(const char* cod)
|
||||||
: TElaborazione(cod), _auto_data(FALSE), _nump_iva(2)
|
: TElaborazione(cod), _auto_data(FALSE)
|
||||||
{
|
{
|
||||||
_fcaus = new TLocalisamfile(LF_CAUSALI);
|
_fcaus = new TLocalisamfile(LF_CAUSALI);
|
||||||
_frcaus = new TLocalisamfile(LF_RCAUSALI);// Per far andare TCausale
|
_frcaus = new TLocalisamfile(LF_RCAUSALI);// Per far andare TCausale
|
||||||
@ -961,8 +961,7 @@ TContabilizzazione::TContabilizzazione(const char* cod)
|
|||||||
_clifo->add(LF_CFVEN,"TIPOCF=TIPOCF|CODCF=CODCF");
|
_clifo->add(LF_CFVEN,"TIPOCF=TIPOCF|CODCF=CODCF");
|
||||||
_righe_iva = new TIVA_array;
|
_righe_iva = new TIVA_array;
|
||||||
|
|
||||||
|
_nump_iva = get_bool("B4");
|
||||||
|
|
||||||
_can_write = TRUE;
|
_can_write = TRUE;
|
||||||
_error = no_error;
|
_error = no_error;
|
||||||
_total_docs = 0L;
|
_total_docs = 0L;
|
||||||
@ -970,7 +969,7 @@ TContabilizzazione::TContabilizzazione(const char* cod)
|
|||||||
}
|
}
|
||||||
|
|
||||||
TContabilizzazione::TContabilizzazione(const TRectype& rec)
|
TContabilizzazione::TContabilizzazione(const TRectype& rec)
|
||||||
: TElaborazione(rec), _auto_data(FALSE), _nump_iva(2), _viswin(NULL)
|
: TElaborazione(rec), _auto_data(FALSE), _viswin(NULL)
|
||||||
{
|
{
|
||||||
_fcaus = new TLocalisamfile(LF_CAUSALI);
|
_fcaus = new TLocalisamfile(LF_CAUSALI);
|
||||||
_frcaus = new TLocalisamfile(LF_RCAUSALI);// Per far andare TCausale
|
_frcaus = new TLocalisamfile(LF_RCAUSALI);// Per far andare TCausale
|
||||||
@ -1001,6 +1000,8 @@ TContabilizzazione::TContabilizzazione(const TRectype& rec)
|
|||||||
_clifo->add(LF_CFVEN,"TIPOCF=TIPOCF|CODCF=CODCF");
|
_clifo->add(LF_CFVEN,"TIPOCF=TIPOCF|CODCF=CODCF");
|
||||||
_righe_iva = new TIVA_array;
|
_righe_iva = new TIVA_array;
|
||||||
|
|
||||||
|
_nump_iva = get_bool("B4");
|
||||||
|
|
||||||
_can_write = TRUE;
|
_can_write = TRUE;
|
||||||
_error = no_error;
|
_error = no_error;
|
||||||
_total_docs = 0L;
|
_total_docs = 0L;
|
||||||
@ -1307,6 +1308,7 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
|
|||||||
ult_prot = mov.get_long(MOV_PROTIVA);
|
ult_prot = mov.get_long(MOV_PROTIVA);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
||||||
{
|
{
|
||||||
if (_nump_iva == 1) // Reperisce l'ultimo numero di protocollo dal registro IVA
|
if (_nump_iva == 1) // Reperisce l'ultimo numero di protocollo dal registro IVA
|
||||||
{
|
{
|
||||||
@ -2503,7 +2505,8 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc)
|
|||||||
const real totdoc(head.get(MOV_TOTDOC));
|
const real totdoc(head.get(MOV_TOTDOC));
|
||||||
const real totdocval(head.get(MOV_TOTDOCVAL));
|
const real totdocval(head.get(MOV_TOTDOCVAL));
|
||||||
const bool in_valuta = cambio.in_valuta();
|
const bool in_valuta = cambio.in_valuta();
|
||||||
const TCurrency_documento td((in_valuta ? totdocval : totdoc) * (test_swap() ? -1 : 1), doc);
|
const bool swapped = test_swap();
|
||||||
|
const TCurrency_documento td((in_valuta ? totdocval : totdoc) * (swapped ? -1 : 1), doc);
|
||||||
|
|
||||||
partita.put(PART_IMPTOTDOC, totdoc);
|
partita.put(PART_IMPTOTDOC, totdoc);
|
||||||
|
|
||||||
@ -2519,7 +2522,7 @@ error_type TContabilizzazione::write_scadenze(TDocumento& doc)
|
|||||||
|
|
||||||
real imposte;
|
real imposte;
|
||||||
for (int j = _movimento->iva_items()-1; j >= 0; j--)
|
for (int j = _movimento->iva_items()-1; j >= 0; j--)
|
||||||
imposte += _movimento->iva(j).get_real(RMI_IMPOSTA);
|
imposte += _movimento->iva(j).get_real(RMI_IMPOSTA) * (swapped ? -1 : 1);
|
||||||
if (_caus->iva() == iva_acquisti) // Ricalcola precisamente il totale imposte
|
if (_caus->iva() == iva_acquisti) // Ricalcola precisamente il totale imposte
|
||||||
{
|
{
|
||||||
real ti = imposte;
|
real ti = imposte;
|
||||||
|
|||||||
@ -85,7 +85,6 @@ TDocumento_mask::TDocumento_mask(const char* td)
|
|||||||
set_handler( F_CODCAMP, codcamp_handler );
|
set_handler( F_CODCAMP, codcamp_handler );
|
||||||
set_handler( F_CODVAL, codval_handler );
|
set_handler( F_CODVAL, codval_handler );
|
||||||
set_handler( F_CODVAL1, codval_handler );
|
set_handler( F_CODVAL1, codval_handler );
|
||||||
set_handler( F_DATACAMBIO1, datacambio_handler );
|
|
||||||
set_handler( F_NUMDOCRIF, datadocrif_handler);
|
set_handler( F_NUMDOCRIF, datadocrif_handler);
|
||||||
set_handler( F_DATADOCRIF, datadocrif_handler);
|
set_handler( F_DATADOCRIF, datadocrif_handler);
|
||||||
set_handler( DLG_ELABORA, elabora_handler );
|
set_handler( DLG_ELABORA, elabora_handler );
|
||||||
@ -406,8 +405,6 @@ void TDocumento_mask::cli2mask()
|
|||||||
TOccasionale & o = doc().occas();
|
TOccasionale & o = doc().occas();
|
||||||
|
|
||||||
const bool onload = !is_running();
|
const bool onload = !is_running();
|
||||||
const TString16 codval(get(F_CODVAL));
|
|
||||||
const TString16 datacambio(get(F_DATACAMBIO1));
|
|
||||||
|
|
||||||
// Setta i campi che appartengono al file LF_CLIFO
|
// Setta i campi che appartengono al file LF_CLIFO
|
||||||
const bool occas = c.occasionale();
|
const bool occas = c.occasionale();
|
||||||
@ -431,10 +428,10 @@ void TDocumento_mask::cli2mask()
|
|||||||
const TString & codval = c.get(CLI_CODVAL);
|
const TString & codval = c.get(CLI_CODVAL);
|
||||||
|
|
||||||
if (pos >= 0)
|
if (pos >= 0)
|
||||||
fld(pos).set(codval);
|
set(F_CODVAL, codval, TRUE);
|
||||||
pos = id2pos(F_CODVAL1);
|
pos = id2pos(F_CODVAL1);
|
||||||
if (pos >= 0)
|
if (pos >= 0)
|
||||||
fld(pos).set(codval);
|
set(F_CODVAL1, codval, TRUE);
|
||||||
pos = id2pos(F_CODLIN);
|
pos = id2pos(F_CODLIN);
|
||||||
if (pos >= 0 && fld(pos).active())
|
if (pos >= 0 && fld(pos).active())
|
||||||
fld(pos).set(c.get(CLI_CODLIN));
|
fld(pos).set(c.get(CLI_CODLIN));
|
||||||
@ -503,7 +500,6 @@ void TDocumento_mask::cli2mask()
|
|||||||
check_field( F_CODINDSP );
|
check_field( F_CODINDSP );
|
||||||
}
|
}
|
||||||
const TString16 newcodval(get(F_CODVAL));
|
const TString16 newcodval(get(F_CODVAL));
|
||||||
const TString16 newdatacambio(get(F_DATACAMBIO1));
|
|
||||||
|
|
||||||
short pos = id2pos(F_CAMBIO);
|
short pos = id2pos(F_CAMBIO);
|
||||||
if ((pos >= 0) && newcodval.empty())
|
if ((pos >= 0) && newcodval.empty())
|
||||||
@ -514,10 +510,6 @@ void TDocumento_mask::cli2mask()
|
|||||||
pos = id2pos(F_CODVAL1);
|
pos = id2pos(F_CODVAL1);
|
||||||
if (pos >= 0 && fld(pos).active())
|
if (pos >= 0 && fld(pos).active())
|
||||||
fld(pos).check(STARTING_CHECK);
|
fld(pos).check(STARTING_CHECK);
|
||||||
pos = id2pos(F_DATACAMBIO1);
|
|
||||||
if (pos >= 0 && fld(pos).active() &&
|
|
||||||
(codval != newcodval || datacambio != newdatacambio))
|
|
||||||
fld(pos).check();
|
|
||||||
check_field(F_COMCF);
|
check_field(F_COMCF);
|
||||||
check_field(F_STATOCF);
|
check_field(F_STATOCF);
|
||||||
check_field( F_CODPAG );
|
check_field( F_CODPAG );
|
||||||
@ -2384,7 +2376,8 @@ bool TDocumento_mask::codval_handler( TMask_field& f, KEY key )
|
|||||||
m.set(F_CAMBIO, cambio);
|
m.set(F_CAMBIO, cambio);
|
||||||
m.set(F_CONTROEURO, et == _exchange_contro ? "X" : "");
|
m.set(F_CONTROEURO, et == _exchange_contro ? "X" : "");
|
||||||
|
|
||||||
TSheet_field& righe = m.sfield(F_SHEET);
|
TSheet_field& righe = f.mask().sfield(F_SHEET);
|
||||||
|
|
||||||
righe.force_update();
|
righe.force_update();
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user