Correzioni varie a nuovo saldaconto (gestione nac e pagamenti con segno inverso)
Aggiunto campo NUMDOCEXT in prima nota git-svn-id: svn://10.65.10.50/branches/R_10_00@22787 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
cb54862461
commit
7e9f0d51c5
@ -117,6 +117,7 @@ BEGIN
|
||||
OUTPUT O_DENCOM DENCOM
|
||||
OUTPUT O_CAP CAPCOM
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN ba4 -0
|
||||
END
|
||||
|
||||
NUMBER O_CAP 5
|
||||
@ -136,6 +137,7 @@ BEGIN
|
||||
DISPLAY "Codice@10" COM
|
||||
COPY OUTPUT O_COMUNE
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN ba4 -0
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 71 4
|
||||
|
@ -1382,7 +1382,6 @@ int TPrimanota_application::write(const TMask& m)
|
||||
if (causauto.full())
|
||||
{
|
||||
TCausale c(causauto);
|
||||
|
||||
if ((!gestione_saldaconto() || c.tipomov() == 0) && c.iva() == nessuna_iva)
|
||||
tipauto = causauto.full() ? 1 : 0;
|
||||
}
|
||||
|
@ -18,6 +18,7 @@
|
||||
#define F_ANNOES 115
|
||||
#define F_DATACOMP 116
|
||||
#define F_ANNOIVA 117
|
||||
#define F_NUMDOCEXT 130
|
||||
|
||||
#define F_CLIFO 128
|
||||
#define F_CLIENTE 151
|
||||
|
@ -47,7 +47,7 @@ END
|
||||
|
||||
STRING F_CODCAUS 3
|
||||
BEGIN
|
||||
PROMPT 1 5 "Causale "
|
||||
PROMPT 1 4 "Causale "
|
||||
FLAGS "UZ"
|
||||
FIELD CODCAUS
|
||||
USE LF_CAUSALI
|
||||
@ -66,7 +66,7 @@ END
|
||||
|
||||
STRING F_DESCRCAUS 50
|
||||
BEGIN
|
||||
PROMPT 25 5 ""
|
||||
PROMPT 25 4 ""
|
||||
USE LF_CAUSALI KEY 2
|
||||
INPUT DESCR F_DESCRCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
@ -77,7 +77,7 @@ END
|
||||
|
||||
LIST F_PROVVISORIO 1 24
|
||||
BEGIN
|
||||
PROMPT 1 6 "Movimento provvisorio "
|
||||
PROMPT 1 5 "Movimento provvisorio "
|
||||
FIELD PROVVIS
|
||||
ITEM " |No (movimento normale)"
|
||||
ITEM "P|Si (cancellabile)"
|
||||
@ -86,7 +86,7 @@ END
|
||||
|
||||
STRING F_TIPODOC 2
|
||||
BEGIN
|
||||
PROMPT 60 6 "Tipo documento "
|
||||
PROMPT 60 5 "Tipo documento "
|
||||
FIELD TIPODOC
|
||||
FLAGS "DG"
|
||||
MESSAGE COPY,K_TIPODOC
|
||||
@ -94,7 +94,7 @@ END
|
||||
|
||||
DATE F_DATADOC
|
||||
BEGIN
|
||||
PROMPT 1 7 "Data del documento "
|
||||
PROMPT 1 6 "Data del documento "
|
||||
FIELD DATADOC
|
||||
WARNING "Specificare una data del documento non superiore a quella dell'operazione"
|
||||
VALIDATE DATE_CMP_FUNC <= F_DATAREG
|
||||
@ -103,7 +103,7 @@ END
|
||||
|
||||
STRING F_NUMDOC 7
|
||||
BEGIN
|
||||
PROMPT 50 7 "Documento n. "
|
||||
PROMPT 50 6 "Documento n. "
|
||||
FIELD NUMDOC
|
||||
FLAGS "U"
|
||||
WARNING "La causale impone di specificare il numero documento"
|
||||
@ -112,7 +112,13 @@ END
|
||||
|
||||
BUTTON F_LINKDOC 3 1
|
||||
BEGIN
|
||||
PROMPT 73 7 "Doc."
|
||||
PROMPT 73 6 "Doc."
|
||||
END
|
||||
|
||||
STRING F_NUMDOCEXT 50
|
||||
BEGIN
|
||||
PROMPT 1 7 "Numero documento esteso "
|
||||
FIELD NUMDOCEXT
|
||||
END
|
||||
|
||||
NUMBER F_ANNOIVA 4
|
||||
|
@ -19,7 +19,7 @@ BEGIN
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 0 "@BMovimento IVA"
|
||||
END
|
||||
@ -35,7 +35,7 @@ END
|
||||
|
||||
DATE F_DATAREG
|
||||
BEGIN
|
||||
PROMPT 2 1 "Data operazione "
|
||||
PROMPT 1 1 "Data operazione "
|
||||
FIELD DATAREG
|
||||
MESSAGE COPY,H_DATAREG|COPY,F_ANNOIVA,7,10
|
||||
CHECKTYPE REQUIRED
|
||||
@ -50,7 +50,7 @@ END
|
||||
|
||||
DATE F_DATACOMP
|
||||
BEGIN
|
||||
PROMPT 2 2 "Data competenza "
|
||||
PROMPT 1 2 "Data competenza "
|
||||
FIELD DATACOMP
|
||||
FLAGS "G"
|
||||
END
|
||||
@ -72,7 +72,7 @@ END
|
||||
|
||||
STRING F_CODCAUS 3
|
||||
BEGIN
|
||||
PROMPT 2 3 "Causale "
|
||||
PROMPT 1 3 "Causale "
|
||||
FLAGS "UZ"
|
||||
FIELD CODCAUS
|
||||
USE LF_CAUSALI SELECT REG!=""
|
||||
@ -105,9 +105,17 @@ BEGIN
|
||||
ADD RUN cg0 -4
|
||||
END
|
||||
|
||||
STRING F_NUMDOC 7
|
||||
BEGIN
|
||||
PROMPT 1 4 "Documento n. "
|
||||
FIELD NUMDOC
|
||||
FLAGS "U"
|
||||
WARNING "La causale o il saldaconto richiedono il numero documento"
|
||||
END
|
||||
|
||||
DATE F_DATADOC
|
||||
BEGIN
|
||||
PROMPT 2 4 "Data documento "
|
||||
PROMPT 27 4 "Data documento "
|
||||
FIELD DATADOC
|
||||
WARNING "Inserire una data documento non superiore alla data dell'operazione"
|
||||
VALIDATE DATE_CMP_FUNC <= F_DATAREG
|
||||
@ -115,24 +123,22 @@ END
|
||||
|
||||
STRING F_TIPODOC 2
|
||||
BEGIN
|
||||
PROMPT 31 4 "Tipo documento "
|
||||
PROMPT 56 4 "Tipo "
|
||||
FIELD TIPODOC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_NUMDOC 7
|
||||
BEGIN
|
||||
PROMPT 50 4 "Documento n. "
|
||||
FIELD NUMDOC
|
||||
FLAGS "U"
|
||||
WARNING "La causale o il saldaconto richiedono il numero documento"
|
||||
END
|
||||
|
||||
BUTTON F_LINKDOC 3 1
|
||||
BEGIN
|
||||
PROMPT 73 4 "Doc."
|
||||
END
|
||||
|
||||
STRING F_NUMDOCEXT 50
|
||||
BEGIN
|
||||
PROMPT 1 5 "Numero documento esteso "
|
||||
FIELD NUMDOCEXT
|
||||
END
|
||||
|
||||
LIST F_SOLAIVA 1 3
|
||||
BEGIN
|
||||
PROMPT 1 6 "Movimento di sola IVA "
|
||||
|
@ -104,6 +104,7 @@ BEGIN
|
||||
OUTPUT O_DENCOM DENCOM
|
||||
OUTPUT O_CAP CAPCOM
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN ba4 -0
|
||||
END
|
||||
|
||||
NUMBER O_CAP 5
|
||||
@ -123,6 +124,7 @@ BEGIN
|
||||
DISPLAY "Codice@10" COM
|
||||
COPY OUTPUT O_COMUNE
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN ba4 -0
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 70 4
|
||||
|
@ -196,13 +196,18 @@ int TMovimentoPN::registra(bool re, bool force)
|
||||
const TRectype& m = curr();
|
||||
long numreg = m.get_long(MOV_NUMREG);
|
||||
|
||||
if (!re && numreg <= 0) // Tento di numerare automaticamente in caso di write
|
||||
if (numreg <= 0)
|
||||
{
|
||||
TLocalisamfile mov(LF_MOV); // Non sposto il file principale della relazione!
|
||||
numreg = 1;
|
||||
if (mov.last() == NOERR)
|
||||
numreg += mov.get_long(MOV_NUMREG);
|
||||
curr().put(MOV_NUMREG, numreg);
|
||||
if (!re) // Tento di numerare automaticamente in caso di write
|
||||
{
|
||||
TLocalisamfile mov(LF_MOV); // Non sposto il file principale della relazione!
|
||||
numreg = 1;
|
||||
if (mov.last() == NOERR)
|
||||
numreg += mov.get_long(MOV_NUMREG);
|
||||
curr().put(MOV_NUMREG, numreg);
|
||||
}
|
||||
else
|
||||
return _isnocurkey;
|
||||
}
|
||||
|
||||
int err = re ? TRelation::rewrite(force) : TRelation::write(force);
|
||||
@ -235,15 +240,12 @@ int TMovimentoPN::registra(bool re, bool force)
|
||||
r.put(RMI_TIPOATT, tipoatt);
|
||||
|
||||
const TString & indetr = r.get(RMI_TIPODET);
|
||||
|
||||
if (indetr.full())
|
||||
{
|
||||
const TRectype & det = cache().get("%DET", indetr);
|
||||
|
||||
const TRectype& det = cache().get("%DET", indetr);
|
||||
if (!det.empty() && !det.get_bool("FPC"))
|
||||
{
|
||||
TTable tab("%DET");
|
||||
|
||||
tab.curr() = det;
|
||||
tab.curr().put("FPC", "X");
|
||||
tab.rewrite();
|
||||
@ -256,7 +258,6 @@ int TMovimentoPN::registra(bool re, bool force)
|
||||
if (err != NOERR)
|
||||
return err;
|
||||
|
||||
|
||||
// Aggiorna data registrazione e protocollo IVA sul registro
|
||||
const TDate datareg(m.get(MOV_DATAREG));
|
||||
if (reg.not_empty())
|
||||
|
@ -585,7 +585,7 @@ bool TPrimanota_application::cg_handler(TMask_field& f, KEY k)
|
||||
TPrimanota_application& a = app();
|
||||
const TCurrency saldo(a.calcola_saldo());
|
||||
|
||||
if (!saldo.get_num().is_zero())
|
||||
if (!saldo.is_zero())
|
||||
{
|
||||
const char* ss = saldo.string(true);
|
||||
if (*ss == '-') ss++;
|
||||
|
@ -187,12 +187,8 @@ void TEasySolder_mask::save_sheet()
|
||||
}
|
||||
|
||||
TRectype newpag = partita.pagamento(rigaf, nrata, nrigp);
|
||||
TBill conto_banca; conto_banca.get(*this, G_GRUPPOC, G_CONTOC, G_SOTTOCONTOC);
|
||||
conto_banca.put(newpag, true);
|
||||
|
||||
newpag.put(PAGSCA_ACCSAL, a_saldo ? 'S' : 'A');
|
||||
newpag.put(PAGSCA_CODABIPR, get(G_ABI));
|
||||
newpag.put(PAGSCA_CODCABPR, get(G_CAB));
|
||||
|
||||
if (valuta.in_valuta())
|
||||
{
|
||||
newpag.put(PAGSCA_IMPORTOVAL, importo);
|
||||
@ -207,7 +203,23 @@ void TEasySolder_mask::save_sheet()
|
||||
newpag.put(PAGSCA_RITSOC, ritsoc);
|
||||
}
|
||||
|
||||
app().notify_edit_pagamento(partita, newpag, valuta, importo.is_zero() ? _numrig : 0);
|
||||
if (part.tipo() == tm_nota_credito)
|
||||
{
|
||||
const TBill conto_nullo;
|
||||
conto_nullo.put(newpag, true); // Azzera conto
|
||||
newpag.zero(PAGSCA_CODABIPR);
|
||||
newpag.zero(PAGSCA_CODCABPR);
|
||||
app().notify_edit_pagamento(partita, newpag, valuta, importo.is_zero() ? _numrig : 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
TBill conto_banca;
|
||||
conto_banca.get(*this, G_GRUPPOC, G_CONTOC, G_SOTTOCONTOC);
|
||||
conto_banca.put(newpag, true);
|
||||
newpag.put(PAGSCA_CODABIPR, get(G_ABI));
|
||||
newpag.put(PAGSCA_CODCABPR, get(G_CAB));
|
||||
app().notify_edit_pagamento(partita, newpag, valuta, importo.is_zero() ? _numrig : 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -512,13 +524,11 @@ bool TEasySolder_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
real residuo = m.get(S_RESIDUO);
|
||||
if (residuo.is_zero())
|
||||
{
|
||||
const int anno = m.get_int(S_ANNO);
|
||||
const TString8 num = m.get(S_PARTITA);
|
||||
const int nriga = m.get_int(S_RIGAF);
|
||||
const int nrata = m.get_int(S_RATA);
|
||||
const TPartita& game = app().partite().partita(_conto, anno, num);
|
||||
|
||||
|
||||
const int anno = m.get_int(S_ANNO);
|
||||
const TString8 num = m.get(S_PARTITA);
|
||||
const int nriga = m.get_int(S_RIGAF);
|
||||
const int nrata = m.get_int(S_RATA);
|
||||
const TPartita& game = app().partite().partita(_conto, anno, num);
|
||||
if (game.esiste(nriga, nrata))
|
||||
residuo = game.rata(nriga, nrata).residuo(true).valore();
|
||||
}
|
||||
@ -662,27 +672,35 @@ static int nrigp_pagamento_locale(const TSolder_tree& st)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool is_lonely_nc(TPartita& game)
|
||||
static int has_lonely_nc(TPartita& game)
|
||||
{
|
||||
int numrig[8]; memset(numrig, 0, sizeof(numrig));
|
||||
for (int i = game.last(); i > 0; i = game.pred(i))
|
||||
numrig[game.riga(i).tipo()]++;
|
||||
return numrig[tm_fattura] == 0 && numrig[tm_nota_credito] > 0;
|
||||
int ncs = 0;
|
||||
const TRecord_array& u = game.unassigned();
|
||||
for (int i = u.last_row(); i > 0; i = u.pred_row(i))
|
||||
{
|
||||
const TRiga_partite& r = game.riga(i);
|
||||
if (r.tipo() == tm_nota_credito)
|
||||
{
|
||||
ncs = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ncs;
|
||||
}
|
||||
|
||||
|
||||
// Aggiunge una nota di credito non associata a fattura
|
||||
static bool add_lonely_nc(TPartita& game, TSheet_field& sheet, int rigasheet)
|
||||
{
|
||||
if (!is_lonely_nc(game))
|
||||
int nrigp = has_lonely_nc(game);
|
||||
if (nrigp <= 0)
|
||||
return false;
|
||||
|
||||
const int nrigp = game.prima_riga(-1, tm_nota_credito);
|
||||
const TRiga_partite& riga = game.riga(nrigp);
|
||||
|
||||
TToken_string& row = sheet.row(rigasheet);
|
||||
row.add(game.codice_valuta(), sheet.cid2index(S_VALUTA));
|
||||
|
||||
const char expected_section = riga.get_char(PART_TIPOCF) == 'C' ? 'D' : 'A';
|
||||
const TCausale& causale = app().causale();
|
||||
const char expected_section = causale.sezione_clifo() == 'D' ? 'A' : 'D';
|
||||
|
||||
TImporto res = game.calcola_saldo(true);
|
||||
res.normalize(expected_section);
|
||||
@ -700,6 +718,7 @@ static bool add_lonely_nc(TPartita& game, TSheet_field& sheet, int rigasheet)
|
||||
set_row_str(sheet, row, S_DATASCAD, riga.get(PART_DATAPAG));
|
||||
if (game.in_valuta())
|
||||
{
|
||||
row.add(game.codice_valuta(), sheet.cid2index(S_VALUTA));
|
||||
TImporto reseur = riga.importo(false);
|
||||
reseur.normalize(expected_section);
|
||||
set_row_currency(sheet, row, S_RESIDUO_EUR, reseur.valore());
|
||||
@ -712,7 +731,8 @@ static bool add_lonely_nc(TPartita& game, TSheet_field& sheet, int rigasheet)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */)
|
||||
// static callback function
|
||||
bool TEasySolder_mask::sheet_rate_filler(TTree& tree, void* jolly, word /* flags */)
|
||||
{
|
||||
const TSolder_tree& st = (const TSolder_tree&)tree;
|
||||
const TToken_string& curr = *(TToken_string*)st.curr_node();
|
||||
@ -740,7 +760,14 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */)
|
||||
return false;
|
||||
}
|
||||
|
||||
const tipo_movimento tm = app().causale().tipomov();
|
||||
TSheet_field& sheet = *(TSheet_field*)jolly;
|
||||
|
||||
const TCausale& causale = app().causale();
|
||||
const tipo_movimento tm = causale.tipomov();
|
||||
|
||||
const char pag_section = ((TEasySolder_mask&)sheet.mask()).calcola_sezione();
|
||||
const char rat_section = pag_section == 'D' ? 'A' : 'D';
|
||||
|
||||
switch (tm)
|
||||
{
|
||||
case tm_nota_credito:
|
||||
@ -782,7 +809,6 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */)
|
||||
break;
|
||||
}
|
||||
|
||||
TSheet_field& sheet = *(TSheet_field*)jolly;
|
||||
if (good_rat || good_pag) // Creo una nuova riga solo se necessario
|
||||
{
|
||||
TToken_string& row = sheet.row(-1);
|
||||
@ -796,9 +822,8 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */)
|
||||
}
|
||||
else
|
||||
{
|
||||
const char expected_section = scad->get_char(SCAD_TIPOCF) == 'C' ? 'D' : 'A';
|
||||
res = scad->residuo(true);
|
||||
res.normalize(expected_section);
|
||||
res.normalize(rat_section);
|
||||
}
|
||||
set_row_currency(sheet, row, S_RESIDUO, res.valore());
|
||||
const TImporto tot = scad->importo(true);
|
||||
@ -837,7 +862,7 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */)
|
||||
}
|
||||
if (good_pag)
|
||||
{
|
||||
if (!good_rat && nrigp > 1 && is_lonely_nc(game))
|
||||
if (!good_rat && nrigp > 1 && has_lonely_nc(game))
|
||||
add_lonely_nc(game, sheet, sheet.items()-1);
|
||||
|
||||
const TRiga_partite& rigp = game.riga(nrigp);
|
||||
@ -884,7 +909,7 @@ static bool sheet_rate_filler(TTree& tree, void* jolly, word /* flags */)
|
||||
else
|
||||
{
|
||||
// Nota di credito non assegnata e senza pagamenti n questo movimento
|
||||
if (level == 4 && nriga == TPartita::UNASSIGNED && nrigp == 0 && curr.ends_with("|1") && is_lonely_nc(game))
|
||||
if (level == 4 && nriga == TPartita::UNASSIGNED && nrigp == 0 && has_lonely_nc(game))
|
||||
{
|
||||
const TImporto sld = game.calcola_saldo(true);
|
||||
if (!sld.is_zero())
|
||||
@ -899,11 +924,11 @@ char TEasySolder_mask::calcola_sezione() const
|
||||
{
|
||||
const char tipoc = _conto.tipo();
|
||||
const TCausale& causale = app().causale();
|
||||
const tipo_movimento tm = causale.tipomov();
|
||||
char sezione = causale.sezione(1); // Usa la sezione della causale
|
||||
char sezione = causale.sezione_clifo(); // Usa la sezione della causale
|
||||
|
||||
if (sezione != 'A' && sezione != 'D') // Se non c'e' la sezione bell'e' ch'e' pronta
|
||||
{
|
||||
const tipo_movimento tm = causale.tipomov();
|
||||
if (tm == tm_fattura || tm == tm_insoluto) // calcola in base al tipo movimento e
|
||||
sezione = (tipoc == 'C') ? 'D' : 'A'; // al tipo cliente/fornitore
|
||||
else
|
||||
@ -916,7 +941,7 @@ char TEasySolder_mask::calcola_sezione() const
|
||||
TBill bill; causale.bill(1, bill); // Legge primo conto causale
|
||||
const char tc = bill.tipo();
|
||||
if (tc > ' ' && tc != tipoc)
|
||||
sezione = (sezione == 'D') ? 'A' : 'D'; // scambia segno
|
||||
sezione = (sezione == 'D') ? 'A' : 'D'; // inverti sezione
|
||||
}
|
||||
|
||||
return sezione;
|
||||
@ -1120,6 +1145,10 @@ void TEasySolder_mask::init(const TBill& conto, long numreg, int numrig)
|
||||
reset(id);
|
||||
}
|
||||
|
||||
// Nel caso di nota di credito devo nascondere il conto (fuorviante)
|
||||
for (short id = G_ABI; id <= G_DESCONTOC; id++)
|
||||
show(id, _tipomov != tm_nota_credito);
|
||||
|
||||
if (_tree == NULL)
|
||||
{
|
||||
_tree = new TSolder_tree;
|
||||
|
@ -40,6 +40,8 @@ protected:
|
||||
real eur2val(const real& val) const;
|
||||
TImporto eur2val(const TImporto& imp) const;
|
||||
|
||||
static bool sheet_rate_filler(TTree& tree, void* jolly, word flags);
|
||||
|
||||
public:
|
||||
bool changed() const { return _changed; }
|
||||
void init(const TBill& conto, long numreg, int numrig);
|
||||
|
@ -1141,6 +1141,9 @@ bool TGrid_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
||||
}
|
||||
else
|
||||
refused = true;
|
||||
// Altrimenti sbaglia a ridisegnare le righe della DBService!
|
||||
XI_RCT rct; xi_get_rect(_obj, &rct);
|
||||
xi_invalidate_rect(xi_get_window(_obj), &rct);
|
||||
}
|
||||
break;
|
||||
case XIE_GET_PERCENT:
|
||||
@ -1177,10 +1180,15 @@ bool TGrid_control::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
|
||||
{
|
||||
if (xiev->v.select.column == 0)
|
||||
{
|
||||
if (rec == _cur_rec) // Simulo intercettazione doppio click
|
||||
_grid->on_record_button(rec);
|
||||
if (_read_only)
|
||||
refused = true;
|
||||
{
|
||||
refused = !select(rec);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (rec == _cur_rec) // Simulo intercettazione doppio click
|
||||
_grid->on_record_button(rec);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2259,6 +2267,10 @@ TMastrino_set::TMastrino_set(TMastrini_grid& g)
|
||||
add_field(_alfafld,-108, 1, "Sezione"); // Sezione
|
||||
add_field(_realfld, 109, 13); // Saldo giornaliero
|
||||
add_field(_alfafld,-109, 1, "Sezione"); // Sezione giornaliera
|
||||
|
||||
const bool show_cms = main_app().has_module(CMAUT) || main_app().has_module(CAAUT);
|
||||
if (show_cms)
|
||||
add_field(_alfafld, 110, 40); // Commessa
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -2378,46 +2390,20 @@ bool TGrid_mask::export_handler(TMask_field& f, KEY k)
|
||||
|
||||
bool TGrid_mask::on_key(KEY k)
|
||||
{
|
||||
long rec = grid().selected();
|
||||
switch (k)
|
||||
{
|
||||
case K_LHOME:
|
||||
rec = 0;
|
||||
break;
|
||||
case K_PREV:
|
||||
rec -= _grid->visible_rows();
|
||||
if (rec < 0) rec = 0;
|
||||
break;
|
||||
case K_UP:
|
||||
if (rec > 0)
|
||||
rec--;
|
||||
break;
|
||||
case K_DOWN:
|
||||
if (rec < _grid->items()-1)
|
||||
rec++;
|
||||
break;
|
||||
case K_NEXT:
|
||||
rec += _grid->visible_rows();
|
||||
if (rec >= _grid->items())
|
||||
rec = _grid->items()-1;
|
||||
break;
|
||||
case K_LEND:
|
||||
rec = _grid->items()-1;
|
||||
break;
|
||||
case K_ENTER:
|
||||
case K_CTRL+'+':
|
||||
case K_CTRL+'-':
|
||||
if (focus_field().dlg() == _grid->dlg())
|
||||
{
|
||||
const long rec = grid().selected();
|
||||
_grid->on_dbl_cell(rec, DLG_USER);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (rec != grid().selected())
|
||||
{
|
||||
grid().select(rec);
|
||||
return true;
|
||||
}
|
||||
|
||||
return TMask::on_key(k);
|
||||
}
|
||||
@ -2436,7 +2422,7 @@ long TGrid_mask::handler(WINDOW win, EVENT* ep)
|
||||
|
||||
if (_last_grid)
|
||||
{
|
||||
TGrid_field& sht = (TGrid_field&)*_last_grid;
|
||||
//TGrid_field& sht = (TGrid_field&)*_last_grid;
|
||||
MENU_ITEM* menu = xvt_res_get_menu(BROWSE_BAR);
|
||||
|
||||
if (menu != NULL)
|
||||
|
@ -1,3 +1,3 @@
|
||||
23
|
||||
0
|
||||
$mov|0|0|421|0|Movimenti di prima nota|||
|
||||
$mov|0|0|471|0|Movimenti di prima nota|||
|
||||
|
@ -1,5 +1,5 @@
|
||||
23
|
||||
54
|
||||
55
|
||||
ANNOES|9|4|0|Codice esercizio
|
||||
NUMREG|3|7|0|Numero di operazione
|
||||
DATAREG|5|8|0|Data operazione
|
||||
@ -8,6 +8,7 @@ DATADOC|5|8|0|Data documento
|
||||
DATA74TER|5|8|0|Data per art. 74 ter
|
||||
MESELIQ|2|2|0|Mese per liquidazione differita
|
||||
NUMDOC|1|7|0|Numero documento
|
||||
NUMDOCEXT|1|50|0|Numero documento esteso
|
||||
TIPODOC|1|2|0|Tipo documento
|
||||
CODCAUS|1|3|0|Codice causale
|
||||
DESCR|1|50|0|Descrizione
|
||||
|
Loading…
x
Reference in New Issue
Block a user