campo-sirio/ba/ba4300.cpp
guy a513f935d2 Patch level : 2.0 470
Files correlati     : ba0.exe ba1.exe ba3.exe ba4.exe
Ricompilazione Demo : [ ]
Commento            :

EP20037
Esempio : Visualizzazione liquidazione, Indico: esercizio =2003, mese
liquidazione =gennaio seleziono la ditta clicco su conferma. Nella
visualizzazione la barra di scorrimento non funziona.


EP20038
Inserendo nel campo "utente" un'utente inesistente  e nel campo "password"
ad.min , entro in campo senza che venga segnalata la non esistenza dell'utente

EP20041
Col mouse seleziono un codice di pagamento già inserito e clicco sul bottone
stampa.A video (come da impostazioni stampante) viene visualizzata la stampa
della condizione di pagamento selezionata.Clicco su stampa, non parte la
stampa su carta. Clicco su fine ritorno nella maschera "stampa condizioni
di pagamento", clicco su fine errore ba3.exe

EP20049
Seleziono un codice valuta inserito con spunta su voce "contro euro"
in tabella valute; la spunta viene riportata anche nella maschera
"Cambi giornalieri". Inserisco la data di oggi nel campo data del group
box valuta e col mouse mi posizono sul campo cambio: la spunta sulla voce
"contro euro" scompare

EP20050
Clicco sul bottone di ricerca e richiamo una ditta memorizzata. Clicco sul
bottone posta errore il campo 203 non nesiste

EP20054
Ho registrato tre anagrafiche. Col mouse.Clicco sul bottone di ricerca e
richiamo la n°2. Clicco sulla freccia singola a sinistra del bottone ricerca
per posizionarmi sull'anagrafica n°1 e viene visualizzato messaggio vuoi
registrare le modifiche?(anche per altre freccie associate al bottone)

EP20055
Col mouse.Clicco su ricerca e richiamo un'anagrafica già presente.Clicco sul
bottone  Nuovo:messaggio registrare le modifiche?

EP20057
clicco sul bottone di ricerca e seleziono un utente già registrato.
I campi vengono compilati, clicco sul bottone nuovo: i campi non vengono
svuotati ma compare messaggio "vuoi registrare dati inseriti?"

EP20058
Ho inserito n utenti. Clicco sul bottone di ricerca e richiamo un utente
già registrato. Clicco sulla freccina singola a sx del botone ricerca
(e anche sulle altre freccie): messaggo "vuoi registrare dati inseriti?"

EP20064
Richiamo una ditta già inserita clicco sul bottone annulla messaggio:
"attività assente si desidera annullare?"

EP20075
Tutte le freccie associate al bottone ricerca non funzionano


git-svn-id: svn://10.65.10.50/trunk@11128 c028cbd2-c16b-5b4b-a496-9718f37d4682
2003-05-14 13:35:51 +00:00

411 lines
9.9 KiB
C++
Executable File
Raw Blame History

#include <execp.h>
#include <golem.h>
#include <mailbox.h>
#include <prefix.h>
#include <recarray.h>
#include <relapp.h>
#include <tabutil.h>
#include <modaut.h>
#include <defmask.h>
#include "ba4.h"
#include "ba4300.h"
#define FLD_UL1_CODDITTA 133
#define FLD_UL1_CODDITTA_NDITTE_RAGSOC 100
#define FLD_AT1_CODDITTA 102
#define FLD_AT1_CODATTH 199
#define FLD_AT1_PROGD_NDITTE_RAGSOC 105
#define FLD_SC1_CODDITTA 143
#define FLD_SC1_CODANAGRSOH 147
#define FLD_SC1_CODDITTA_NDITTE_RAGSOC 144
#define FLD_UL1_CODULC 125
#define F_CODDITTA 142
#define F_ANNO 132
const char* CODDITTA = "CODDITTA";
const char* CODATTPREV = "CODATTPREV";
const char* TIPOA = "TIPOA";
const char* CODANAGR = "CODANAGR";
const char* CODATT = "CODATT";
const char* COMRF = "COMRF";
const char* INDRF = "INDRF";
const char* CIVRF = "CIVRF";
const char* CAPRF = "CAPRF";
const char* COMRES = "COMRES";
const char* INDRES = "INDRES";
const char* CIVRES = "CIVRES";
const char* CAPRES = "CAPRES";
const char* CODULC = "CODULC";
const char* COMULC = "COMULC";
const char* INDULC = "INDULC";
const char* CIVULC = "CIVULC";
const char* CAPULC = "CAPULC";
const char* COMCCIAA = "COMCCIAA";
const char* COMTRIB = "COMTRIB";
#define TABATT "%ais"
#define CODTAB "CODTAB"
#define S0 "S0"
#define DESCR "DESCR"
class TDitte_application : public TRelation_application
{
TMask* _msk;
TRelation *_rel;
TString16 _oldattprev;
bool _cespiti;
protected:
bool user_create() ;
bool user_destroy() ;
virtual TMask* get_mask(int) { return _msk;}
virtual bool changing_mask(int) { return FALSE;}
virtual void init_query_mode(TMask& m) ;
virtual void init_insert_mode(TMask& m) ;
void enable_reg(TMask& m) ;
virtual void init_modify_mode(TMask& m) ;
virtual bool protected_record(TRectype& rec) { return prefix().exist(rec.get_long("CODDITTA")); }
void set_att_prev(const TMask& m);
// static bool fax_handler(TMask_field& f, KEY k);
static bool email_handler(TMask_field& f, KEY k);
public:
TDitte_application();
virtual TRelation* get_relation() const { return _rel;}
virtual int rewrite(const TMask& m);
virtual int write(const TMask& m);
virtual bool remove();
virtual ~TDitte_application() {}
};
bool ba4300_handler(TMask& m, KEY k)
{
TDitte_application& app = (TDitte_application&)main_app();
if (k == (K_SHIFT+K_F12) && m.mode() == MODE_MOD)
{
m.enable(FLD_GD1_TIPOA);
m.enable(FLD_GD1_CODANAGR);
m.enable(FLD_GD1_CODANAGR_ANAGR_RAGSOC);
return TRUE;
}
if (k == (K_SHIFT+K_F7) && m.mode() == MODE_MOD)
{
m.enable(FLD_GD1_VALUTA);
return TRUE;
}
if (k != K_F5 && k != K_F6 && k != K_F7 && k != K_F8 && k != K_F3)
return TRUE;
if (m.mode() == MODE_MOD || m.mode() == MODE_INS)
{
if (m.mode() == MODE_INS)
{
if (!m.check_fields()) return FALSE;
if (app.write(m) != NOERR) return TRUE;
m.stop_run(K_ESC);
}
TString appname;
int fld = 0, fld1 = 0, fldbrowse = 0;
if (k == K_F5)
{
appname = "ba4 -3";
fld = FLD_UL1_CODDITTA;
fld1 = FLD_UL1_CODDITTA_NDITTE_RAGSOC;
fldbrowse = FLD_UL1_CODULC;
}
if (k == K_F6)
{
appname = "ba4 -4";
fld = FLD_AT1_CODDITTA;
fld1 = FLD_AT1_PROGD_NDITTE_RAGSOC;
fldbrowse = FLD_AT1_CODATTH;
}
if (k == K_F7)
{
appname = "ba4 -5";
fld = FLD_SC1_CODDITTA;
fld1 = FLD_SC1_CODDITTA_NDITTE_RAGSOC;
fldbrowse = FLD_SC1_CODANAGRSOH;
}
if (k == K_F8) { appname = "ba3 -0 reg"; fld = 0;fldbrowse = 0;}
if (k == K_F3) { appname = "ba5 -1"; fld = F_CODDITTA;fldbrowse = F_ANNO;}
if (appname.not_empty())
{
TString body(16);
if (fldbrowse)
body << fldbrowse << "|";
if (fld)
body << fld << "=" << m.get(FLD_GD1_CODDITTA) ;
if (fld1)
body << "|" << fld1 << "=" ;
if (fldbrowse || fld)
{
TMessage msg(appname, MSG_FS, body);
TMailbox mb;
mb.send(msg);
}
TExternal_app a(appname);
const long oldditta = main_app().get_firm();
if (k == K_F8) main_app().set_firm(m.get_long(FLD_GD1_CODDITTA));
a.run();
if (k == K_F8) main_app().set_firm(oldditta);
m.set_focus();
return FALSE;
}
}
return TRUE;
}
TDitte_application::TDitte_application() : _cespiti(FALSE)
{}
bool TDitte_application::email_handler(TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
const TMask& m = f.mask();
TToken_string key;
key.add(m.get(FLD_GD1_TIPOA));
key.add(m.get(FLD_GD1_CODANAGR));
const TRectype& anag = cache().get(LF_ANAG, key);
TMail_message msg(anag.get("MAIL"));
msg.send();
}
return TRUE;
}
bool TDitte_application::user_create() // initvar e arrmask
{
open_files(LF_NDITTE, LF_ANAG, LF_UNLOC, LF_ATTIV, LF_TABCOM, 0);
_rel = new TRelation(LF_NDITTE);
_cespiti = has_module(CEAUT);
_msk = new TMask("ba4300a") ;
_msk->set_handler(ba4300_handler);
_msk->set_handler(DLG_EMAIL, email_handler);
set_search_field(FLD_GD1_CODDITTA);
return TRUE;
}
bool TDitte_application::user_destroy() // releasev e arrmask
{
delete _msk;
delete _rel;
return TRUE;
}
void TDitte_application::set_att_prev(const TMask& m)
{
const TString16 attprev(m.get(FLD_GD1_CODATTPREV));
if (_oldattprev == attprev)
return;
TRectype& ditte=_rel->curr();
TString codditta(ditte.get(CODDITTA)) ;
TLocalisamfile attiv(LF_ATTIV);
if (_oldattprev.not_empty())
{
attiv.put(CODDITTA, codditta) ;
attiv.put(CODATT, _oldattprev);
if (attiv.read(_isequal, _lock) == NOERR)
{
attiv.put("ATTPREV", bool(FALSE));
if (attiv.rewrite() != NOERR)
error_box(FR("Non posso aggiornare l'attivita' prevalente precedente : errore n. %d"), attiv.status());
}
}
attiv.zero() ;
attiv.put(CODDITTA, codditta) ;
attiv.put(CODATT, attprev) ;
const bool itwas = attiv.read(_isequal, _lock) == NOERR;
if (!itwas)
{
attiv.zero() ;
attiv.put(CODDITTA, codditta) ;
attiv.put(CODATT, attprev) ;
const TRectype& tabatt = cache().get(TABATT, ditte.get(CODATTPREV));
attiv.put(DESCR, tabatt.get(S0)) ;
}
attiv.put("ATTPREV", bool(TRUE)) ;
if (itwas)
{
if (attiv.rewrite() != NOERR)
error_box(FR("Impossibile aggiornare l'attivita' prevalente : errore n. %d"), attiv.status());
}
else
{
if (attiv.write() != NOERR)
error_box(FR("Impossibile creare l'attivita' prevalente : errore n. %d"), attiv.status());
}
}
int TDitte_application::write(const TMask& m)
{
const int err = TRelation_application::write(m);
if (err == NOERR)
{
set_att_prev(m);
TLocalisamfile anag(LF_ANAG);
const TRectype& ditte = _rel->curr();
anag.zero() ;
anag.put(TIPOA, ditte.get(TIPOA));
anag.put(CODANAGR, ditte.get(CODANAGR));
if (anag.read() == NOERR)
{
TLocalisamfile unloc(LF_UNLOC);
unloc.put(CODDITTA, ditte.get(CODDITTA)) ;
unloc.put(CODULC, 1);
unloc.put(COMULC, anag.get(COMRES));
unloc.put(INDULC, anag.get(INDRES));
unloc.put(CIVULC, anag.get(CIVRES));
unloc.put(CAPULC, anag.get(CAPRES));
unloc.put(COMCCIAA, anag.get(COMRES));
unloc.put(COMTRIB, anag.get(COMRES));
unloc.write();
}
}
return err;
}
int TDitte_application::rewrite(const TMask& m)
{
const int err = TRelation_application::rewrite(m);
if (err == NOERR)
set_att_prev(m);
return err;
}
bool TDitte_application::remove()
{
// Removes all activities
const long firm = _msk->get_long(FLD_GD1_CODDITTA);
TLocalisamfile attiv(LF_ATTIV);
TRecfield att_firm(attiv.curr(),"CODDITTA");
att_firm = firm;
for (attiv.read(_isgteq); attiv.good() && firm == (long)att_firm; attiv.next())
attiv.remove();
// Removes firm
return TRelation_application::remove();
}
void TDitte_application::init_query_mode(TMask& m)
{
if (filtered())
{
m.show(FLD_GD1_CODDITTAH);
m.show(FLD_GD1_RAGSOCH);
m.hide(FLD_GD1_CODDITTA);
m.hide(FLD_GD1_RAGSOC);
}
else
{
m.show(FLD_GD1_CODDITTA);
m.show(FLD_GD1_RAGSOC);
m.hide(FLD_GD1_CODDITTAH);
m.hide(FLD_GD1_RAGSOCH);
}
init_insert_mode(m);
}
void TDitte_application::init_insert_mode(TMask& m)
{
if (!filtered())
{
m.enable(FLD_GD1_TIPOA);
m.enable(FLD_GD1_CODANAGR);
m.enable(FLD_GD1_CODANAGR_ANAGR_RAGSOC);
m.show(FLD_GD1_CODDITTA);
m.show(FLD_GD1_RAGSOC);
m.hide(FLD_GD1_CODDITTAH);
m.hide(FLD_GD1_RAGSOCH);
}
else
{
m.show(FLD_GD1_CODDITTAH);
m.show(FLD_GD1_RAGSOCH);
m.hide(FLD_GD1_CODDITTA);
m.hide(FLD_GD1_RAGSOC);
}
m.disable(DLG_ATT);
m.disable(DLG_ULC);
m.disable(DLG_SOC);
m.disable(DLG_REG);
m.disable(DLG_REG1);
_oldattprev = "";
// La valuta si decide gi<67> in creazione: la valuta della prima ditta memorizzata
TEdit_field& val = m.efield(FLD_GD1_VALUTA);
TLocalisamfile& ditte = get_relation()->lfile();
if (ditte.first() == NOERR)
{
val.set(ditte.get("VALUTA"));
val.disable();
}
else
val.enable();
}
void TDitte_application::enable_reg(TMask& m)
{
const long codditta = m.get_long(FLD_GD1_CODDITTA);
m.enable(DLG_REG, codditta > 0 && prefix().exist(codditta));
}
void TDitte_application::init_modify_mode(TMask& m)
{
m.disable(FLD_GD1_TIPOA);
m.disable(FLD_GD1_CODANAGR);
m.disable(FLD_GD1_CODANAGR_ANAGR_RAGSOC);
m.disable(FLD_GD1_VALUTA); // La valuta si decide solo in creazione
if (filtered())
{
m.show(FLD_GD1_CODDITTAH);
m.show(FLD_GD1_RAGSOCH);
m.hide(FLD_GD1_RAGSOC);
m.hide(FLD_GD1_CODDITTA);
}
else
{
m.show(FLD_GD1_CODDITTA);
m.show(FLD_GD1_RAGSOC);
m.hide(FLD_GD1_CODDITTAH);
m.hide(FLD_GD1_RAGSOCH);
}
m.enable(DLG_ATT);
m.enable(DLG_ULC);
m.enable(DLG_SOC);
m.enable(DLG_REG1, _cespiti);
enable_reg(m);
_oldattprev = m.get(FLD_GD1_CODATTPREV);
}
int ba4300(int argc, char* argv[])
{
TDitte_application a ;
a.run(argc, argv, TR("Anagrafica Ditte"));
return 0;
}