Patch level : 4.0 812

Files correlati     :  ve0.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@15761 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2007-11-16 13:46:49 +00:00
parent 38983f3ccf
commit e33e4be78d
4 changed files with 120 additions and 19 deletions

View File

@ -812,8 +812,16 @@ class TDocumento_mask : public TVariable_mask // velib06
bool _ges_mag, _ges_dep, _ges_ca;
TString _std_mag, _std_dep;
TSmart_card * _smartcard;
short _last_cdc_dlg;
short _last_cms_dlg;
short _cdc_start;
short _cdc_end;
short _cms_start;
short _cms_end;
short _cdc_start_sh;
short _cdc_end_sh;
short _cms_start_sh;
short _cms_end_sh;
TString _codcms;
TString _codcms_sh;
protected:
virtual void next_page(int p);
@ -867,9 +875,6 @@ public:
const TString& stdmag() const { return _std_mag; }
const TString& stddep() const { return _std_dep; }
const short last_cdc_dlg() const { return _last_cdc_dlg;}
const short last_cms_dlg() const { return _last_cms_dlg;}
TSheet_field& sheet() const { return *_sheet; }
TCodgiac_livelli& livelli() const { return *_livelli_giac; }
@ -885,6 +890,19 @@ public:
bool is_calculated_page(int p) const { return _calculated_pages[p]; }
TSmart_card* smartcard() const { return _smartcard;}
short cdc_start() const { return _cdc_start;}
short cdc_end() const { return _cdc_end;}
short cms_start() const { return _cms_start;}
short cms_end() const { return _cms_end;}
short cdc_start_sh() const { return _cdc_start_sh;}
short cdc_end_sh() const { return _cdc_end_sh;}
short cms_start_sh() const { return _cms_start_sh;}
short cms_end_sh() const { return _cms_end_sh;}
TString & codcms() { return _codcms;}
const TString & codcms() const { return _codcms;}
TString & codcms_sh() { return _codcms_sh;}
const TString & codcms_sh() const { return _codcms_sh;}
TDocumento_mask(const char* tipodoc);
virtual ~TDocumento_mask();
};

View File

@ -52,7 +52,10 @@ bool TOriginal_row_mask::on_key(KEY key)
TDocumento_mask::TDocumento_mask(const char* td)
: TVariable_mask(), _progs_page(-1),
_condv(NULL), _smartcard(NULL),
_last_cdc_dlg(-1), _last_cms_dlg(-1)
_cms_start(-1), _cms_end(-1),
_cms_start_sh(-1), _cms_end_sh(-1),
_cdc_start(-1), _cdc_end(-1),
_cdc_start_sh(-1), _cdc_end_sh(-1)
{
CHECK(strlen(td) <= 4, "TDocumento_mask(TipoDocumento) not (MaskName)");
@ -378,6 +381,8 @@ void TDocumento_mask::insert_anal_page()
const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2
if (level == "CDC") // Crea centro di costo
{
_cdc_start = dlg;
_cdc_end = dlg + ca_multilevel_code_info(LF_CDC).levels()-1;
if (use_fsc && fasinfo.parent() == LF_CDC)
insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req);
else
@ -385,11 +390,12 @@ void TDocumento_mask::insert_anal_page()
const bool cdc_req = ini.get_bool("CdcRequired");
insert_anal_fields(*this, newpage, LF_CDC, y, dlg, dlgd, cdc_req);
_last_cdc_dlg = dlg - 1;
}
} else
if (level == "CMS") // Crea commessa
{
_cms_start = dlg;
_cms_end = dlg + ca_multilevel_code_info(LF_COMMESSE).levels()-1;
if (use_fsc && fasinfo.parent() == LF_COMMESSE)
insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req);
else
@ -397,9 +403,9 @@ void TDocumento_mask::insert_anal_page()
const bool cms_req = ini.get_bool("CmsRequired");
insert_anal_fields(*this, newpage, LF_COMMESSE, y, dlg, dlgd, cms_req);
_last_cms_dlg = dlg - 1;
}
}
set_field_handler(_cms_end, codcms_handler);
}
if (use_fsc && fasinfo.parent() <= 0)
insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req);
@ -469,7 +475,7 @@ void TDocumento_mask::configura_sheet(TSheet_field& sheet)
{
if( to_delete[i] )
{
sheet.enable_column( i + FIRST_FIELD, FALSE);
sheet.enable_column( i + FIRST_FIELD, false);
sheet.delete_column( i + FIRST_FIELD);
}
}
@ -926,7 +932,7 @@ void TDocumento_mask::spese2mask()
doc().put(DOC_CAMBIO, get(F_CAMBIO));
doc().put(DOC_CONTROEURO, get(F_CONTROEURO));
doc().update_spese_aut(spese, FALSE, &sh);
doc().update_spese_aut(spese, false, &sh);
sh.force_update();
}
@ -1136,29 +1142,39 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga)
short dlg = FR_CDC1; // id del primo campo da generare
short dlgd = FR_DESCDC1;
_cdc_start_sh = _cdc_end_sh = -1 ;
_cms_start_sh = _cms_end_sh = -1 ;
for (i = 0; i < 2; i++)
{
const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2
if (level == "CDC") // Crea centro di costo
{
if (_cdc_start_sh < 0)
{
_cdc_start_sh = dlg;
_cdc_end_sh = dlg + ca_multilevel_code_info(LF_CDC).levels()-1;
}
if (use_fsc && fasinfo.parent() == LF_CDC)
insert_anal_fields(*m, page, LF_FASI, y, dlg, dlgd, false);
else
{
insert_anal_fields(*m, page, LF_CDC, y, dlg, dlgd, false);
m->set_handler( dlg - 1, cdc_mag_handler);
}
m->set_handler( _cdc_end_sh, cdc_mag_handler);
} else
if (level == "CMS") // Crea commessa
{
if (_cms_start_sh < 0)
{
_cms_start_sh = dlg;
_cms_end_sh = dlg + ca_multilevel_code_info(LF_COMMESSE).levels()-1;
}
if (use_fsc && fasinfo.parent() == LF_COMMESSE)
insert_anal_fields(*m, page, LF_FASI, y, dlg, dlgd, false);
else
{
insert_anal_fields(*m, page, LF_COMMESSE, y, dlg, dlgd, false);
m->set_handler( dlg - 1, cms_mag_handler);
}
m->set_handler(_cms_end_sh, cms_mag_handler);
}
}
if (use_fsc && fasinfo.parent() <= 0)
@ -1295,6 +1311,12 @@ bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key )
m.update_progs();
}
break;
case K_CTRL + K_ENTER: // inizio modifica
{
TRiga_documento& riga = doc[r + 1];
m.codcms_sh() = riga.get(RDOC_CODCMS);
}
case K_DEL: // Cancellazione
{
doc.destroy_row(r + 1, TRUE);
@ -3194,4 +3216,4 @@ bool TDocumento_mask::codval_handler( TMask_field& f, KEY key )
m.sfield(F_SHEET).force_update(); // Aggiorna punti decimali degli importi
}
return TRUE;
}
}

View File

@ -26,6 +26,8 @@
#include "../mg/deslin.h"
#include "../mg/umart.h"
#include "../ca/calib01.h"
#include "../ca/commesse.h"
#define MAX_VIS_RATE 5
@ -2112,7 +2114,7 @@ bool ca_mag_handler(TMask_field& f, bool cdc = true)
if (cod.blank())
{
cod.cut(0);
last_fld = cdc ? mask.last_cdc_dlg() : mask.last_cms_dlg();
last_fld = cdc ? mask.cdc_end() : mask.cms_end();
first_fld = last_fld - info.levels() + 1;
for (i = first_fld; i <= last_fld; i++)
@ -2133,9 +2135,34 @@ bool ca_mag_handler(TMask_field& f, bool cdc = true)
bool cms_mag_handler(TMask_field& f, KEY key)
{
if ((key == K_TAB && f.focusdirty()) || key == K_ENTER)
{
ca_mag_handler(f, false);
return true;
TMask & m = f.mask();
const TSheet_field & s = *m.get_sheet();
TDocumento_mask & mask = (TDocumento_mask & )s.mask();
const TRectype & curr = m.efield(mask.cms_start_sh()).browse()->cursor()->curr();
const TString codcosto = curr.get(COMMESSE_CODCOSTO);
const TString & codcms = curr.get(COMMESSE_CODCMS);
if (mask.cdc_start_sh() >= 0 && mask.codcms_sh() != codcms) // && codcosto.full())
{
for (short i = mask.cdc_start_sh(); i <= mask.cdc_end_sh(); 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);
}
}
mask.codcms_sh() = codcms;
}
}
return true;
}
bool cdc_mag_handler(TMask_field& f, KEY key)
@ -2143,5 +2170,39 @@ bool cdc_mag_handler(TMask_field& f, KEY key)
if ((key == K_TAB && f.focusdirty()) || key == K_ENTER)
ca_mag_handler(f);
return true;
}
bool codcms_handler(TMask_field& f, KEY key)
{
TDocumento_mask & mask = (TDocumento_mask & )f.mask();
if ((key == K_TAB && f.focusdirty()) || key == K_ENTER)
{
const TRectype & curr = mask.efield(mask.cms_start()).browse()->cursor()->curr();
const TString codcosto = curr.get(COMMESSE_CODCOSTO);
const TString & codcms = curr.get(COMMESSE_CODCMS);
if (mask.cdc_start() >= 0 && mask.codcms() != codcms)
{
for (short i = mask.cdc_start(); i <= mask.cdc_end(); i++)
{
TEdit_field & e = mask.efield(i);
const TFieldref * f = e.field();
if (f != NULL)
{
const int from = f->from();
const int to = f->to();
mask.set(i, codcosto.sub(from, to), 0x2);
}
}
mask.codcms() = codcms;
}
}
else
if (key == K_TAB && !mask.is_running())
mask.codcms() = mask.doc().get(DOC_CODCMS);
return true;
}

View File

@ -32,7 +32,7 @@ bool link_handler( TMask_field& f, KEY key );
bool cdc_mag_handler(TMask_field& f, KEY key);
bool cms_mag_handler(TMask_field& f, KEY key);
bool codcms_handler(TMask_field &f, KEY key);
bool numdocrif_hndl(TMask_field& field, KEY key);
bool smart_hndl(TMask_field& field, KEY key);
#endif