Patch level : 4.0 812

Files correlati     :  ca2.exe
Ricompilazione Demo : [ ]
Commento            :

Bug 0000775: Centro di costo di default

 Aggiungere un centro di costo di default sulle commesse da proporre nei movimenti di analitica e sui documenti


git-svn-id: svn://10.65.10.50/trunk@15760 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2007-11-16 13:38:14 +00:00
parent 6d99b66eda
commit 38983f3ccf

View File

@ -16,12 +16,17 @@
#include "rmovana.h" #include "rmovana.h"
#include "rrip.h" #include "rrip.h"
#include "saldana.h" #include "saldana.h"
#include "commesse.h"
class TMovanal_msk : public TAutomask class TMovanal_msk : public TAutomask
{ {
TAssoc_array _saldi; TAssoc_array _saldi;
bool _use_pdc; bool _use_pdc;
short _cms_start;
short _cms_end;
short _cdc_start;
short _cdc_end;
protected: protected:
virtual bool on_field_event(TOperable_field& o, TField_event fe, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event fe, long jolly);
@ -370,6 +375,8 @@ int TMovanal_msk::get_constant_columns(TToken_string& tok) const
bool TMovanal_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TMovanal_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
static TString __codcms;
switch (o.dlg()) switch (o.dlg())
{ {
case F_DATAREG: case F_DATAREG:
@ -410,8 +417,46 @@ bool TMovanal_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
if (e == se_enter) if (e == se_enter)
{ {
const int r = int(jolly); const int r = int(jolly);
aggiorna_saldo_riga(r);
aggiorna_saldo_riga(r);
} }
if (e == se_query_modify)
{
TSheet_field & s = sfield(F_RIGHE);
const int r = int(jolly);
__codcms.cut(0);
for (short j = _cms_start; j <= _cms_end; j++)
__codcms << s.row(r).get(s.cid2index(j));
}
if (e == se_notify_modify)
{
const int r = int(jolly);
TSheet_field & s = sfield(F_RIGHE);
TMask & m = s.sheet_mask();
const TRectype & curr = ((TEdit_field &) m.field(_cms_start)).browse()->cursor()->curr();
const TString codcosto = curr.get(COMMESSE_CODCOSTO);
const TString & codcms = curr.get(COMMESSE_CODCMS);
if (_cms_start > 0 && __codcms != codcms) // && codcosto.full())
{
for (short i = _cdc_start; i <= _cdc_end; i++)
{
TEdit_field & e = m.efield(i);
const TFieldref * f = e.field();
if (f != NULL)
{
const int from = f->from();
const int to = f->to();
m.set(i, codcosto.sub(from, to), 0x2);
s.update_row(r);
s.force_update(r);
}
}
}
}
if (e == fe_close) if (e == fe_close)
{ {
const TImporto totdoc(get(F_SEZIONE)[0], get_real(F_TOTDOC)); const TImporto totdoc(get(F_SEZIONE)[0], get_real(F_TOTDOC));
@ -491,7 +536,7 @@ bool TMovanal_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
TSheet_field& sf = sfield(F_RIGHE); TSheet_field& sf = sfield(F_RIGHE);
const int r = sf.selected(); const int r = sf.selected();
sf.update_row(r); sf.update_row(r);
aggiorna_saldo_riga(r); aggiorna_saldo_riga(r);
} }
break; break;
} }
@ -736,12 +781,16 @@ void TMovanal_msk::create_sheet()
int y = 3; int y = 3;
short dlg = S_CDC1+100; // id del primo campo da generare short dlg = S_CDC1+100; // id del primo campo da generare
_cdc_start = _cdc_end = -1;
_cms_start = _cms_end = -1;
for (int i = 0; i < 2; i++) for (int i = 0; i < 2; i++)
{ {
const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2 const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2
if (level == "CDC") // Crea centro di costo if (level == "CDC") // Crea centro di costo
{ {
_cdc_start = dlg;
_cdc_end = dlg + ca_multilevel_code_info(LF_CDC).levels()-1;
if (fasinfo.parent() == LF_CDC) if (fasinfo.parent() == LF_CDC)
create_sheet_fields(LF_FASI, y, dlg, fsc_req); create_sheet_fields(LF_FASI, y, dlg, fsc_req);
else else
@ -749,17 +798,20 @@ void TMovanal_msk::create_sheet()
const bool cdc_req = ini.get_bool("CdcRequired"); const bool cdc_req = ini.get_bool("CdcRequired");
create_sheet_fields(LF_CDC, y, dlg, cdc_req); create_sheet_fields(LF_CDC, y, dlg, cdc_req);
} }
} else
if (level == "CMS") // Crea commessa
{
if (fasinfo.parent() == LF_COMMESSE)
create_sheet_fields(LF_FASI, y, dlg, fsc_req);
else
{
const bool cms_req = ini.get_bool("CmsRequired");
create_sheet_fields(LF_COMMESSE, y, dlg, cms_req);
}
} }
else
if (level == "CMS") // Crea commessa
{
_cms_start = dlg;
_cms_end = dlg + ca_multilevel_code_info(LF_COMMESSE).levels()-1;
if (fasinfo.parent() == LF_COMMESSE)
create_sheet_fields(LF_FASI, y, dlg, fsc_req);
else
{
const bool cms_req = ini.get_bool("CmsRequired");
create_sheet_fields(LF_COMMESSE, y, dlg, cms_req);
}
}
} }
if (fasinfo.levels() > 0 && fasinfo.parent() <= 0) if (fasinfo.levels() > 0 && fasinfo.parent() <= 0)