From e33e4be78def42052e24fe43b319cdf80fcb92f5 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 16 Nov 2007 13:46:49 +0000 Subject: [PATCH] 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 --- ve/velib.h | 28 +++++++++++++++++---- ve/velib06.cpp | 42 +++++++++++++++++++++++-------- ve/velib06a.cpp | 67 ++++++++++++++++++++++++++++++++++++++++++++++--- ve/vepriv.h | 2 +- 4 files changed, 120 insertions(+), 19 deletions(-) diff --git a/ve/velib.h b/ve/velib.h index 511b00a0e..cda1af9a2 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -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(); }; diff --git a/ve/velib06.cpp b/ve/velib06.cpp index b85848037..fb613fbdf 100755 --- a/ve/velib06.cpp +++ b/ve/velib06.cpp @@ -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; -} \ No newline at end of file +} diff --git a/ve/velib06a.cpp b/ve/velib06a.cpp index b6059c34b..6871f502b 100755 --- a/ve/velib06a.cpp +++ b/ve/velib06a.cpp @@ -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; +} + diff --git a/ve/vepriv.h b/ve/vepriv.h index 5962cdd6e..b9690911d 100755 --- a/ve/vepriv.h +++ b/ve/vepriv.h @@ -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