Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
personalizzazione crpa in corso


git-svn-id: svn://10.65.10.50/trunk@20367 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2010-04-21 15:41:43 +00:00
parent 21f1a81ccd
commit 837c74f740
3 changed files with 261 additions and 66 deletions

View File

@ -1,5 +1,6 @@
#include <applicat.h>
#include <automask.h>
#include <config.h>
#include <progind.h>
#include <recarray.h>
#include <textset.h>
@ -17,16 +18,32 @@
///////////////////////////////////////////////////////////
class TVariazione_budget_mask : public TAutomask
{
bool _dirty;
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void carica_rmovana();
int carica_rmovana();
bool one_checked() const; //controlla se nella colonna dei check ce ne è almeno 1 checkato (on_field)
void check_all(const bool checked); //checka-dechecka la colonna dei check (on_field)
public:
TVariazione_budget_mask();
~TVariazione_budget_mask();
};
TVariazione_budget_mask::TVariazione_budget_mask() :TAutomask ("ps1001300a")
{
//carica la causale che trova nel ditta.ini
TConfig ditta_ini(CONFIG_DITTA, "ps1001");
set(F_CODCAUS, ditta_ini.get("CodCaus"));
}
TVariazione_budget_mask::~TVariazione_budget_mask()
{
//salva nel ditta.ini la causale sulla maschera
TConfig ditta_ini(CONFIG_DITTA, "ps1001");
ditta_ini.set("CodCaus", get(F_CODCAUS));
}
bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
@ -34,9 +51,36 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e,
switch (o.dlg())
{
case F_CODCMS:
{
if (e == fe_modify)
carica_rmovana();
{
bool e = carica_rmovana() == 0;
o.enable(e);
enable(F_DESCRIZ, e);
}
break;
case F_DATAINICMS:
case F_DATAFINECMS:
if (e == fe_modify)
_dirty = true;
break;
case DLG_CANCEL:
if (e == fe_button)
{
if (_dirty)
{
//chiede se salvare
}
enable(F_CODCMS);
enable(F_DESCRIZ);
sfield(F_RIGHE).destroy();
_dirty = false;
return false;
}
break;
case DLG_CHECKALL:
if (e == fe_button)
{
check_all(!one_checked());
}
break;
default:
@ -46,7 +90,31 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e,
}
void TVariazione_budget_mask::carica_rmovana()
//controlla sulla colonna delle spunte se almeno una è checkata
bool TVariazione_budget_mask::one_checked() const
{
TSheet_field& sf_righe = sfield(F_RIGHE);
FOR_EACH_SHEET_ROW(sf_righe, i, riga)
{
if (riga->get_char(0) > ' ')
return true;
}
return false;
}
//checka-dechecka la colonna di spunte dello sheet
void TVariazione_budget_mask::check_all(const bool checked)
{
TSheet_field& sf_righe = sfield(F_RIGHE);
FOR_EACH_SHEET_ROW(sf_righe, i, riga)
riga->add(checked ? "X" : "", 0);
sf_righe.force_update();
}
int TVariazione_budget_mask::carica_rmovana()
{
TString query;
query << "USE RMOVANA KEY 4\n";
@ -77,11 +145,11 @@ void TVariazione_budget_mask::carica_rmovana()
//chiave iniziale di riga
const TString& cdc = rmovana.get(RMOVANA_CODCCOSTO).as_string();
row.add(cdc, 0);
row.add(cdc, 1);
const TString& fase = rmovana.get(RMOVANA_CODFASE).as_string();
row.add(fase, 1);
row.add(fase, 2);
const TString& conto = rmovana.get(RMOVANA_CODCONTO).as_string();
row.add(conto, 2);
row.add(conto, 3);
//date competenza iniziale e finale
const TDate datacomp = rmovana.get("MOVANA."MOVANA_DATACOMP).as_date();
@ -98,44 +166,46 @@ void TVariazione_budget_mask::carica_rmovana()
if (!datafcomp.ok())
datafcomp = datacomp;
row.add(datacomp, 3);
row.add(datafcomp, 4);
row.add(datacomp, 4);
row.add(autofcomp ? "X" : "", 5);
row.add(datafcomp, 6);
//costo o ricavo? all'indbil l'ardua sentenza!
TAnal_bill bill(conto, cdc, cms, fase);
const int indbil = bill.indicatore_bilancio();
const char* str_indbil = indbil == 3 ? "C" : "R";
row.add(str_indbil, 5);
row.add(str_indbil, 7);
real valore = rmovana.get(RMOVANA_IMPORTO).as_real();
const char sezione = rmovana.get(RMOVANA_SEZIONE).as_string()[0];
TImporto importo(sezione, valore);
importo.normalize(indbil == 3 ? 'D' : 'A');
valore = importo.valore();
row.add(valore.string(), 6);
row.add(valore.string(), 8);
//recupera il saldo finale in base alla chiave cms/cdc/fase/conto e lo mette nel campo consuntivo
//recupera il saldo finale consuntivo! in base alla chiave cms/cdc/fase/conto e lo mette nel campo consuntivo
const TDate dataini, datafin;
const TSaldanal& saldanal = ca_saldo(bill, dataini, datafin, _saldanal_consuntivo | _saldanal_ultima_imm);
TImporto saldo_finale = saldanal._fin;
saldo_finale.normalize(indbil == 3 ? 'D' : 'A');
const real saldo_finale_valore = saldo_finale.valore();
row.add(saldo_finale_valore.string(), 7);
row.add(saldo_finale_valore.string(), 9);
//completa la riga
row.add(rmovana.get(RMOVANA_DESCR).as_string(), 8);
row.add(rmovana.get(RMOVANA_NUMREG).as_int(), 9);
row.add(rmovana.get(RMOVANA_NUMRIG).as_int(), 10);
row.add(rmovana.get(RMOVANA_DESCR).as_string(), 10);
row.add(rmovana.get(RMOVANA_NUMREG).as_int(), 11);
row.add(rmovana.get(RMOVANA_NUMRIG).as_int(), 12);
const TString& tipomov = rmovana.get("MOVANA."MOVANA_TIPOMOV).as_string();
row.add(tipomov, 11);
row.add(tipomov, 13);
//disabilita tutti i campi ma non l'intera riga, perchè deve poter cliccare sul numero riga..
//..per procedere alle operazioni di pareggio
if (tipomov != "V")
sf_righe.disable_cell(sf_righe.items() - 1, -1);
//if (tipomov != "V")
//sf_righe.disable_cell(sf_righe.items() - 1, -1);
}
sf_righe.force_update();
return sf_righe.items();
}
///////////////////////////////////////

View File

@ -1,19 +1,32 @@
//campi ps1001300a.uml
#define F_CODCMS 201
#define F_DESCRIZ 202
#define F_RIGHE 210
#define F_CODCMS 201
#define F_DESCRIZ 202
#define F_DATAINICMS 203
#define F_DATAFINECMS 204
#define F_PROROGATA 205
#define F_DATAPRORCMS 206
#define F_DATAREG 207
#define F_CODCAUS 208
#define F_DESCAUS 209
#define F_RIGHE 220
//bottoni
#define DLG_CHECKALL 250
//campi dello sheet
#define F_CDC 101
#define F_FASE 102
#define F_CONTO 103
#define F_DATACOMP 104
#define F_DATAFCOMP 105
#define F_COSRIC 106
#define F_IMPORTO 107
#define F_MATURATO 108
#define F_DESCR 109
#define F_NUMREG 110
#define F_NUMRIG 111
#define F_TIPOMOV 112
#define S_CHECK 101
#define S_CDC 102
#define S_FASE 103
#define S_CONTO 104
#define S_DATACOMP 105
#define S_AUTOFCOMP 106
#define S_DATAFCOMP 107
#define S_COSRIC 108
#define S_IMPORTO 109
#define S_MATURATO 110
#define S_DESCR 111
#define S_NUMREG 112
#define S_NUMRIG 113
#define S_TIPOMOV 114

View File

@ -1,26 +1,68 @@
#include "ps1001300a.h"
TOOLBAR "" 0 0 0 2
#include <stdbar.h>
BUTTON DLG_SAVEREC 2 2
BEGIN
PROMPT 1 1 "~Salva"
PICTURE TOOL_SAVEREC
END
BUTTON DLG_NULL 4 2
BEGIN
PROMPT 2 1 ""
PICTURE 0
END
BUTTON DLG_CHECKALL 2 2
BEGIN
PROMPT 3 1 "~Tutti"
PICTURE TOOL_MULTISEL
END
BUTTON DLG_NULL 4 2
BEGIN
PROMPT 2 1 ""
PICTURE 0
END
//allinea alla dataini
//allinea alla data fine
BUTTON DLG_NULL 4 2
BEGIN
PROMPT 2 1 ""
PICTURE 0
END
#include <cancelbar.h>
ENDPAGE
PAGE "Variazione Budget" 0 2 0 0
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 0 0 "@bCommessa"
END
STRING F_CODCMS 20
BEGIN
PROMPT 1 1 "Commessa "
PROMPT 1 1 ""
USE LF_COMMESSE
INPUT CODCMS F_CODCMS
DISPLAY "Codice@20" CODCMS
DISPLAY "Descrizione@50" DESCRIZ
OUTPUT F_CODCMS CODCMS
OUTPUT F_DESCRIZ DESCRIZ
OUTPUT F_DATAINICMS DATAINIZIO
OUTPUT F_DATAFINECMS DATAFINE
OUTPUT F_PROROGATA PROROGA
OUTPUT F_DATAPRORCMS DATAPROR
CHECKTYPE REQUIRED
END
STRING F_DESCRIZ 50 44
STRING F_DESCRIZ 50
BEGIN
PROMPT 34 1 ""
PROMPT 25 1 ""
USE LF_COMMESSE KEY 2
INPUT DESCRIZ F_DESCRIZ
DISPLAY "Descrizione@50" DESCRIZ
@ -29,18 +71,78 @@ BEGIN
CHECKTYPE REQUIRED
END
DATE F_DATAINICMS
BEGIN
PROMPT 1 2 "Inizio "
END
DATE F_DATAFINECMS
BEGIN
PROMPT 22 2 "Fine "
END
BOOL F_PROROGATA
BEGIN
PROMPT 43 2 "Prorogata"
MESSAGE FALSE CLEAR,F_DATAPRORCMS
MESSAGE ENABLE,F_DATAPRORCMS
END
DATE F_DATAPRORCMS
BEGIN
PROMPT 57 2 "Proroga "
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 0 4 "@bParametri movimenti analitici da generare"
END
DATE F_DATAREG
BEGIN
PROMPT 1 5 "Data reg. "
CHECKTYPE REQUIRED
FLAGS "A"
END
STRINGA F_CODCAUS 3
BEGIN
PROMPT 24 5 "Causale "
USE LF_CAUSALI SELECT MOVIND!=''
INPUT CODCAUS F_CODCAUS
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CODCAUS CODCAUS
OUTPUT F_DESCAUS DESCR
CHECKTYPE REQUIRED
FLAGS "U"
END
STRINGA F_DESCAUS 50 37
BEGIN
PROMPT 38 5 ""
USE LF_CAUSALI KEY 2 SELECT MOVIND!=''
INPUT DESCR F_DESCAUS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" CODCAUS
COPY OUTPUT F_CODCAUS
CHECKTYPE REQUIRED
END
TEXT -1
BEGIN
PROMPT 0 3 "@bRighe movimenti di budget"
PROMPT 0 7 "@bRighe movimenti di budget"
END
SPREADSHEET F_RIGHE
BEGIN
PROMPT 1 4 "Righe"
PROMPT 1 8 "Righe"
ITEM "@1C"
ITEM "Sede@4"
ITEM "Fase@5"
ITEM "Conto@12"
ITEM "Iniz comp."
ITEM "AC@C"
ITEM "Fine comp."
ITEM "C/R"
ITEM "Importo@15"
@ -57,67 +159,77 @@ ENDMASK
/////////////////////////////////////////
//maschera di riga
PAGE "Riga analitica" -1 -1 70 14
PAGE "Riga analitica" -1 -1 70 15
STRING F_CDC 4
BOOLEAN S_CHECK
BEGIN
PROMPT 1 1 "Sede "
PROMPT 1 1 "Applica "
END
STRING F_FASE 5
STRING S_CDC 4
BEGIN
PROMPT 1 2 "Fase "
PROMPT 1 2 "Sede "
END
STRING F_CONTO 12
STRING S_FASE 5
BEGIN
PROMPT 1 3 "Conto "
PROMPT 1 3 "Fase "
END
DATE F_DATACOMP
STRING S_CONTO 12
BEGIN
PROMPT 1 4 "Ini.comp "
PROMPT 1 4 "Conto "
END
DATE F_DATAFCOMP
DATE S_DATACOMP
BEGIN
PROMPT 1 5 "Fin.comp "
PROMPT 1 5 "Ini.comp "
END
STRING F_COSRIC 1
BOOLEAN S_AUTOFCOMP
BEGIN
PROMPT 1 6 "Cst/Ric "
PROMPT 1 6 "AutoComp "
END
NUMBER F_IMPORTO 15 2
DATE S_DATAFCOMP
BEGIN
PROMPT 1 7 "Importo "
PROMPT 1 7 "Fin.comp "
END
NUMBER F_MATURATO 15 2
STRING S_COSRIC 1
BEGIN
PROMPT 1 8 "Maturato "
PROMPT 1 8 "Cst/Ric "
END
NUMBER S_IMPORTO 15 2
BEGIN
PROMPT 1 9 "Importo "
END
NUMBER S_MATURATO 15 2
BEGIN
PROMPT 1 10 "Maturato "
FLAGS "L"
END
STRING F_DESCR 50
STRING S_DESCR 50
BEGIN
PROMPT 1 9 "Descr. "
PROMPT 1 11 "Descr. "
END
NUMBER F_NUMREG 7
NUMBER S_NUMREG 7
BEGIN
PROMPT 1 10 "N. reg. "
PROMPT 1 12 "N. reg. "
END
NUMBER F_NUMRIG 3
NUMBER S_NUMRIG 3
BEGIN
PROMPT 1 11 "N. riga "
PROMPT 1 13 "N. riga "
END
STRING F_TIPOMOV 1
STRING S_TIPOMOV 1
BEGIN
PROMPT 1 12 "Tipo "
PROMPT 1 14 "Tipo "
END
ENDPAGE