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:
parent
70544fb760
commit
4d68666e72
217
cg/cg3600.cpp
217
cg/cg3600.cpp
@ -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()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user