Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@19996 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
bcc5af25bd
commit
77a9cb0b47
292
ca/ca3700.cpp
292
ca/ca3700.cpp
@ -158,7 +158,7 @@ bool TPrint_rendiconto_ca_mask::on_field_event(TOperable_field& o, TField_event
|
|||||||
|
|
||||||
|
|
||||||
TPrint_rendiconto_ca_mask::TPrint_rendiconto_ca_mask()
|
TPrint_rendiconto_ca_mask::TPrint_rendiconto_ca_mask()
|
||||||
:TAnal_report_mask("ca3700")
|
:TAnal_report_mask("ca3700")
|
||||||
{
|
{
|
||||||
TConfig& cfg = ca_config();
|
TConfig& cfg = ca_config();
|
||||||
const bool use_pdcc = cfg.get_bool("UsePdcc");
|
const bool use_pdcc = cfg.get_bool("UsePdcc");
|
||||||
@ -323,6 +323,7 @@ class TPrint_rendiconto_ca_recordset : public TISAM_recordset
|
|||||||
bool _implode_rows;
|
bool _implode_rows;
|
||||||
TString _prefix;
|
TString _prefix;
|
||||||
TAssoc_array _ratrisc;
|
TAssoc_array _ratrisc;
|
||||||
|
TString_array _num_fdr;
|
||||||
TRiclass _ricl;
|
TRiclass _ricl;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -338,12 +339,19 @@ protected:
|
|||||||
bool valid_record(const TRelation& rel) const;
|
bool valid_record(const TRelation& rel) const;
|
||||||
virtual void set_custom_filter(TCursor& cur) const;
|
virtual void set_custom_filter(TCursor& cur) const;
|
||||||
|
|
||||||
|
void calcola_date_da_maschera(const TMask& msk, TDate& dal, TDate& al);
|
||||||
|
int crea_filtro_rmovana_antica(const TMask& msk, TRectype& da_rmovana, TRectype& a_rmovana, TString& filtro);
|
||||||
|
int crea_filtro_rmovana_moderna(const TMask& msk, TRectype& da_rmovana, TRectype& a_rmovana, TString& filtro);
|
||||||
void crea_righe_da_rmovana(TLocalisamfile& tmp, const TPrint_rendiconto_ca_mask& msk, TLog_report& log);
|
void crea_righe_da_rmovana(TLocalisamfile& tmp, const TPrint_rendiconto_ca_mask& msk, TLog_report& log);
|
||||||
|
int crea_filtro_rdoc_antica(const TMask& msk, TRectype& da_rdoc, TRectype& a_rdoc, TString& filtro_date);
|
||||||
|
int crea_filtro_rdoc_moderna(const TMask& msk, TRectype& da_rdoc, TRectype& a_rdoc, TString& filtro_date);
|
||||||
void crea_righe_da_rdoc(TLocalisamfile& tmp, const TPrint_rendiconto_ca_mask& msk, TLog_report& log);
|
void crea_righe_da_rdoc(TLocalisamfile& tmp, const TPrint_rendiconto_ca_mask& msk, TLog_report& log);
|
||||||
|
|
||||||
void crea_trr(const TFilename& trr) const;
|
void crea_trr(const TFilename& trr) const;
|
||||||
void scrive_riga(TLocalisamfile& tmp, const TRectype& rmovana, const TRectype& movana, const TDocumento* doc,
|
void scrive_riga(TLocalisamfile& tmp, const TRectype& rmovana, const TRectype& movana, const TDocumento* doc,
|
||||||
TLog_report& log);
|
TLog_report& log);
|
||||||
void scrive_riga_speciale(TLocalisamfile& tmp, const TDocumento* doc, const TString_array& special_docs);
|
void scrive_riga_speciale(TLocalisamfile& tmp, const TDocumento* doc, const TString_array& special_docs);
|
||||||
|
|
||||||
int sort_indbil(int indbil) const;
|
int sort_indbil(int indbil) const;
|
||||||
const TString& riclassifica(const TBill& zio, TRectype& tmpcurr) const;
|
const TString& riclassifica(const TBill& zio, TRectype& tmpcurr) const;
|
||||||
const TString& riclassifica(const TString& contone, TRectype& tmpcurr) const;
|
const TString& riclassifica(const TString& contone, TRectype& tmpcurr) const;
|
||||||
@ -378,6 +386,15 @@ TPrint_rendiconto_ca_recordset::TPrint_rendiconto_ca_recordset(const TString& sq
|
|||||||
break;
|
break;
|
||||||
_ratrisc.add(codcaus, codcaus);
|
_ratrisc.add(codcaus, codcaus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TString_array contenente le numerazioni delle fatture da ricevere
|
||||||
|
for (int j = 0;;j++)
|
||||||
|
{
|
||||||
|
const TString& codfdr = config.get("NF", NULL, j); //scansione delle righe NF(i)=.. sul paragrafo di configurazione CA
|
||||||
|
if (codfdr.blank())
|
||||||
|
break;
|
||||||
|
_num_fdr.add(codfdr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1227,28 +1244,31 @@ void TPrint_rendiconto_ca_recordset::scrive_riga_speciale(TLocalisamfile& tmp, c
|
|||||||
} // for (inti=1;i<=rows...
|
} // for (inti=1;i<=rows...
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TPrint_rendiconto_ca_recordset::calcola_date_da_maschera(const TMask& msk, TDate& dal, TDate& al)
|
||||||
//scanning delle righe dei movimenti di analitica
|
|
||||||
void TPrint_rendiconto_ca_recordset::crea_righe_da_rmovana(TLocalisamfile& tmp, const TPrint_rendiconto_ca_mask& msk,
|
|
||||||
TLog_report& log)
|
|
||||||
{
|
{
|
||||||
TRelation rel_rmovana(LF_RMOVANA);
|
//se siamo fortunati l'anno si può trovare così..
|
||||||
rel_rmovana.add(LF_MOVANA, "NUMREG==NUMREG"); //aggiunge le testate x avere tipi mov e descr
|
int anno = msk.get_int(F_ANNO);
|
||||||
|
if (anno > 0)
|
||||||
|
{
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
esc.code2range(anno, dal, al);
|
||||||
|
}
|
||||||
|
if (_dadata.ok())
|
||||||
|
dal = _dadata;
|
||||||
|
if (_adata.ok())
|
||||||
|
al = _adata;
|
||||||
|
}
|
||||||
|
|
||||||
//..crea un cursore su rmovana per vedere se i conti selezionati hanno veri movimenti che soddisfano
|
//vecchio modo di stabilire il filtro ed i darec arec, quando non esistevano chiavi su codcms e codcdc su lf_rmovana
|
||||||
//i parametri del filtro sulla maschera. ACHTUNG! Questo filtro ha senso solo se non esiste la
|
int TPrint_rendiconto_ca_recordset::crea_filtro_rmovana_antica(const TMask& msk, TRectype& da_rmovana, TRectype& a_rmovana, TString& filtro)
|
||||||
//riclassificazione!!!
|
{
|
||||||
TRectype da_rmovana(LF_RMOVANA);
|
int cur_key = 2;
|
||||||
TRectype a_rmovana(LF_RMOVANA);
|
if (!_riclassificato)
|
||||||
if (!_riclassificato)
|
|
||||||
{
|
{
|
||||||
da_rmovana.put(RMOVANA_CODCONTO, _daconto);
|
da_rmovana.put(RMOVANA_CODCONTO, _daconto);
|
||||||
a_rmovana.put(RMOVANA_CODCONTO, _aconto);
|
a_rmovana.put(RMOVANA_CODCONTO, _aconto);
|
||||||
}
|
}
|
||||||
|
|
||||||
TString filtro;
|
|
||||||
TDate dal, al;
|
TDate dal, al;
|
||||||
|
|
||||||
//se siamo fortunati l'anno si può trovare così..
|
//se siamo fortunati l'anno si può trovare così..
|
||||||
int anno = msk.get_int(F_ANNO);
|
int anno = msk.get_int(F_ANNO);
|
||||||
if (anno > 0)
|
if (anno > 0)
|
||||||
@ -1266,9 +1286,19 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rmovana(TLocalisamfile& tmp,
|
|||||||
else
|
else
|
||||||
al = TDate();
|
al = TDate();
|
||||||
|
|
||||||
|
//gestione della chiave di ricerca: se specificata almeno _dadata usa la chiave 3 per DATACOMP,..
|
||||||
filtro << "BETWEEN(DATACOMP," << dal.date2ansi() << ',' << al.date2ansi() << ')';
|
//..nell'altro caso usa la chiave 2 per CODCONTO
|
||||||
|
if (dal.ok())
|
||||||
|
{
|
||||||
|
cur_key = 3;
|
||||||
|
da_rmovana.put(RMOVANA_DATACOMP, dal);
|
||||||
|
if (al.ok())
|
||||||
|
a_rmovana.put(RMOVANA_DATACOMP, al);
|
||||||
|
if (!_riclassificato)
|
||||||
|
filtro << "BETWEEN(CODCONTO,\"" << _daconto << "\",\"" << _aconto << "\")";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
filtro << "BETWEEN(DATACOMP," << dal.date2ansi() << ',' << al.date2ansi() << ')';
|
||||||
|
|
||||||
if (_codcosto.not_empty())
|
if (_codcosto.not_empty())
|
||||||
{
|
{
|
||||||
@ -1289,7 +1319,70 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rmovana(TLocalisamfile& tmp,
|
|||||||
filtro << "(" << RMOVANA_CODFASE << "==\"" << _codfas << "\")";
|
filtro << "(" << RMOVANA_CODFASE << "==\"" << _codfas << "\")";
|
||||||
}
|
}
|
||||||
|
|
||||||
TCursor cur_rmovana(&rel_rmovana, filtro, 2, &da_rmovana, &a_rmovana);
|
return cur_key;
|
||||||
|
}
|
||||||
|
|
||||||
|
//nuovo modo di costruire il filtro e darec arec, da quando esistono le chiavi per codcm e codcdc su lf_rmovana
|
||||||
|
int TPrint_rendiconto_ca_recordset::crea_filtro_rmovana_moderna(const TMask& msk, TRectype& da_rmovana, TRectype& a_rmovana, TString& filtro)
|
||||||
|
{
|
||||||
|
int cur_key = 4;
|
||||||
|
//intanto sistema darec arec
|
||||||
|
da_rmovana.put(RMOVANA_CODCMS, _codcms);
|
||||||
|
da_rmovana.put(RMOVANA_CODCCOSTO, _codcosto);
|
||||||
|
a_rmovana = da_rmovana;
|
||||||
|
|
||||||
|
const TString& first_lev = ca_config().get("Level", "ca", 1);
|
||||||
|
//se il primo livello è cdc deve cambiare la chiave..
|
||||||
|
if (first_lev == "CDC")
|
||||||
|
cur_key = 5;
|
||||||
|
|
||||||
|
//adesso tocca al filtro
|
||||||
|
//conti
|
||||||
|
if (!_riclassificato)
|
||||||
|
filtro << "BETWEEN(CODCONTO,\"" << _daconto << "\",\"" << _aconto << "\")";
|
||||||
|
|
||||||
|
//date
|
||||||
|
if (!_vitaintera)
|
||||||
|
{
|
||||||
|
TDate dal, al;
|
||||||
|
calcola_date_da_maschera(msk, dal, al);
|
||||||
|
|
||||||
|
if (filtro.not_empty())
|
||||||
|
filtro << "&&";
|
||||||
|
filtro << "(BETWEEN(DATACOMP," << dal.date2ansi() << ',' << al.date2ansi() << "))";
|
||||||
|
}
|
||||||
|
|
||||||
|
//fase
|
||||||
|
if (_codfas.not_empty())
|
||||||
|
{
|
||||||
|
if (filtro.not_empty())
|
||||||
|
filtro << "&&";
|
||||||
|
filtro << "(" << RMOVANA_CODFASE << "==\"" << _codfas << "\")";
|
||||||
|
}
|
||||||
|
|
||||||
|
return cur_key;
|
||||||
|
}
|
||||||
|
|
||||||
|
//scanning delle righe dei movimenti di analitica
|
||||||
|
void TPrint_rendiconto_ca_recordset::crea_righe_da_rmovana(TLocalisamfile& tmp, const TPrint_rendiconto_ca_mask& msk,
|
||||||
|
TLog_report& log)
|
||||||
|
{
|
||||||
|
TRelation rel_rmovana(LF_RMOVANA);
|
||||||
|
rel_rmovana.add(LF_MOVANA, "NUMREG==NUMREG"); //aggiunge le testate x avere tipi mov e descr
|
||||||
|
|
||||||
|
//..crea un cursore su rmovana per vedere se i conti selezionati hanno veri movimenti che soddisfano
|
||||||
|
//i parametri del filtro sulla maschera. ACHTUNG! Questo filtro ha senso solo se non esiste la
|
||||||
|
//riclassificazione!!!
|
||||||
|
TRectype da_rmovana(LF_RMOVANA);
|
||||||
|
TRectype a_rmovana(LF_RMOVANA);
|
||||||
|
TString filtro;
|
||||||
|
|
||||||
|
//antico metodo di filtraggio (chiave 2 o 3)
|
||||||
|
//int cur_key = crea_filtro_rmovana_antica(msk, da_rmovana, a_rmovana, filtro);
|
||||||
|
//nuovo metodo di filtraggio (chiave 4 o 5)
|
||||||
|
int cur_key = crea_filtro_rmovana_moderna(msk, da_rmovana, a_rmovana, filtro);
|
||||||
|
|
||||||
|
TCursor cur_rmovana(&rel_rmovana, filtro, cur_key, &da_rmovana, &a_rmovana);
|
||||||
const TRecnotype rmovana_items = cur_rmovana.items();
|
const TRecnotype rmovana_items = cur_rmovana.items();
|
||||||
//scorre le righe movimenti di analitica che soddisfano il filtro
|
//scorre le righe movimenti di analitica che soddisfano il filtro
|
||||||
//il join a movana serve nel caso necessitino dati di testata per la riga in questione
|
//il join a movana serve nel caso necessitino dati di testata per la riga in questione
|
||||||
@ -1356,33 +1449,26 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rmovana(TLocalisamfile& tmp,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//scanning delle righe dei documenti
|
|
||||||
void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(TLocalisamfile& tmp, const TPrint_rendiconto_ca_mask& msk,
|
|
||||||
TLog_report& log)
|
|
||||||
{
|
|
||||||
TRelation rel_rdoc(LF_RIGHEDOC);
|
|
||||||
rel_rdoc.add(LF_DOC, "CODNUM==CODNUM|ANNO==ANNO|PROVV==PROVV|NDOC==NDOC"); //aggiunge le testate
|
|
||||||
|
|
||||||
TRectype dardoc(LF_RIGHEDOC);
|
|
||||||
TRectype ardoc(LF_RIGHEDOC);
|
|
||||||
TString filtro_date;
|
|
||||||
|
|
||||||
dardoc.put(RDOC_PROVV, 'D');
|
int TPrint_rendiconto_ca_recordset::crea_filtro_rdoc_antica(const TMask& msk, TRectype& da_rdoc, TRectype& a_rdoc, TString& filtro_date)
|
||||||
ardoc.put(RDOC_PROVV, 'D');
|
{
|
||||||
|
int curr_key = 3;
|
||||||
|
//intanto darec arec
|
||||||
|
da_rdoc.put(RDOC_PROVV, 'D');
|
||||||
|
a_rdoc.put(RDOC_PROVV, 'D');
|
||||||
|
|
||||||
TDate dal, al;
|
TDate dal, al;
|
||||||
|
|
||||||
//se siamo fortunati l'anno si può trovare così..
|
//se siamo fortunati l'anno si può trovare così..
|
||||||
int anno = msk.get_int(F_ANNO);
|
int anno = msk.get_int(F_ANNO);
|
||||||
if (anno > 0)
|
if (anno > 0)
|
||||||
{
|
{
|
||||||
dardoc.put(RDOC_ANNO, anno);
|
da_rdoc.put(RDOC_ANNO, anno);
|
||||||
ardoc.put(RDOC_ANNO, anno);
|
a_rdoc.put(RDOC_ANNO, anno);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dardoc.put(RDOC_ANNO, _dadata.year());
|
da_rdoc.put(RDOC_ANNO, _dadata.year());
|
||||||
ardoc.put(RDOC_ANNO, _adata.year());
|
a_rdoc.put(RDOC_ANNO, _adata.year());
|
||||||
if (_dadata.year() == _adata.year())
|
if (_dadata.year() == _adata.year())
|
||||||
anno = _dadata.year();
|
anno = _dadata.year();
|
||||||
}
|
}
|
||||||
@ -1402,32 +1488,67 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(TLocalisamfile& tmp, con
|
|||||||
else
|
else
|
||||||
al = TDate();
|
al = TDate();
|
||||||
|
|
||||||
|
|
||||||
filtro_date << "BETWEEN(33->DATADOC," << dal.date2ansi() << ',' << al.date2ansi() << ')';
|
filtro_date << "BETWEEN(33->DATADOC," << dal.date2ansi() << ',' << al.date2ansi() << ')';
|
||||||
|
|
||||||
|
return curr_key;
|
||||||
|
}
|
||||||
|
|
||||||
|
//fatta su chiave 6 e 7 di lf_rdoc; non controlla le date, ammettendo movimenti non rientranti nell'intervallo di..
|
||||||
|
//..date scelto dalla maschera, purchè tali movimenti appartengano a commessa/cdc in esame
|
||||||
|
int TPrint_rendiconto_ca_recordset::crea_filtro_rdoc_moderna(const TMask& msk, TRectype& da_rdoc, TRectype& a_rdoc, TString& filtro_date)
|
||||||
|
{
|
||||||
|
int cur_key = 6;
|
||||||
|
//intanto sistema darec arec
|
||||||
|
da_rdoc.put(RDOC_CODCMS, _codcms);
|
||||||
|
da_rdoc.put(RDOC_CODCOSTO, _codcosto);
|
||||||
|
a_rdoc = da_rdoc;
|
||||||
|
|
||||||
|
//gestione chiave di scansione
|
||||||
|
const TString& first_lev = ca_config().get("Level", "ca", 1);
|
||||||
|
//se il primo livello è cdc..
|
||||||
|
if (first_lev == "CDC")
|
||||||
|
cur_key = 7;
|
||||||
|
|
||||||
|
//filtro date
|
||||||
|
if (!_vitaintera)
|
||||||
|
{
|
||||||
|
TDate dal, al;
|
||||||
|
calcola_date_da_maschera(msk, dal, al);
|
||||||
|
|
||||||
|
if (filtro_date.not_empty())
|
||||||
|
filtro_date << "&&";
|
||||||
|
filtro_date << "(BETWEEN(33->DATADOC," << dal.date2ansi() << ',' << al.date2ansi() << "))";
|
||||||
|
}
|
||||||
|
return cur_key;
|
||||||
|
}
|
||||||
|
|
||||||
|
//scanning delle righe dei documenti
|
||||||
|
void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(TLocalisamfile& tmp, const TPrint_rendiconto_ca_mask& msk,
|
||||||
|
TLog_report& log)
|
||||||
|
{
|
||||||
|
TRelation rel_rdoc(LF_RIGHEDOC);
|
||||||
|
rel_rdoc.add(LF_DOC, "CODNUM==CODNUM|ANNO==ANNO|PROVV==PROVV|NDOC==NDOC"); //aggiunge le testate
|
||||||
|
|
||||||
|
TRectype da_rdoc(LF_RIGHEDOC);
|
||||||
|
TRectype a_rdoc(LF_RIGHEDOC);
|
||||||
|
TString filtro_date;
|
||||||
|
|
||||||
|
//metodo antico
|
||||||
|
//const int cur_key = crea_filtro_rdoc_antica(msk, da_rdoc, a_rdoc, filtro_date);
|
||||||
|
//metodo moderno
|
||||||
|
const int cur_key = crea_filtro_rdoc_moderna(msk, da_rdoc, a_rdoc, filtro_date);
|
||||||
|
|
||||||
TContabilizzazione_analitica cont_anal; //oggetto necessario per contabilizzare il documento in osservazione
|
TContabilizzazione_analitica cont_anal; //oggetto necessario per contabilizzare il documento in osservazione
|
||||||
|
|
||||||
//inizialmente il filtro di scansione delle righedoc coincide con quello sulle date
|
//inizialmente il filtro di scansione delle righedoc coincide con quello sulle date
|
||||||
TString filtro = filtro_date;
|
TString filtro = filtro_date;
|
||||||
|
|
||||||
//Controlla sul file di configurazione di CA (ditta.ini,[ca]) se esistono numerazioni relative
|
|
||||||
//..alle fatture da ricevere che devono essere trattate in modo particolare
|
|
||||||
TConfig& config = ca_config();
|
|
||||||
//TString_array contenente le numerazioni delle fatture da ricevere
|
|
||||||
TString_array num_fdr;
|
|
||||||
for (int j = 0;;j++)
|
|
||||||
{
|
|
||||||
const TString& codfdr = config.get("NF", NULL, j); //scansione delle righe NF(i)=.. sul paragrafo di configurazione CA
|
|
||||||
if (codfdr.blank())
|
|
||||||
break;
|
|
||||||
num_fdr.add(codfdr);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Filtro sulle righe documento (e testate collegate)
|
//Filtro sulle righe documento (e testate collegate)
|
||||||
//Controlla sul file di configurazione di CA (ditta.ini,[ca]) se esistono numerazioni da escludere..
|
//Controlla sul file di configurazione di CA (ditta.ini,[ca]) se esistono numerazioni da escludere..
|
||||||
//..e se, per alcune numerazioni, deve tener conto dello stato del documento
|
//..e se, per alcune numerazioni, deve tener conto dello stato del documento
|
||||||
bool update = false;
|
bool update = false;
|
||||||
|
TConfig& config = ca_config();
|
||||||
for (int i = 0;;i++) //scansione delle righe ND(i)=.. sul paragrafo di configurazione CA
|
for (int i = 0;;i++) //scansione delle righe ND(i)=.. sul paragrafo di configurazione CA
|
||||||
{
|
{
|
||||||
TToken_string num_doc(config.get("ND", NULL, i));
|
TToken_string num_doc(config.get("ND", NULL, i));
|
||||||
@ -1453,19 +1574,22 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(TLocalisamfile& tmp, con
|
|||||||
}
|
}
|
||||||
|
|
||||||
//poi deve aggiungere il filtro per cdc/cms/fas
|
//poi deve aggiungere il filtro per cdc/cms/fas
|
||||||
if (_codcosto.not_empty())
|
if (cur_key == 3) //questo solo se si usa la chiave 3 (metodo restrittivo antico)
|
||||||
{
|
{
|
||||||
if (filtro.not_empty())
|
if (_codcosto.not_empty())
|
||||||
filtro << "&&";
|
{
|
||||||
filtro << "(" << RDOC_CODCOSTO << "==\"" << _codcosto << "\")";
|
if (filtro.not_empty())
|
||||||
}
|
filtro << "&&";
|
||||||
if (_codcms.not_empty())
|
filtro << "(" << RDOC_CODCOSTO << "==\"" << _codcosto << "\")";
|
||||||
{
|
}
|
||||||
if (filtro.not_empty())
|
if (_codcms.not_empty())
|
||||||
filtro << "&&";
|
{
|
||||||
filtro << "(" << RDOC_CODCMS << "==\"" << _codcms << "\")";
|
if (filtro.not_empty())
|
||||||
}
|
filtro << "&&";
|
||||||
if (_codfas.not_empty())
|
filtro << "(" << RDOC_CODCMS << "==\"" << _codcms << "\")";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_codfas.not_empty()) //questo in ogni modo, anche con chiave 6 o 7 (oltre che 3)
|
||||||
{
|
{
|
||||||
if (filtro.not_empty())
|
if (filtro.not_empty())
|
||||||
filtro << "&&";
|
filtro << "&&";
|
||||||
@ -1473,7 +1597,7 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(TLocalisamfile& tmp, con
|
|||||||
}
|
}
|
||||||
|
|
||||||
//il filtro è completo;può eseguire la scansione
|
//il filtro è completo;può eseguire la scansione
|
||||||
TCursor cur_rdoc(&rel_rdoc, "", 3, &dardoc, &ardoc);
|
TCursor cur_rdoc(&rel_rdoc, "", cur_key, &da_rdoc, &a_rdoc);
|
||||||
cur_rdoc.setfilter(filtro, update);
|
cur_rdoc.setfilter(filtro, update);
|
||||||
|
|
||||||
const TRecnotype rdoc_items = cur_rdoc.items();
|
const TRecnotype rdoc_items = cur_rdoc.items();
|
||||||
@ -1507,7 +1631,7 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(TLocalisamfile& tmp, con
|
|||||||
//..importo verra' poi messo nel fatturato.
|
//..importo verra' poi messo nel fatturato.
|
||||||
const TRectype& curr_rdoc = cur_rdoc.curr();
|
const TRectype& curr_rdoc = cur_rdoc.curr();
|
||||||
const TString& rdoc_dacodnum = curr_rdoc.get(RDOC_DACODNUM);
|
const TString& rdoc_dacodnum = curr_rdoc.get(RDOC_DACODNUM);
|
||||||
const bool is_special_doc = num_fdr.find(rdoc_dacodnum) > 0;
|
const bool is_special_doc = _num_fdr.find(rdoc_dacodnum) > 0;
|
||||||
//documento non contabilizzato o fattura da ricevere con numerazione configurata speciale
|
//documento non contabilizzato o fattura da ricevere con numerazione configurata speciale
|
||||||
if (numregca == 0 || is_special_doc)
|
if (numregca == 0 || is_special_doc)
|
||||||
{
|
{
|
||||||
@ -1551,7 +1675,7 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(TLocalisamfile& tmp, con
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
//righe di documento configurate come da emettere/ricevere (documenti speciali)
|
//righe di documento configurate come da emettere/ricevere (documenti speciali)
|
||||||
scrive_riga_speciale(tmp, &doc, num_fdr);
|
scrive_riga_speciale(tmp, &doc, _num_fdr);
|
||||||
}
|
}
|
||||||
} //if (numregca==0...
|
} //if (numregca==0...
|
||||||
|
|
||||||
@ -2060,17 +2184,45 @@ void TPrint_rendiconto_ca::main_loop()
|
|||||||
{
|
{
|
||||||
TToken_string& row = sheet.row(-1); //crea la prima riga dello sheet
|
TToken_string& row = sheet.row(-1); //crea la prima riga dello sheet
|
||||||
|
|
||||||
|
//si amplia il range di ricerca temporale di 1 anno nel passato perchè i movana..
|
||||||
|
//..preventivi possono essere stati decisi prima dell'inizio effettivo commessa
|
||||||
|
TDate dataini, datafin;
|
||||||
|
const int anno = mask.get_int(F_ANNO);
|
||||||
|
if (anno > 0) //se non è stata specificata alcuna dataini, ma è stato specificato un anno di esercizio...
|
||||||
|
{
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
esc.code2range(anno, dataini, datafin);
|
||||||
|
}
|
||||||
|
if (!mask.field(F_DATAINI).empty())
|
||||||
|
dataini = mask.get_date(F_DATAINI);
|
||||||
|
if (!mask.field(F_DATAFIN).empty())
|
||||||
|
datafin = mask.get_date(F_DATAFIN);
|
||||||
|
|
||||||
const TMultilevel_code_info& liv1 = get_first_level(); //stabilisce quale è il primo livello (tra CDC e CMS)..
|
const TMultilevel_code_info& liv1 = get_first_level(); //stabilisce quale è il primo livello (tra CDC e CMS)..
|
||||||
TISAM_recordset set(liv1.logic() == LF_CDC ? "USE CDC" : "USE COMMESSE"); //..e di conseguenza scrive la use giusta
|
const bool is_cms = liv1.logic() == LF_COMMESSE;
|
||||||
|
TISAM_recordset set(is_cms ? "USE COMMESSE" : "USE CDC"); //..e di conseguenza scrive la use giusta
|
||||||
|
|
||||||
TProgind pi(set.items(), video_string, true, true);
|
TProgind pi(set.items(), video_string, true, true);
|
||||||
for (int i = 0; set.move_to(i); i++) //fighissimo metodo per scandire un file in 1 riga!
|
for (int i = 0; set.move_to(i); i++) //fighissimo metodo per scandire un file in 1 riga!
|
||||||
{
|
{
|
||||||
pi.addstatus(1);
|
if (!pi.addstatus(1))
|
||||||
if (pi.iscancelled())
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//Filtro sulle date
|
||||||
|
//DATE VALIDE STRETTAMENTE PER COMMESSE
|
||||||
|
//per prima cosa controlla se veramente la commessa rientri nei parametri temporali impostati sulla maschera
|
||||||
|
//Se infatti è completamente al di fuori di tale intervallo, che cavolo la controlla a fare
|
||||||
row = set.get((unsigned int)0).as_string(); //prende il valore del primo campo del file (CDC o CMS code)
|
row = set.get((unsigned int)0).as_string(); //prende il valore del primo campo del file (CDC o CMS code)
|
||||||
|
|
||||||
|
if (is_cms && (dataini.ok() || datafin.ok()))
|
||||||
|
{
|
||||||
|
const TRectype& rec_commesse = set.cursor()->curr();
|
||||||
|
TDate datainicms, datafcomp;
|
||||||
|
ca_durata_commessa(rec_commesse, datainicms, datafcomp);
|
||||||
|
if ((dataini.ok() && datafcomp < dataini) || (datafin.ok() && datainicms > datafin))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
video_string = TR("Scansione");
|
video_string = TR("Scansione");
|
||||||
video_string << " " << row; //completa la stringa da visualizzare sulla progind
|
video_string << " " << row; //completa la stringa da visualizzare sulla progind
|
||||||
pi.set_text(video_string);
|
pi.set_text(video_string);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user