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:
guy 2003-09-23 14:38:38 +00:00
parent 07150cd475
commit c5aae552a6
4 changed files with 79 additions and 20 deletions

View File

@ -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()

View File

@ -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)

View File

@ -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

View File

@ -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 ?
{