Patch level : 10.0 888

Files correlati     : cg3.exe
Ricompilazione Demo : [ ]
Commento            :
0001748: Visualizzazione mastrini, sul cliente vedo nella descrizione delle contropartite la ragione sociale del cliente
Visualizzazione mastrini, sul cliente vedo nella descrizione delle contropartite la ragione sociale del cliente: è possibile vedere il conto di ricavo?
rif.Pharmatex


git-svn-id: svn://10.65.10.50/branches/R_10_00@21463 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-01-18 12:22:03 +00:00
parent 70544fb760
commit 4d68666e72

View File

@ -14,6 +14,7 @@
#include <urldefid.h> #include <urldefid.h>
#include <utility.h> #include <utility.h>
#include <clifo.h>
#include <causali.h> #include <causali.h>
#include <mov.h> #include <mov.h>
#include <pconti.h> #include <pconti.h>
@ -167,6 +168,7 @@ public:
real progressivo_avere_periodo() const { return _pavere_ini + _pavere_per; } real progressivo_avere_periodo() const { return _pavere_ini + _pavere_per; }
TImporto saldo_periodo() const; TImporto saldo_periodo() const;
const TBill& conto() const { return _conto; }
int esercizio() const { return _esercizio; } int esercizio() const { return _esercizio; }
const TDate& inizio_periodo() const { return _da_data; } const TDate& inizio_periodo() const { return _da_data; }
const TDate& fine_periodo() const { return _a_data; } const TDate& fine_periodo() const { return _a_data; }
@ -186,9 +188,7 @@ TRelation* TMastrino::_rel = NULL;
TLocalisamfile* TMastrino::_rmov = NULL; // File principale della relazione TLocalisamfile* TMastrino::_rmov = NULL; // File principale della relazione
TLocalisamfile* TMastrino::_mov = NULL; // File secondario della relazione TLocalisamfile* TMastrino::_mov = NULL; // File secondario della relazione
TMastrino::TMastrino() : _esercizio(0)
TMastrino::TMastrino()
: _esercizio(0)
{ {
if (_instances == 0L) if (_instances == 0L)
{ {
@ -1698,7 +1698,7 @@ void TMastrini_grid::cell_request(long rec, short id, TGrid_cell& cell)
rmov.get_long(RMV_SOTTOCONTO)); rmov.get_long(RMV_SOTTOCONTO));
} }
break; break;
case 104: case 104: // Descrizione
if (riga.tipo() == riga_mastrino) if (riga.tipo() == riga_mastrino)
{ {
const TRectype& rmov = _mastrino.riga(rec); const TRectype& rmov = _mastrino.riga(rec);
@ -1718,14 +1718,15 @@ void TMastrini_grid::cell_request(long rec, short id, TGrid_cell& cell)
{ {
const TRectype& rmov = _mastrino.riga(rec); const TRectype& rmov = _mastrino.riga(rec);
cell.set(rmov.get(RMV_DESCR)); cell.set(rmov.get(RMV_DESCR));
if (cell.empty()) // Bug 0001748: ignora descrizioni generate da contabilizzazione
if (cell.empty() || cell == _mastrino.conto().descrizione())
{ {
const TBill conto(rmov); const TBill conto(rmov);
cell.set(conto.descrizione()); cell.set(conto.descrizione());
} }
} }
break; break;
case 105: case 105: // Dare
{ {
const TRectype& rmov = _mastrino.riga(rec); const TRectype& rmov = _mastrino.riga(rec);
const char sez = rmov.get_char(RMV_SEZIONE); const char sez = rmov.get_char(RMV_SEZIONE);
@ -1733,7 +1734,7 @@ void TMastrini_grid::cell_request(long rec, short id, TGrid_cell& cell)
cell = real2string(rmov.get_real(RMV_IMPORTO)); cell = real2string(rmov.get_real(RMV_IMPORTO));
} }
break; break;
case 106: case 106: // Avere
{ {
const TRectype& rmov = _mastrino.riga(rec); const TRectype& rmov = _mastrino.riga(rec);
const char sez = rmov.get_char(RMV_SEZIONE); const char sez = rmov.get_char(RMV_SEZIONE);
@ -2310,128 +2311,142 @@ long TGrid_mask::handler(WINDOW win, EVENT* ep)
return TMask::handler(win, ep); return TMask::handler(win, ep);
} }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TQuery_mask // TQuery_mask
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TQuery_mask : public TMask class TQuery_mask : public TAutomask
{ {
TGrid_mask* _gm; TGrid_mask* _gm;
protected: protected:
static bool esercizio_handler(TMask_field& f, KEY k); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
static bool data_handler(TMask_field& f, KEY k);
static bool find_handler(TMask_field& f, KEY k);
static bool colors_handler(TMask_field& f, KEY k);
public: public:
void do_query(); void do_query();
TQuery_mask(TGrid_mask* gm); TQuery_mask(TGrid_mask* gm);
virtual ~TQuery_mask() { } virtual ~TQuery_mask() { }
}; };
TQuery_mask::TQuery_mask(TGrid_mask* gm) : TMask("cg3600a"), _gm(gm)
{
set_handler(F_ESERCIZIO, esercizio_handler);
set_handler(F_DADATA, data_handler);
set_handler(F_ADATA, data_handler);
set_handler(DLG_FINDREC, find_handler);
set_handler(DLG_CONFIG, colors_handler);
}
bool TQuery_mask::esercizio_handler(TMask_field& f, KEY k) bool TQuery_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
if (k == K_TAB && f.focusdirty()) switch (o.dlg())
{ {
TEsercizi_contabili esc; case F_TIPO:
const int anno = atoi(f.get()); if (e == fe_modify)
if (esc.exist(anno))
{ {
TMask& m = f.mask(); const TString& tipo = o.get();
TDate dd = m.get(F_DADATA); if (tipo.full())
if (esc.date2esc(dd) != anno) {
m.set(F_DADATA, esc[anno].inizio()); TWait_cursor hourglass;
dd = m.get(F_ADATA); TString query;
if (esc.date2esc(dd) != anno) query << "USE " << LF_PCON << " SELECT " << PCN_TMCF << "=\"" << tipo << "\"";
m.set(F_ADATA, esc[anno].fine()); TISAM_recordset conti(query);
if (conti.move_first())
{
set(F_GRUPPO, conti.get(PCN_GRUPPO).as_int(), 0x2);
set(F_CONTO, conti.get(PCN_CONTO).as_int(), 0x2);
}
}
} }
else break;
case F_CLIENTE:
case F_FORNITORE:
if (e == fe_modify && !o.empty())
{ {
if (anno > 0) const TRectype& rec = ((TEdit_field&)o).browse()->cursor()->curr();
return error_box(FR("Esercizio inesistente: %d"), anno); const int g = rec.get_int(CLI_GRUPPO);
} const int c = rec.get_int(CLI_CONTO);
} if (g > 0 && c > 0)
return true; {
} set(F_GRUPPO, g, 0x2);
set(F_CONTO, g, 0x2);
bool TQuery_mask::data_handler(TMask_field& f, KEY k) }
{ }
bool ok = true; break;
if (k == K_ENTER) case F_ESERCIZIO:
{ if (e == fe_modify || e == fe_close)
const TQuery_mask& qm = (const TQuery_mask&)f.mask();
const TEsercizi_contabili esercizi;
int codice_esercizio = qm.get_int(F_ESERCIZIO);
if (codice_esercizio == 0)
{ {
const short id_altra_data = f.dlg() == F_DADATA ? F_ADATA : F_DADATA; TEsercizi_contabili esc;
const TDate d = qm.get(id_altra_data); const int anno = atoi(o.get());
if (d.ok()) if (esc.exist(anno))
codice_esercizio = esercizi.date2esc(d); {
} TDate dd = get(F_DADATA);
if (esc.date2esc(dd) != anno)
set(F_DADATA, esc[anno].inizio());
dd = get(F_ADATA);
if (esc.date2esc(dd) != anno)
set(F_ADATA, esc[anno].fine());
}
else
{
if (anno > 0)
return error_box(FR("Esercizio inesistente: %d"), anno);
}
}
break;
case F_DADATA:
case F_ADATA:
if (e == fe_close)
{
const TEsercizi_contabili esercizi;
int codice_esercizio = get_int(F_ESERCIZIO);
if (codice_esercizio <= 0)
{
const short id_altra_data = o.dlg() == F_DADATA ? F_ADATA : F_DADATA;
const TDate d = get(id_altra_data);
if (d.ok())
codice_esercizio = esercizi.date2esc(d);
}
if (f.empty()) if (o.empty())
{ {
if (codice_esercizio == 0) if (codice_esercizio == 0)
return error_box(TR("E' necessario specificare almeno una data.")); return error_box(TR("E' necessario specificare almeno una data."));
return true; return true;
} }
const TDate d = f.get(); const TDate d = o.get();
const int esercizio = esercizi.date2esc(d); const int esercizio = esercizi.date2esc(d);
if (qm.get_int(F_ESERCIZIO) != 0) if (get_int(F_ESERCIZIO) != 0)
{ {
if (esercizio != codice_esercizio) if (esercizio != codice_esercizio)
ok = error_box(FR("La data deve appartenere all'esercizio %d"), codice_esercizio); return error_box(FR("La data deve appartenere all'esercizio %d"), codice_esercizio);
}
else
{
if (esercizio == 0)
return error_box(TR("La data deve appartenere ad un esercizio contabile"));
}
} }
else break;
case DLG_FINDREC:
if (e == fe_button)
{ {
if (esercizio == 0) short id;
ok = error_box(TR("La data deve appartenere ad un esercizio contabile")); switch (get(F_TIPO)[0])
} {
case 'C': id = F_CLIENTE; break;
case 'F': id = F_FORNITORE; break;
default : id = F_SOTTOCONTO; break;
}
field(id).on_key(K_F9);
}
break;
case DLG_CONFIG:
if (e == fe_button)
_gm->grid().set_colors();
break;
default:
break;
} }
return ok;
}
bool TQuery_mask::find_handler(TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
const TQuery_mask& qm = (const TQuery_mask&)f.mask();
short id;
switch (qm.get(F_TIPO)[0])
{
case 'C': id = F_CLIENTE; break;
case 'F': id = F_FORNITORE; break;
default : id = F_SOTTOCONTO; break;
}
qm.field(id).on_key(K_F9);
}
return true;
}
bool TQuery_mask::colors_handler(TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
const TQuery_mask& qm = (const TQuery_mask&)f.mask();
qm._gm->grid().set_colors();
}
return true; return true;
} }
TQuery_mask::TQuery_mask(TGrid_mask* gm) : TAutomask("cg3600a"), _gm(gm)
{ }
void TQuery_mask::do_query() void TQuery_mask::do_query()
{ {