Patch level : 12.0 1016
Files correlati : ve0.exe Commento : Aggiunte le funzioni : get_property_str get_property_bool get_property_int long get_property_long get_property_date get_property_real al tipo documento, tipo riga documento e alla riga documento Aggiunto multi_row_rif_handler (handler numero 9 delle righe documento) per caricare un campo dalle righe da cui deriva una riga.
This commit is contained in:
parent
798d92d36d
commit
9b9b8a1799
@ -386,6 +386,14 @@ public:
|
||||
|
||||
bool auto_evasione() const { return get_bool("B15"); }
|
||||
const TString & auto_evasione_elab() const { return get("S12"); }
|
||||
|
||||
const TString & get_property_str(const char * paragraph, const char * property_name, const char* defval = "", int idx = -1) const;
|
||||
const bool get_property_bool(const char * paragraph, const char * property_name, const bool defval = false, int idx = -1) const;
|
||||
const int get_property_int(const char * paragraph, const char * property_name, const int defval = 0, int idx = -1) const;
|
||||
const long get_property_long(const char * paragraph, const char * property_name, const long defval = 0L, int idx = -1) const;
|
||||
const TDate get_property_date(const char * paragraph, const char * property_name, const char * defval = "", int idx = -1) const;
|
||||
const real get_property_real(const char * paragraph, const char * property_name, const char * defval = "", int idx = -1) const;
|
||||
|
||||
|
||||
TTipo_documento(const char* tipodoc = NULL);
|
||||
TTipo_documento(const TRectype& rec);
|
||||
@ -535,6 +543,13 @@ public:
|
||||
int read(const char* tiporig);
|
||||
void set_defaults(TSheet_field& s, int row) const;
|
||||
|
||||
const TString & get_property_str(const char * paragraph, const char * property_name, const char* defval = "", int idx = -1) const;
|
||||
const bool get_property_bool(const char * paragraph, const char * property_name, const bool defval = false, int idx = -1) const;
|
||||
const int get_property_int(const char * paragraph, const char * property_name, const int defval = 0, int idx = -1) const;
|
||||
const long get_property_long(const char * paragraph, const char * property_name, const long defval = 0L, int idx = -1) const;
|
||||
const TDate get_property_date(const char * paragraph, const char * property_name, const char * defval = "", int idx = -1) const;
|
||||
const real get_property_real(const char * paragraph, const char * property_name, const char * defval = "", int idx = -1) const;
|
||||
|
||||
TTipo_riga_documento(const char* tiporig = NULL);
|
||||
TTipo_riga_documento(const TRectype& rec);
|
||||
virtual ~TTipo_riga_documento() { }
|
||||
@ -715,7 +730,14 @@ public:
|
||||
void update_orders(real qta, TToken_string & tipi, TToken_string & stati,
|
||||
const char stato_aperto, const char stato_evaso);
|
||||
|
||||
TRiga_documento(TDocumento* doc, const char* tipo = NULL);
|
||||
const TString & get_property_str(const char * paragraph, const char * property_name, const char* defval = "", int idx = -1) const; // ricorsive tipo riga poi tipo documento
|
||||
const bool get_property_bool(const char * paragraph, const char * property_name, bool defval = false, int idx = -1) const;
|
||||
const int get_property_int(const char * paragraph, const char * property_name, int defval = 0, int idx = -1) const;
|
||||
const long get_property_long(const char * paragraph, const char * property_name, long defval = 0L, int idx = -1) const;
|
||||
const TDate get_property_date(const char * paragraph, const char * property_name, const char * defval = "", int idx = -1) const;
|
||||
const real get_property_real(const char * paragraph, const char * property_name, const char * defval = "", int idx = -1) const;
|
||||
|
||||
TRiga_documento(TDocumento* doc, const char* tipo = NULL);
|
||||
TRiga_documento(const TRiga_documento & row);
|
||||
virtual ~TRiga_documento() {}
|
||||
};
|
||||
|
@ -150,6 +150,48 @@ TFormula_documento * TTipo_riga_documento::succ_formula(bool restart)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const TString & TTipo_riga_documento::get_property_str(const char * paragraph, const char * property_name, const char* defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof);
|
||||
|
||||
return ini_get_string(prof, paragraph, property_name, defval, idx);
|
||||
}
|
||||
|
||||
const bool TTipo_riga_documento::get_property_bool(const char * paragraph, const char * property_name, bool defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof);
|
||||
|
||||
return ini_get_bool(prof, paragraph, property_name, defval, idx);
|
||||
}
|
||||
|
||||
const int TTipo_riga_documento::get_property_int(const char * paragraph, const char * property_name, int defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof);
|
||||
|
||||
return ini_get_int(prof, paragraph, property_name, defval, idx);
|
||||
}
|
||||
|
||||
const long TTipo_riga_documento::get_property_long(const char * paragraph, const char * property_name, long defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof);
|
||||
|
||||
return ini_get_long(prof, paragraph, property_name, defval, idx);
|
||||
}
|
||||
|
||||
const TDate TTipo_riga_documento::get_property_date(const char * paragraph, const char * property_name, const char * defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof);
|
||||
|
||||
return ini_get_date(prof, paragraph, property_name, defval, idx);
|
||||
}
|
||||
|
||||
const real TTipo_riga_documento::get_property_real(const char * paragraph, const char * property_name, const char * defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof);
|
||||
|
||||
return ini_get_real(prof, paragraph, property_name, defval, idx);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Riga documento per vendite
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -1798,3 +1840,58 @@ bool TRiga_documento::edit(int logicnum, const char* alternate_key_fields, const
|
||||
app = "pe0 -3";
|
||||
return TRectype::edit(logicnum, alternate_key_fields, app);
|
||||
}
|
||||
|
||||
const TString & TRiga_documento::get_property_str(const char * paragraph, const char * property_name, const char* defval, int idx) const
|
||||
{
|
||||
TString & s = get_tmp_string(2048);
|
||||
|
||||
s = tipo().get_property_str(paragraph, property_name, defval, idx);
|
||||
if (s == defval)
|
||||
s = doc().tipo().get_property_str(paragraph, property_name, defval, idx);
|
||||
return s;
|
||||
}
|
||||
|
||||
const bool TRiga_documento::get_property_bool(const char * paragraph, const char * property_name, bool defval, int idx) const
|
||||
{
|
||||
bool b = tipo().get_property_bool(paragraph, property_name, defval, idx);
|
||||
|
||||
if (b == defval)
|
||||
b = doc().tipo().get_property_bool(paragraph, property_name, defval, idx);
|
||||
return b;
|
||||
}
|
||||
|
||||
const int TRiga_documento::get_property_int(const char * paragraph, const char * property_name, int defval, int idx) const
|
||||
{
|
||||
int i = get_property_int(paragraph, property_name, defval, idx);
|
||||
|
||||
if (i == defval)
|
||||
i = doc().tipo().get_property_int(paragraph, property_name, defval);
|
||||
return i;
|
||||
}
|
||||
|
||||
const long TRiga_documento::get_property_long(const char * paragraph, const char * property_name, long defval, int idx) const
|
||||
{
|
||||
long l = tipo().get_property_long(paragraph, property_name, defval, idx);
|
||||
|
||||
if (l == defval)
|
||||
l = doc().tipo().get_property_long(paragraph, property_name, defval, idx);
|
||||
return l;
|
||||
}
|
||||
|
||||
const TDate TRiga_documento::get_property_date(const char * paragraph, const char * property_name, const char * defval, int idx) const
|
||||
{
|
||||
TDate d = tipo().get_property_date(paragraph, property_name, defval, idx);
|
||||
|
||||
if (d == TDate(defval))
|
||||
d = doc().tipo().get_property_date(paragraph, property_name, defval, idx);
|
||||
return d;
|
||||
}
|
||||
|
||||
const real TRiga_documento::get_property_real(const char * paragraph, const char * property_name, const char * defval, int idx) const
|
||||
{
|
||||
real r = tipo().get_property_real(paragraph, property_name, defval, idx);
|
||||
|
||||
if (r == real(defval))
|
||||
r = doc().tipo().get_property_real(paragraph, property_name, defval, idx);
|
||||
return r;
|
||||
}
|
||||
|
@ -296,6 +296,7 @@ const TPointer_array& TTipo_documento::handlers() const
|
||||
TConfig prof(pn, "HANDLERS");
|
||||
TAssoc_array& v = prof.list_variables();
|
||||
TToken_string pair;
|
||||
|
||||
FOR_EACH_ASSOC_STRING(v, h, k, s)
|
||||
{
|
||||
int id = 0, hnd = 0;
|
||||
@ -1361,3 +1362,44 @@ TRdoc_key::TRdoc_key(const TRectype& rec)
|
||||
}
|
||||
}
|
||||
|
||||
const TString & TTipo_documento::get_property_str(const char * paragraph, const char * property_name, const char* defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof); prof.custom_path();
|
||||
|
||||
return ini_get_string(prof, paragraph, property_name, defval, idx);
|
||||
}
|
||||
|
||||
const bool TTipo_documento::get_property_bool(const char * paragraph, const char * property_name, bool defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof); prof.custom_path();
|
||||
|
||||
return ini_get_bool(prof, paragraph, property_name, defval, idx);
|
||||
}
|
||||
|
||||
const int TTipo_documento::get_property_int(const char * paragraph, const char * property_name, int defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof); prof.custom_path();
|
||||
|
||||
return ini_get_int(prof, paragraph, property_name, defval, idx);
|
||||
}
|
||||
|
||||
const long TTipo_documento::get_property_long(const char * paragraph, const char * property_name, long defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof); prof.custom_path();
|
||||
|
||||
return ini_get_long(prof, paragraph, property_name, defval, idx);
|
||||
}
|
||||
|
||||
const TDate TTipo_documento::get_property_date(const char * paragraph, const char * property_name, const char * defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof); prof.custom_path();
|
||||
|
||||
return ini_get_date(prof, paragraph, property_name, defval, idx);
|
||||
}
|
||||
|
||||
const real TTipo_documento::get_property_real(const char * paragraph, const char * property_name, const char * defval, int idx) const
|
||||
{
|
||||
TFilename prof; profile_name(prof); prof.custom_path();
|
||||
|
||||
return ini_get_real(prof, "MAIN", property_name, defval, idx);
|
||||
}
|
||||
|
@ -1727,6 +1727,7 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga)
|
||||
TFilename proname; tiporiga.profile_name(proname);
|
||||
TConfig pro( proname, "HANDLERS" );
|
||||
TAssoc_array& handlers = pro.list_variables();
|
||||
|
||||
FOR_EACH_ASSOC_STRING(handlers, obj, key, str)
|
||||
{
|
||||
int id = 0, hd = 0;
|
||||
|
@ -35,8 +35,6 @@
|
||||
#include "../ca/calib01.h"
|
||||
#include "../ca/commesse.h"
|
||||
|
||||
|
||||
|
||||
#define MAX_VIS_RATE 5
|
||||
|
||||
bool numdocrif_hndl( TMask_field& field, KEY key )
|
||||
@ -584,7 +582,10 @@ void TDocumento_mask::user_set_row_handler(TMask& rm, short field, int index)
|
||||
if (field >= FR_LIV1 && field <= FR_LIV4)
|
||||
rm.set_handler(field, gen_livelli_handler);
|
||||
break;
|
||||
default:
|
||||
case 9:
|
||||
rm.set_handler(field, multi_row_rif_handler);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1903,7 +1904,8 @@ bool codart_handler(TMask_field& f, KEY key )
|
||||
|
||||
const char* rdoc_prezzo = mask.doc().tipo().calcolo_lordo() ? RDOC_PREZZOL : RDOC_PREZZO;
|
||||
mask.doc()[current_doc_row].put(rdoc_prezzo, row_mask.get(FR_PREZZO));
|
||||
TArticolo_conai cart(codart);
|
||||
|
||||
TArticolo_conai cart(codart);
|
||||
|
||||
for (int i = 0; i < FR_CMAX; i++)
|
||||
{
|
||||
@ -3659,3 +3661,32 @@ bool nar_handler(TMask_field& f, KEY key)
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool multi_row_rif_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (f.initial_check(key) && f.get().blank())
|
||||
{
|
||||
TMask& row_mask = f.mask();
|
||||
TSheet_field& sh = *row_mask.get_sheet();
|
||||
TDocumento_mask& mask = (TDocumento_mask &)sh.mask();
|
||||
const int current_doc_row = sh.selected() + 1;
|
||||
TRiga_documento & row = mask.doc()[current_doc_row];
|
||||
TToken_string refs(row.get(RDOC_ORIGINAL_ROWS), ',');
|
||||
TString_array row_refs;
|
||||
TString val;
|
||||
|
||||
row_refs.tok2arr(refs);
|
||||
FOR_EACH_ARRAY_ROW(row_refs, r, row_ref)
|
||||
{
|
||||
const TRectype& orig_row = cache().get(LF_RIGHEDOC, *row_ref); // ORC | 2020 | D | 3 | 8
|
||||
const TString & rif_fld = row.get_property_str("", "RIF_FLD_ROW");
|
||||
TRecfield riffld((TRectype &)orig_row, rif_fld);
|
||||
const TString rifval = (const char *)riffld;
|
||||
|
||||
if (val.full())
|
||||
val << " - ";
|
||||
val << rifval;
|
||||
}
|
||||
f.set(val);
|
||||
}
|
||||
return true;
|
||||
}
|
@ -50,14 +50,11 @@ bool fido_hndl(TMask_field& field, KEY key);
|
||||
bool nar_handler(TMask_field& f, KEY key);
|
||||
bool subappalto_hndl(TMask_field& f, KEY key);
|
||||
bool reportba8_hndl(TMask_field& f, KEY key);
|
||||
bool multi_row_rif_handler(TMask_field& f, KEY key);
|
||||
|
||||
bool is_tipodoc_ok(const TString & tipodoc);
|
||||
|
||||
short conai_peso_id(int cc);
|
||||
short conai_sottocat_id(int cc);
|
||||
const char* get_cf_esenz(const TString& tipo_conai);
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user