Patch level :2.2 nopatch

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :stampa rendiconto: terminata la compilazione del file temporaneo. Adesso ci scrive qualcosa. Vedremo domani se è giusto!


git-svn-id: svn://10.65.10.50/trunk@13269 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2005-07-11 17:45:52 +00:00
parent fa425299d9
commit d779c85cc8

View File

@ -247,6 +247,7 @@ protected:
void crea_righe_rdoc(const TPrint_rendiconto_ca_mask& msk);
void crea_trr(const TFilename& trr) const;
void salva_rmovana(const TRectype& rmovana, const TRectype& movana);
real somma_budget(const TString& codconto, const char* tipomovana);
public:
@ -259,6 +260,8 @@ public:
static const TPrint_rendiconto_ca_recordset* myself = NULL;
TPrint_rendiconto_ca_recordset* rendiconto_recordset() { return (TPrint_rendiconto_ca_recordset* ) myself;}
//metodo per riconoscere se il record corrente soddisfa i filtri della maschera...strafighissimo!
bool TPrint_rendiconto_ca_recordset::valid_record(const TRelation& rel) const
{
@ -309,7 +312,7 @@ bool TPrint_rendiconto_ca_recordset::mov_filter(const TRelation* rel)
void TPrint_rendiconto_ca_recordset::set_custom_filter(TCursor& cur) const
{
//filtro sui conti selezionati sulla maschera
TRectype darec(cur.curr()), arec(cur.curr()); //record corrente (rmovana (solo movimentati))
TRectype darec(cur.curr()), arec(cur.curr());
darec.put(RMOVANA_CODCONTO, _daconto);
darec.put(RMOVANA_DATACOMP, _dadata);
arec.put(RMOVANA_CODCONTO, _aconto);
@ -320,28 +323,80 @@ void TPrint_rendiconto_ca_recordset::set_custom_filter(TCursor& cur) const
cur.set_filterfunction(mov_filter, true);
}
//metodo per il calcolo del budget PREVENTIVO o VARIAZIONE (sezione di raggruppamento sul report)
real TPrint_rendiconto_ca_recordset::somma_budget(const TString& codconto, const char* tipomovana)
{
real budget = ZERO;
TRelation rel_rmovana(LF_RMOVANA);
rel_rmovana.add(LF_MOVANA, "NUMREG==NUMREG");
//..crea un cursore su movana per avere solo i conti di tipo tipomovana, con il codice conto
//selezionato e la datacomp compresa nell'intervallo date
TRectype da_rmovana(LF_RMOVANA);
da_rmovana.put(RMOVANA_CODCONTO, codconto);
da_rmovana.put(RMOVANA_DATACOMP, _dadata);
TRectype a_rmovana(LF_RMOVANA);
a_rmovana.put(RMOVANA_CODCONTO, codconto);
a_rmovana.put(RMOVANA_DATACOMP, _adata);
TString filtro;
filtro << "(MOVANA_TIPODOC==" << tipomovana << ")";
TCursor cur_rmovana(&rel_rmovana, filtro, 2, &da_rmovana, &a_rmovana);
const long rmovana_items = cur_rmovana.items();
cur_rmovana.freeze();
if (rmovana_items > 0)
{
const TRectype& movana = rel_rmovana.curr(LF_MOVANA);
for (cur_rmovana = 0; cur_rmovana.pos() < rmovana_items; ++cur_rmovana)
{
if (movana.get_char(MOVANA_SEZIONE) == 'D')
budget -= movana.get_real(MOVANA_TOTDOC);
if (movana.get_char(MOVANA_SEZIONE) == 'A')
budget += movana.get_real(MOVANA_TOTDOC);
}
}
return budget;
}
const TVariant& TPrint_rendiconto_ca_recordset::get(const char* column_name) const
{
if (strcmp(column_name, "#COSTO") == 0)
{
TVariant& var = get_tmp_var();
var = _codcosto;
return var;
}
if (strcmp(column_name, "#COMMESSA") == 0)
{
TVariant& var = get_tmp_var();
var = _codcms;
return var;
}
if (strcmp(column_name, "#FASE") == 0)
{
TVariant& var = get_tmp_var();
var = _codfas;
return var;
}
if (*column_name == '#')
{
if (strcmp(column_name, "#COSTO") == 0)
{
TVariant& var = get_tmp_var();
var = _codcosto;
return var;
}
if (strcmp(column_name, "#COMMESSA") == 0)
{
TVariant& var = get_tmp_var();
var = _codcms;
return var;
}
if (strcmp(column_name, "#FASE") == 0)
{
TVariant& var = get_tmp_var();
var = _codfas;
return var;
}
if (strcmp(column_name, "#PREVENTIVO") == 0)
{
TVariant& var = get_tmp_var();
var = rendiconto_recordset()->somma_budget(get(RMOVANA_CODCONTO).as_string(), "P");
return var;
}
if (strcmp(column_name, "#VARIAZIONE") == 0)
{
TVariant& var = get_tmp_var();
var = rendiconto_recordset()->somma_budget(get(RMOVANA_CODCONTO).as_string(), "V");
return var;
}
}
return TISAM_recordset::get(column_name);
}
@ -353,8 +408,8 @@ void TPrint_rendiconto_ca_recordset::salva_rmovana(const TRectype& rmovana, cons
{
//scegli i campi da mettere
_tmp->curr().put("CONTO", rmovana.get(RMOVANA_CODCONTO)); //conto
_tmp->curr().put("DCODNUM", movana.get(MOVANA_DCODNUM)); //codnum del documento che origina il movana
_tmp->curr().put("DATAREG", movana.get(MOVANA_DATAREG)); //data del movana
_tmp->curr().put("CODNUM", movana.get(MOVANA_DCODNUM)); //codnum del documento che origina il movana
_tmp->curr().put("DATA", movana.get(MOVANA_DATAREG)); //data del movana
_tmp->curr().put("NUMREG", movana.get(MOVANA_NUMREG));
_tmp->curr().put("NUMDOCRIF", movana.get(MOVANA_DNDOC));
_tmp->curr().put("DATADOCRIF", movana.get(MOVANA_DATADOC));
@ -497,7 +552,7 @@ void TPrint_rendiconto_ca_recordset::crea_righe_rdoc(const TPrint_rendiconto_ca_
void TPrint_rendiconto_ca_recordset::crea_trr(const TFilename& trr) const
{
ofstream of(trr);
of << 1005 << endl;
of << 1000 << endl;
of << 13 << endl;
of << "CONTO|1|20|0|Conto analitico" << endl;
of << "CODNUM|1|4|0|Numerazione documento" << endl;
@ -519,8 +574,12 @@ void TPrint_rendiconto_ca_recordset::crea_trr(const TFilename& trr) const
void TPrint_rendiconto_ca_recordset::set_filter(const TPrint_rendiconto_ca_mask& msk, int cms_row)
{
//se esiste il file temporano con tracciato persomalizzato lo cancella e lo ricrea vuoto
TFilename trr; trr.temp(); trr.add("rendiconto.trr");
TFilename dbf(trr); dbf.ext("dbf");
TFilename trr;
trr.temp("rendy");
TFilename dbf(trr);
trr.ext("trr");
dbf.ext("dbf");
//crea il file .trr in base ai parametri del metodo
crea_trr(trr);