campo-sirio/sc/sc0100.cpp
guy 8f1d2a9b7c Patch level : 2.0 470
Files correlati     : sc0.exe sc1.exe
Ricompilazione Demo : [ ]
Commento            :

EP20046
Inserendo movimento extracontabile incasso\pagamento nella maschera"pagamento"
Non funziona il collegamento a tabella banche

EP20047
cliccanbo sul bottone elabora Errore dell'applicazione SC2 (E' corretto
che il bottone elabora sia attivo se non ci sono dati inseriti?)

EP20048
Dando conferma ai messsaggi proposti Errore in compattamento dati file 28:-69

EP20062
non stampa su carta se stampante in visualizzazione


git-svn-id: svn://10.65.10.50/trunk@11129 c028cbd2-c16b-5b4b-a496-9718f37d4682
2003-05-14 14:15:09 +00:00

182 lines
4.5 KiB
C++
Executable File

#include <colors.h>
#include <mask.h>
#include "sc0100.h"
#include "sc0100a.h"
HIDDEN bool gruppo_handler(TMask_field& f, KEY key)
{
static bool ignore = FALSE;
if (key == K_TAB && f.focusdirty())
{
if (!ignore)
{
TMask_field& c = f.mask().field(F_CONTO);
if (c.get().not_empty())
{
ignore = TRUE;
c.set_dirty();
c.on_key(K_TAB);
ignore = FALSE;
}
}
}
return TRUE;
}
///////////////////////////////////////////////////////////
// Gestione saldaconto extra-contabile
///////////////////////////////////////////////////////////
TSaldaconto_app::TSaldaconto_app()
: _allow_firm(TRUE)
{}
bool TSaldaconto_app::create()
{
open_files(LF_TAB, LF_TABCOM, LF_CLIFO, LF_PCON, 0);
open_files(LF_PARTITE, LF_SCADENZE, LF_PAGSCA, 0);
open_files(LF_CAUSALI, LF_ATTIV, 0);
load_colors();
_msk = new TMask("sc0100a");
_msk->set_handler(F_GRUPPO, gruppo_handler);
TConfig cnf(CONFIG_DITTA, "cg");
const bool ges_sal = cnf.get_bool("GesSal");
if (!ges_sal)
{
warning_box(FR("Attenzione: La ditta %ld non ha la\n"
"la gestione del saldaconto attivata!"), get_firm());
}
return TSkeleton_application::create();
}
bool TSaldaconto_app::destroy()
{
delete _msk;
return TSkeleton_application::destroy();
}
void TSaldaconto_app::on_config_change()
{
TConfig cnf(CONFIG_DITTA, "cg");
_ges_val = cnf.get_bool("GesVal");
TPartita::carica_allineamento();
}
void TSaldaconto_app::main_loop()
{
TMask& m = curr_mask();
bool ok = TRUE;
while (ok)
{
xvt_statbar_set(TR("Ricerca"), TRUE);
m.reset();
ok = m.run() == K_ENTER;
if (ok)
{
_allow_firm = FALSE;
edit_partite(m);
_allow_firm = TRUE;
}
}
}
void TSaldaconto_app::load_colors()
{
TConfig conf(CONFIG_USER, "cg2");
TAssoc_array& colori = (TAssoc_array&)conf.list_variables();
for (THash_object* o = colori.get_hashobj(); o; o = colori.get_hashobj())
{
const TString& key = o->key();
if (key.len() == 7 && key.compare("Color", 5, TRUE) == 0)
{
const COLOR col = conf.get_color(key);
TString* strcol = new TString16;
strcol->format("%ld", col);
_colori.add(key.mid(5), strcol);
}
}
}
COLOR TSaldaconto_app::type2color(char tipor, char tipoc)
{
COLOR col;
if (tipor > ' ')
{
const char key[3] = { tipoc, tipor, '\0' };
TString* colstr = (TString*)_colori.objptr(key);
if (colstr == NULL)
{
colstr = new TString16;
colstr->format("%ld", tipoc == 'B' ? NORMAL_BACK_COLOR : NORMAL_COLOR);
_colori.add(key, colstr);
}
col = atol(*colstr);
}
else
{
col = tipoc == 'B' ? NORMAL_BACK_COLOR : NORMAL_COLOR;
}
return col;
}
void TSaldaconto_app::type2colors(char tipor, COLOR& back, COLOR& fore)
{
back = type2color(tipor, 'B');
fore = type2color(tipor, 'F');
}
///////////////////////////////////////////////////////////
// Handlers generali
///////////////////////////////////////////////////////////
#include "sc0100p.h"
void TSaldaconto_app::gioca_cambi(TMask& m, int force)
{
if (m.get(E_VALUTA).empty())
return;
const real totale = m.get(E_TOTALE);
const real totval = m.get(E_TOTDOCVAL);
const real cambio = m.get(E_CAMBIO);
if ( (force == 0x1 || totale.is_zero()) && !(totval.is_zero() || cambio.is_zero()) )
{
const TValuta cam(m, E_VALUTA, E_DATACAMBIO, E_CAMBIO);
const real new_totale = cam.val2lit(totval);
if (new_totale != totale)
m.set(E_TOTALE, new_totale, TRUE);
}
if ( (force == 0x2 || totval.is_zero()) && !(totale.is_zero() || cambio.is_zero()) )
{
const TValuta cam(m, E_VALUTA, E_DATACAMBIO, E_CAMBIO);
const real new_totval = cam.lit2val(totale);
if (new_totval != totval)
m.set(E_TOTDOCVAL, new_totval, TRUE);
}
if ( (force == 0x4 || cambio.is_zero()) && !(totale.is_zero() || totval.is_zero()) )
{
real new_cambio = totale / totval; new_cambio.round(5);
if (new_cambio != cambio)
m.set(E_CAMBIO, new_cambio, TRUE);
}
}
///////////////////////////////////////////////////////////
int sc0100(int argc, char* argv[])
{
TSaldaconto_app* salda = new TSaldaconto_app;
salda->run(argc, argv, TR("Gestione Saldaconto"));
delete salda;
return 0;
}