Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : GF20080 E' necessario prevedere una voce di menù, nella gestione degli effetti attivi che permetta di togliere i flags di contabilizzato agli effetti presenti nella distinta che si vuole ricontabilizzare ( nella pagina parametri della voce di menù aggiornamento effetti). Ciò allo scopo di poter ricontabilizzare la distinta attiva in questione. Sarebbe utile che la procedura segnalasse anche il n° di movimento da eliminare in prima nota relativo quella distinta che risulta già contabilizzata e che si vuole ricontabilizzare e che indicasse inoltre se eventualmente il movimento è già stato, o meno, stampato su bollato. GF20082 I due tasti di scorrimento sul primo e ultimo record non funzionano. git-svn-id: svn://10.65.10.50/trunk@11430 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
07150cd475
commit
c5aae552a6
@ -33,6 +33,7 @@ protected:
|
||||
virtual bool remove();
|
||||
virtual TMask* get_mask(int mode) {return _msk;}
|
||||
virtual bool changing_mask(int mode) {return FALSE;}
|
||||
virtual bool has_filtered_cursor() const { return true; }
|
||||
static bool tipodist_handler(TMask_field& f, KEY k);
|
||||
static bool importo_handler(TMask_field& f, KEY k);
|
||||
static bool imp_aut_handler(TMask_field& f, KEY k);
|
||||
@ -42,6 +43,7 @@ protected:
|
||||
static bool annulla_handler(TMask_field& f, KEY k);
|
||||
static bool data_handler(TMask_field& f, KEY k);
|
||||
static bool ordina_handler(TMask_field& f, KEY k);
|
||||
static bool uncontabilize_handler(TMask_field& f, KEY k);
|
||||
static void calcola_totale();
|
||||
static void calcola();
|
||||
static void aggiungi();
|
||||
@ -78,29 +80,33 @@ void TVariazione_distinte::init_query_mode(TMask&)
|
||||
_msk->reset(F_TOTIMP);
|
||||
_msk->enable(F_TIPOPAG);
|
||||
_msk->enable(F_TIPOCF);
|
||||
_msk->hide(F_UNCONTABIL);
|
||||
}
|
||||
|
||||
// quando si va in insert mode resetta i campi della maschera relativi
|
||||
// ai totali, abilita i campi relativi alla valuta e disabilta i campi
|
||||
// relativi alla chiave di ricerca
|
||||
void TVariazione_distinte::init_insert_mode(TMask&)
|
||||
void TVariazione_distinte::init_insert_mode(TMask& m)
|
||||
{
|
||||
_msk->reset(F_TOTIMP);
|
||||
_msk->enable(F_CODVAL);
|
||||
_msk->disable(F_NUMBER);
|
||||
_msk->disable(F_TIPODIST);
|
||||
_msk->enable(F_TIPOPAG);
|
||||
_msk->enable(F_TIPOCF);
|
||||
m.reset(F_TOTIMP);
|
||||
m.enable(F_CODVAL);
|
||||
m.disable(F_NUMBER);
|
||||
m.disable(F_TIPODIST);
|
||||
m.enable(F_TIPOPAG);
|
||||
m.enable(F_TIPOCF);
|
||||
}
|
||||
|
||||
// quando si va in modify mode disabilta i campi relativi alla chiave
|
||||
// di ricerca
|
||||
void TVariazione_distinte::init_modify_mode(TMask&)
|
||||
void TVariazione_distinte::init_modify_mode(TMask& m)
|
||||
{
|
||||
_msk->disable(F_NUMBER);
|
||||
_msk->disable(F_TIPODIST);
|
||||
_msk->disable(F_TIPOPAG);
|
||||
_msk->disable(F_TIPOCF);
|
||||
m.disable(F_NUMBER);
|
||||
m.disable(F_TIPODIST);
|
||||
m.disable(F_TIPOPAG);
|
||||
m.disable(F_TIPOCF);
|
||||
|
||||
const bool cont = _distinta->contabilizzata();
|
||||
m.show(F_UNCONTABIL, cont);
|
||||
}
|
||||
|
||||
// ritorna il prossimo numero di distinta valido
|
||||
@ -190,7 +196,7 @@ int TVariazione_distinte::read(TMask& m)
|
||||
if (err == NOERR)
|
||||
{
|
||||
//resetto l'array che contiene gli effetti nella distinta
|
||||
err = _distinta->reset();
|
||||
_distinta->reset();
|
||||
// legge la distinta dal record corrente della relazione
|
||||
err = _distinta->read(_rel->curr());
|
||||
if (err == NOERR)
|
||||
@ -394,6 +400,7 @@ bool TVariazione_distinte::user_create()
|
||||
set_search_field(F_NUMBER);//setto il campo di ricerca della distinta
|
||||
_msk->set_handler(F_TIPODIST, tipodist_handler);
|
||||
_msk->set_handler(F_IMPBUTTON, importo_handler);
|
||||
_msk->set_handler(F_UNCONTABIL, uncontabilize_handler);
|
||||
_m2->set_handler(F_TOTIMPDIST, imp_aut_handler);
|
||||
_m2->set_handler(DLG_OK, conferma_handler);
|
||||
_m2->set_handler(DLG_CANCEL, annulla_handler);
|
||||
@ -778,6 +785,46 @@ bool TVariazione_distinte::ordina_handler(TMask_field& f, KEY k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TVariazione_distinte::uncontabilize_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
const char tipodist = m.get(F_TIPODIST)[0];
|
||||
const long numdist = m.get_long(F_NUMBER);
|
||||
if (yesno_box(TR("Si desidera annullare la contabilizzazione della distinta %ld?"), numdist))
|
||||
{
|
||||
TRelation rel(LF_EFFETTI);
|
||||
TRectype& rec = rel.curr();
|
||||
rec.put(EFF_TIPODIST, tipodist);
|
||||
rec.put(EFF_NDIST,numdist);
|
||||
TCursor cur(&rel, "", 4, &rec, &rec);
|
||||
const TRecnotype items = cur.items();
|
||||
cur.freeze();
|
||||
|
||||
TAssoc_array movs;
|
||||
for (cur = 0; cur.pos() < items; ++cur)
|
||||
{
|
||||
movs.add(rec.get(EFF_NUMREG));
|
||||
rec.zero(EFF_EFFCONT);
|
||||
rec.zero(EFF_NUMREG);
|
||||
rel.rewrite();
|
||||
}
|
||||
|
||||
if (movs.items() > 0)
|
||||
{
|
||||
TString msg;
|
||||
msg = TR("E' necessario cancellare i seguenti movimenti contabili:\n");
|
||||
FOR_EACH_ASSOC_OBJECT(movs, hash, key, obj)
|
||||
msg << key << ' ';
|
||||
warning_box(msg);
|
||||
}
|
||||
m.stop_run(K_ESC);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Metodo che calcola i totali relativi alla distinta (totale in
|
||||
// lire e totale in valuta(se presente)) nella maschera principale
|
||||
void TVariazione_distinte::calcola_totale()
|
||||
|
@ -18,6 +18,7 @@
|
||||
#define F_SHEET_RIBA 113
|
||||
#define F_NPROGTR 114
|
||||
#define F_TIPOCF 115
|
||||
#define F_UNCONTABIL 116
|
||||
|
||||
// Identificatori campi per lo spreadsheet di selezione RiBa da aggiungere
|
||||
// alla distinta (ef0300c.uml)
|
||||
|
@ -1,8 +1,15 @@
|
||||
// DEFINIZIONE MASCHERA PRINCIPALE PER LA GESTIONE DISTINTE
|
||||
#include "ef0300.h"
|
||||
|
||||
TOOLBAR "" 0 -2 0 2
|
||||
TOOLBAR "" 0 -3 0 3
|
||||
#include <toolbar.h>
|
||||
|
||||
BUTTON F_UNCONTABIL 30
|
||||
BEGIN
|
||||
PROMPT -11 0 "~Annulla contabilizzazione"
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Distinta" 0 -1 0 19
|
||||
|
@ -452,6 +452,7 @@ void TContabilizzazione_effetti_app::display_error()
|
||||
default: // Errori generici o non indicati vengono visualizzati nel punto dell'errore
|
||||
break;
|
||||
}
|
||||
if (!msg.blank())
|
||||
warning_box(msg);
|
||||
_error = no_error; // reset error, as any other one would do, so you can show me the other ones.
|
||||
_can_write = FALSE; // But from now on u cannot write anymore. U must exit this program and repair errors occurred.
|
||||
@ -684,10 +685,8 @@ void TContabilizzazione_effetti_app::join_rows(TArray& customers, TAssoc_array&
|
||||
error_type TContabilizzazione_effetti_app::search_clifo_bill(char tipo, const long codcf)
|
||||
{
|
||||
_error = no_error;
|
||||
TString16 key;
|
||||
|
||||
key.format("%c|%ld", tipo, codcf);
|
||||
|
||||
TString16 key; key.format("%c|%ld", tipo, codcf);
|
||||
const TRectype & clifo = cache().get(LF_CLIFO, key);
|
||||
|
||||
if (clifo.empty())
|
||||
@ -1176,6 +1175,11 @@ error_type TContabilizzazione_effetti_app::write_all(bool change_status)
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
error_box(FR("Il movimento deve contenere almeno 2 righe contabili e non %d"), _movimento->cg_items());
|
||||
_error = generic_error;
|
||||
}
|
||||
|
||||
if (good() && change_status) // deve anche cambiare lo stato alla distinta ?
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user