Patch level : 2.0 462

Files correlati     : ab0.exe
Ricompilazione Demo : [ ]
Commento           :
Corretto errore CM701106
Descrizione
Continua sviluppo riclassific. saldi


git-svn-id: svn://10.65.10.50/trunk@11061 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2003-04-24 12:22:51 +00:00
parent 132b0a2e1b
commit 72d6f29c18
12 changed files with 134 additions and 44 deletions

View File

@ -241,6 +241,7 @@ public:
virtual bool create();
virtual bool destroy();
void mask2parms(const TMask & m);
void ini2parms(const char * filename);
void calculate_clifo(const TString & tipo, const int gruppo, const int conto, const int indbil, const bool saldi_attuali, const TString & codcom);
void calculate();
void transform();
@ -357,6 +358,69 @@ void TRicl_saldi::mask2parms(const TMask & m)
#endif
}
void TRicl_saldi::ini2parms(const char * filename)
{
TConfig c(filename);
TEsercizi_contabili es;
_calc_type = (TCalc_type) c.get_int("Tipo");
_codes = c.get_int("Esercizio");
_dal = c.get("Dal");
_al = c.get("Al");
if (_codes != 0 && !_dal.ok())
_dal = es.esercizio(_codes).inizio();
if (_codes != 0 && !_al.ok())
_al = es.esercizio(_codes).fine();
if (_codes == 0)
{
_codes = es.date2esc(_dal);
if (_codes == 0)
_codes = es.date2esc(_al);
}
_all_recs = c.get_bool("Struttura");
_provv = c.get_bool("Provvisori");
_codcms = c.get("Commessa");
_output_file = c.get("Output");
_codpdb = c.get("Periodo");
#ifdef DBG
TString line ;
write_log("---------------------------------------------------");
line = TR("Tipo di calcolo : ");
switch (_calc_type)
{
case _saldi :
line << TR("Saldi Contabili");
break;
case _ivdircee :
line << TR("IV Direttiva CEE");
break;
case _analisi :
line << TR("Analisi");
break;
default :
break;
}
write_log(line);
line = TR("Esercizio : "); line << _codes;
write_log(line);
line = TR("Codice periodo : "); line << _codpdb;
write_log(line);
line = TR("Dal : "); line << _dal.string();
write_log(line);
line = TR("Al : "); line << _al.string();
write_log(line);
line = TR("Movimenti provv.: "); line << (_provv ? "Si" : "No");
write_log(line);
line = TR("Intera struttura: "); line << (_all_recs ? "Si" : "No");
write_log(line);
line = TR("Commessa : "); line << _codcms;
write_log(line);
line = TR("Output : "); line << ((const char *) _output_file);
write_log(line);
write_log("");
#endif
}
void TRicl_saldi::calculate_clifo(const TString & tipo, const int gruppo, const int conto, const int indbil, const bool saldi_attuali, const TString & codcom)
{
TRelation relcf(LF_CLIFO);
@ -563,7 +627,7 @@ TFile_type TRicl_saldi::open_output()
void TRicl_saldi::output_line(TFile_type t, const char * key, TRiga_output & r, const bool is_commessa, TString & codcms)
{
TString descr;
const bool analisi = _calc_type == _ivdircee;
const bool analisi = _calc_type == _analisi;
const bool saldi = _calc_type == _saldi;
if (analisi)
@ -687,10 +751,10 @@ void TRicl_saldi::output()
saldo.put(ABS_CODPDB, _codpdb);
TCursor cur(&relana, "", 1, &saldo, &saldo);
const TRecnotype items = cur.items();
const TRecnotype curs_items = cur.items();
cur.freeze();
for (cur = 0L; cur.pos() < items; ++cur)
for (cur = 0L; cur.pos() < curs_items; ++cur)
relana.remove();
TProgind p(items, "Aggiornamenti Saldi analisi", FALSE);
int err = NOERR;
@ -703,6 +767,7 @@ void TRicl_saldi::output()
saldo.put(ABS_CODDITTA, get_firm());
saldo.put(ABS_ANNO, _codes);
saldo.put(ABS_CODPDB, _codpdb);
saldo.put(ABS_CODCBL, key);
const real si = r.saldo_iniziale();
const char fsi = si >= ZERO ? 'D' : 'A';
@ -714,10 +779,10 @@ void TRicl_saldi::output()
err = relana.write();
if (err == _isreinsert)
err = relana.write();
p.addstatus(1L);
}
if (err != NOERR)
error_box("Impossibile aggiornare l'archivio saldi analisi errore n. %d", err);
p.addstatus(1L);
}
TProgind p1(items, "Generazione output", FALSE);
for (int i = 0; i < items && !p1.iscancelled() ; i++)
@ -732,19 +797,35 @@ void TRicl_saldi::output()
void TRicl_saldi::main_loop()
{
while (_mask->run() != K_QUIT)
{
if (argc() == 2)
{
while (_mask->run() != K_QUIT)
{
#ifdef DBG
open_log();
open_log();
#endif
mask2parms(*_mask);
calculate();
transform();
output();
mask2parms(*_mask);
calculate();
transform();
output();
#ifdef DBG
close_log();
close_log();
#endif
}
}
}
else
{
#ifdef DBG
open_log();
#endif
ini2parms(argv(2));
calculate();
transform();
output();
#ifdef DBG
close_log();
#endif
}
}
int ab0400 (int argc, char* argv[])

View File

@ -2,7 +2,7 @@
PAGE "Stampa tabella tipi di bilancio" -1 -1 50 8
STRING F_INIZIO1 3
STRING F_INIZIO1 2
BEGIN
PROMPT 3 1 "Da codice "
HELP "Codice da cui iniziare a stampare. Vuoto = inizio archivio"
@ -13,10 +13,10 @@ BEGIN
OUTPUT F_INIZIO1 CODTAB
GROUP 1
FIELD CODTAB
FLAGS "RU"
FLAGS "UZ"
END
STRING F_FINE1 3
STRING F_FINE1 2
BEGIN
PROMPT 4 3 "A codice "
HELP "Codice a cui terminare la stampa. Vuoto = fine archivio"
@ -26,7 +26,7 @@ BEGIN
OUTPUT F_FINE1 CODTAB
GROUP 2
FIELD CODTAB
FLAGS "RU"
FLAGS "UZ"
END
BUTTON DLG_OK 10 2

View File

@ -14,11 +14,11 @@ BEGIN
FLAGS "R"
END
STRING F_CODTAB 3
STRING F_CODTAB 2
BEGIN
PROMPT 2 2 "Codice periodo "
HELP "Inserire il codice identificativo del periodo prescelto"
FLAS "RU"
FLAS "UZ"
FIELD CODTAB
KEY 1
USE %PDB KEY 1

View File

@ -1,3 +1,3 @@
79
1
%absaldi|0|0|124|20|Saldi analisi di bilancio|||
%absaldi|0|0|123|0|Saldi analisi di bilancio|||

View File

@ -2,7 +2,7 @@
12
CODDITTA|3|5|0|Codice ditta
ANNO|2|4|0|Anno
CODPDB|1|3|0|Codice periodo
CODPDB|1|2|0|Codice periodo
TIPOBIL|1|2|0|Codice tipo di bilancio
CODCBL|1|12|0|Codice piano conti
FLDA|1|1|0|Flag <D>are o <A>vere

View File

@ -1,3 +1,3 @@
80
1
%movdett|0|0|422|20|Movimenti / dettagli analisi di bilancio|||
%movdett|0|0|421|0|Movimenti / dettagli analisi di bilancio|||

View File

@ -2,7 +2,7 @@
33
CODDITTA|3|5|0|Codice ditta
ANNO|2|4|0|Anno
CODPDB|1|3|0|Codice periodo
CODPDB|1|2|0|Codice periodo
TIPOBIL|1|2|0|Codice tipo di bilancio
CODCBL|1|12|0|Codice piano conti
ID|3|6|0|Identificatore record all' interno del periodo ( >0)

View File

@ -1,3 +1,3 @@
81
1
%rett|0|0|207|20|Rettifiche analisi di bilancio|||
%rett|0|0|206|0|Rettifiche analisi di bilancio|||

View File

@ -2,7 +2,7 @@
17
CODDITTA|3|5|0|Codice Ditta
ANNO|1|4|0|Anno
CODPDB|1|3|0|Codice periodo di bilancio
CODPDB|1|2|0|Codice periodo di bilancio
TIPOBIL|1|2|0|Tipo di bilancio
NUMREG|3|10|0|Numero di registrazione
DATAREG|5|8|0|Data di registrazione

View File

@ -464,8 +464,8 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
return esito;
}
real & TSaldo::valore_al(int g, int c, long s, const TDate& dal, const TDate& al,
int indbil, bool provv)
real & TSaldo::saldo_periodo(int g, int c, long s, const TDate& dal, const TDate& al,
int indbil, bool provv, const TString & codcomm)
{
_saldo_iniziale = ZERO;
@ -479,24 +479,28 @@ real & TSaldo::valore_al(int g, int c, long s, const TDate& dal, const TDate& al
TEsercizi_contabili es;
const int codes = es.date2esc(dal);
const bool is_commessa = codcomm.not_empty();
_annoes = codes;
TString16 key;
key.format("%d||%d|%d|%ld", _annoes, g, c, s);
const TRectype & saldo = cache().get(LF_SALDI, key);
_saldo_iniziale = saldo.get_real(SLD_SALDO);
_prec = _saldo_iniziale == ZERO;
if (_prec)
if( !is_commessa)
{
_prec = TRUE;
_saldo_iniziale = saldofin_esprec(codes,g,c,s);
TString key(20);
key.format("%04d| |%d|%d|%ld", _annoes, g, c, s);
const TRectype & saldo = cache().get(LF_SALDI, key);
_saldo_iniziale = saldo.get_real(SLD_SALDO);
_prec = _saldo_iniziale == ZERO;
if (_prec)
{
_prec = TRUE;
_saldo_iniziale = saldofin_esprec(codes,g,c,s);
}
else
if (saldo.get_char(SLD_FLAGSALINI) == 'A')
_saldo_iniziale = -_saldo_iniziale;
}
else
if (saldo.get_char(SLD_FLAGSALINI) == 'A')
_saldo_iniziale = -_saldo_iniziale;
TRelation relrmov(LF_RMOV);
@ -513,7 +517,7 @@ real & TSaldo::valore_al(int g, int c, long s, const TDate& dal, const TDate& al
TString prompt(30);
prompt.format(FR("Calcolo saldo conto %d-%d_%ld"), g, c, s);
prompt.format(FR("Calcolo saldo conto %d-%d-%ld"), g, c, s);
TProgind p(items, prompt, FALSE);
@ -530,6 +534,7 @@ real & TSaldo::valore_al(int g, int c, long s, const TDate& dal, const TDate& al
if ((_datacomp >= dal && _datacomp <= al) &&
(provv || _provv.empty()) &&
(!is_commessa || codcomm == rmov.get(RMV_CODCMS)) &&
importo != ZERO)
{
// "Se la causale del movimento e' di chiusura,
@ -549,7 +554,7 @@ real & TSaldo::valore_al(int g, int c, long s, const TDate& dal, const TDate& al
_prg_avere += importo;
}
else
if (_datacomp < dal)
if ((!is_commessa) && _datacomp < dal)
{
if (codes == es.date2esc(_datacomp))
{

View File

@ -111,7 +111,7 @@ public:
bool ultima_immissione_bilancio(int anno,int g,int c,long s,int indbil,int prov,bool saldo_chiusura = TRUE);
bool ultima_immissione_verifica(int anno,int g,int c,long s,int indbil,int prov);
bool data_limite_bilancio(int,int,int,long,const TDate&,const TDate&,int,int, const char* = NULL);
real & valore_al(int g,int c,long s,const TDate& dal,const TDate& al,int indbil, bool provv);
real & saldo_periodo(int g,int c,long s,const TDate& dal,const TDate& al,int indbil, bool provv, const TString & codcomm = EMPTY_STRING);
bool ricerca_progr_prec(int, int, int, long);

View File

@ -122,6 +122,10 @@ SOURCE=..\cg\cglib01.cpp
SOURCE=..\cg\cglib02.cpp
# End Source File
# Begin Source File
SOURCE=..\include\fraction.cpp
# End Source File
# End Group
# Begin Group "Headers"