Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento : personalizzazione adolfica in dirittura! manca veramente poco git-svn-id: svn://10.65.10.50/trunk@20457 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c9aa12f2b3
commit
78a0c98a3e
@ -116,8 +116,8 @@ protected:
|
||||
void set_status(bool edit);
|
||||
|
||||
int load(); //(costruttore e on_field) carica i dati per riempire lo sheet
|
||||
int load_rmovana(const TString& cms, const bool include_cms_supp, TSheet_field& sf_righe); //(load()) carica le righe analitiche di preventivo
|
||||
int load_saldana(const TString& cms, TSheet_field& sf_righe); //(load()) carica le righe di saldo consuntivo
|
||||
long load_rmovana(const TString& cms, const bool include_cms_supp, TSheet_field& sf_righe); //(load()) carica le righe analitiche di preventivo
|
||||
int load_saldana(const TString& cms, const long max_numreg, TSheet_field& sf_righe); //(load()) carica le righe di saldo consuntivo
|
||||
TToken_string& add_rmovana(const TRectype& movana, const TRectype& rmovana, TSheet_field& sf_righe); //(load_rmovana()) metodo di basso livello..
|
||||
//..per caricare fisicamente le righe sullo sheet
|
||||
|
||||
@ -544,10 +544,14 @@ int TVariazione_budget_mask::modifica_movana(const long numreg, TSheet_field& sf
|
||||
//giro di controllo sulle date; le righe sheet, eventualmente modificate, devono avere un intervallo date..
|
||||
//..compatibile con quello del movimento
|
||||
const TDate datacomp = movana.get_date(MOVANA_DATACOMP);
|
||||
TDate datafcomp = movana.get_date(MOVANA_DATAFCOMP);
|
||||
const bool autofcomp = movana.get_bool(MOVANA_AUTOFCOMP);
|
||||
if (!datafcomp.ok() && !autofcomp)
|
||||
datafcomp = datacomp;
|
||||
TDate datafcomp;
|
||||
if (!autofcomp)
|
||||
{
|
||||
datafcomp = movana.get_date(MOVANA_DATAFCOMP);
|
||||
if (!datafcomp.ok())
|
||||
datafcomp = datacomp;
|
||||
}
|
||||
|
||||
//controlla le righe sorelle dello sheet; se le date non rientrano in quelle della testata -> le righe..
|
||||
//..vanno considerate nuove, e quindi va messo a 0 il loro numreg/numrig
|
||||
@ -555,11 +559,15 @@ int TVariazione_budget_mask::modifica_movana(const long numreg, TSheet_field& sf
|
||||
for (int i = last; i >= first; i--)
|
||||
{
|
||||
//date testata
|
||||
const bool r_autofcomp = *sf_righe.cell(i, _pos_autofcomp) > ' ';
|
||||
const TDate r_datacomp = sf_righe.cell(i, _pos_datacomp);
|
||||
TDate r_datafcomp = sf_righe.cell(i, _pos_datafcomp);
|
||||
if (!r_datafcomp.ok() && !r_autofcomp)
|
||||
r_datafcomp = r_datacomp;
|
||||
const bool r_autofcomp = *sf_righe.cell(i, _pos_autofcomp) > ' ';
|
||||
TDate r_datafcomp;
|
||||
if (!r_autofcomp)
|
||||
{
|
||||
r_datafcomp = sf_righe.cell(i, _pos_datafcomp);
|
||||
if (!r_datafcomp.ok())
|
||||
r_datafcomp = r_datacomp;
|
||||
}
|
||||
|
||||
//importo riga: se nullo la riga verrà eliminata in quanto inutile all'umanità
|
||||
const int r_numrig = atoi(sf_righe.cell(i, _pos_numrig));
|
||||
@ -573,17 +581,31 @@ int TVariazione_budget_mask::modifica_movana(const long numreg, TSheet_field& sf
|
||||
sf_righe.row(i).add("", _pos_numreg);
|
||||
sf_righe.row(i).add("", _pos_numrig);
|
||||
}
|
||||
//elimina la riga dal movana
|
||||
row_modified |= movana.destroy_row(r_numrig, true);
|
||||
//elimina la riga dal movana (solo se appartiene al movana, ovvero numrig > 0)
|
||||
if (r_numrig > 0)
|
||||
row_modified |= movana.destroy_row(r_numrig, true);
|
||||
}
|
||||
else //qui invece ci vanno le righe modificate che sono solo da riscrivere (importo e/o descr modificate)
|
||||
{
|
||||
TRectype& rmovana = movana.body()[r_numrig];
|
||||
//se la riga non esiste va creata, sennò è proprio lei!
|
||||
TRectype& rmovana = r_numrig > 0 ? movana.body()[r_numrig] : movana.new_row();
|
||||
//se la riga del movimento è nuova vanno riempiti tutti i campi
|
||||
if (r_numrig <= 0)
|
||||
{
|
||||
rmovana.put(RMOVANA_CODCMS, sf_righe.cell(i, _pos_cms));
|
||||
rmovana.put(RMOVANA_CODFASE, sf_righe.cell(i, _pos_fase));
|
||||
rmovana.put(RMOVANA_CODCCOSTO, sf_righe.cell(i, _pos_cdc));
|
||||
rmovana.put(RMOVANA_CODCONTO, sf_righe.cell(i, _pos_conto));
|
||||
rmovana.put(RMOVANA_DATACOMP, sf_righe.cell(i, _pos_datacomp));
|
||||
}
|
||||
|
||||
//importo
|
||||
const real importo = rmovana.get_real(RMOVANA_IMPORTO);
|
||||
if (importo != r_importo)
|
||||
{
|
||||
rmovana.put(RMOVANA_IMPORTO, r_importo);
|
||||
const char r_sezione = sf_righe.cell(i, _pos_cosric)[0] == 'C' ? 'D' : 'A';
|
||||
rmovana.put(RMOVANA_SEZIONE, r_sezione);
|
||||
row_modified = true;
|
||||
}
|
||||
//descrizione
|
||||
@ -892,7 +914,7 @@ TToken_string& TVariazione_budget_mask::add_rmovana(const TRectype& movana, cons
|
||||
}
|
||||
|
||||
|
||||
int TVariazione_budget_mask::load_rmovana(const TString& cms, const bool include_cms_supp, TSheet_field& sf_righe)
|
||||
long TVariazione_budget_mask::load_rmovana(const TString& cms, const bool include_cms_supp, TSheet_field& sf_righe)
|
||||
{
|
||||
TString query;
|
||||
query << "USE RMOVANA KEY 4\n";
|
||||
@ -913,6 +935,7 @@ int TVariazione_budget_mask::load_rmovana(const TString& cms, const bool include
|
||||
trova_cms_supporto(cms);
|
||||
|
||||
TAssoc_array numreg_cms;
|
||||
long max_numreg = 0L;
|
||||
|
||||
//per ogni riga del recordset va ad aggiornare lo sheet sulla maschera (aggiunge la riga)
|
||||
const TRectype& movana = recset.cursor()->curr(LF_MOVANA);
|
||||
@ -923,7 +946,11 @@ int TVariazione_budget_mask::load_rmovana(const TString& cms, const bool include
|
||||
break;
|
||||
|
||||
TToken_string& row = add_rmovana(movana, rmovana, sf_righe);
|
||||
numreg_cms.add(row.get(_pos_numreg));
|
||||
const char* str_numreg = row.get(_pos_numreg);
|
||||
numreg_cms.add(str_numreg);
|
||||
const long numreg = atol(str_numreg);
|
||||
if (numreg > max_numreg)
|
||||
max_numreg = numreg;
|
||||
} //for(bool ok.move....
|
||||
|
||||
|
||||
@ -960,11 +987,11 @@ int TVariazione_budget_mask::load_rmovana(const TString& cms, const bool include
|
||||
if (str_saldo_prev.blank())
|
||||
aggiorna_saldi_preventivi(sf_righe, i);
|
||||
}
|
||||
return sf_righe.items();
|
||||
return max_numreg;
|
||||
}
|
||||
|
||||
|
||||
int TVariazione_budget_mask::load_saldana(const TString& cms, TSheet_field& sf_righe)
|
||||
int TVariazione_budget_mask::load_saldana(const TString& cms, const long max_numreg, TSheet_field& sf_righe)
|
||||
{
|
||||
//caricamento di tutti i saldi consuntivi che riguardano la commessa
|
||||
//chiave 2 per averli ordinati per conto
|
||||
@ -1012,6 +1039,29 @@ int TVariazione_budget_mask::load_saldana(const TString& cms, TSheet_field& sf_r
|
||||
}
|
||||
}
|
||||
|
||||
//ricava le date da mettere nelle righe generate da saldana e l'eventuale autofcomp
|
||||
TDate datacomp(TODAY), datafcomp(TODAY);
|
||||
bool autofcomp = false;
|
||||
|
||||
if (max_numreg > 0)
|
||||
{
|
||||
FOR_EACH_SHEET_ROW(sf_righe, r, riga)
|
||||
{
|
||||
const long curr_numreg = riga->get_long(_pos_numreg);
|
||||
if (curr_numreg == max_numreg)
|
||||
{
|
||||
const int curr_numrig = riga->get_int(_pos_numrig);
|
||||
if (curr_numrig > 0)
|
||||
{
|
||||
datacomp = riga->get(_pos_datacomp);
|
||||
datafcomp = riga->get(_pos_datafcomp);
|
||||
autofcomp = riga->get_char(_pos_autofcomp) > ' ';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//per ogni riga dell'assoc_array con conto/cdc/cms/fase/saldo va ad aggiornare lo sheet sulla maschera (aggiunge la riga)
|
||||
FOR_EACH_ASSOC_OBJECT(chiavi_saldana, obj, key, itm)
|
||||
{
|
||||
@ -1032,9 +1082,11 @@ int TVariazione_budget_mask::load_saldana(const TString& cms, TSheet_field& sf_r
|
||||
row.add(fase, _pos_fase);
|
||||
row.add(conto, _pos_conto);
|
||||
|
||||
const TDate oggi(TODAY);
|
||||
row.add(oggi, _pos_datacomp);
|
||||
row.add(oggi, _pos_datafcomp);
|
||||
row.add(datacomp, _pos_datacomp);
|
||||
row.add(autofcomp ? "X" : "", _pos_autofcomp);
|
||||
row.add(datafcomp, _pos_datafcomp);
|
||||
if (autofcomp)
|
||||
sf_righe.disable_cell(sf_righe.items() - 1, _pos_datafcomp);
|
||||
|
||||
//costo o ricavo? all'indbil l'ardua sentenza!
|
||||
TAnal_bill bill(conto, cdc, cms, fase);
|
||||
@ -1049,6 +1101,8 @@ int TVariazione_budget_mask::load_saldana(const TString& cms, TSheet_field& sf_r
|
||||
|
||||
//aggiunge una descrizione civetta
|
||||
row.add("Riga da saldo", _pos_descr);
|
||||
//ci mette il max_numreg
|
||||
row.add(max_numreg, _pos_numreg);
|
||||
//segna il tipo riga come saldo
|
||||
row.add("P", _pos_tipomov);
|
||||
}
|
||||
@ -1073,10 +1127,10 @@ int TVariazione_budget_mask::load()
|
||||
sf_righe.destroy();
|
||||
|
||||
//carica le righe dei movimenti preventivi
|
||||
const int righe_rmovana = load_rmovana(cms, include_cms_supp, sf_righe);
|
||||
const long max_numreg = load_rmovana(cms, include_cms_supp, sf_righe);
|
||||
|
||||
//carica le righe dei saldi consuntivi
|
||||
const int righe_saldana = load_saldana(cms, sf_righe);
|
||||
const int righe_saldana = load_saldana(cms, max_numreg, sf_righe);
|
||||
|
||||
//e poi aggiorna il video!
|
||||
sf_righe.force_update();
|
||||
|
@ -233,7 +233,12 @@ END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 10 "_ Il pulsante Tutti spunta le righe, una per ogni chiave Sede/Fase/Conto"
|
||||
PROMPT 1 10 "_ In fase di registrazione le righe provenienti da saldi consuntivi vengono assegnate all'ultimo movimento di preventivo"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 11 "_ Il pulsante Tutti spunta le righe, una per ogni chiave Sede/Fase/Conto"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
Loading…
x
Reference in New Issue
Block a user