#include "sc21pec.h" #include "sc2102.h" #include "sc2402.h" #include "../cg/cgsaldac.h" #include "../ca/calib01.h" #include #include #include TSol_mask::TSol_mask(const char *name) :TESSL_mask(name) { _cdc_start = 0; _cdc_end = 0; _cms_start = 0; _cms_end = 0; _fas_start = 0; _fas_end = 0; if (dongle().active(CAAUT) || dongle().active(CMAUT)) { create_page("Selezione analitica", 1); const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); const bool use_fsc = fasinfo.levels() > 0; TConfig& ini = ca_config(); int y = 3; short dlg = PEC_ANAL0; // id del primo campo da generare short dlgd = PEC_DESANAL0; for (int 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 { _cdc_start = dlg; _cdc_end = _cdc_start + ca_multilevel_code_info(LF_CDC).levels()-1; if (use_fsc && fasinfo.parent() == LF_CDC) { _fas_start = _cdc_end + 1; _fas_end = _fas_start + ca_multilevel_code_info(LF_FASI).levels()- ca_multilevel_code_info(LF_COMMESSE).levels() - 1; insert_anal_fields(*this, 1, LF_FASI, y, dlg, dlgd); } else insert_anal_fields(*this, 1, LF_CDC, y, dlg, dlgd); } else if (level == "CMS") // Crea commessa { _cms_start = dlg; _cms_end = _cms_start + ca_multilevel_code_info(LF_COMMESSE).levels()-1; if (use_fsc && fasinfo.parent() == LF_COMMESSE) { _fas_start = _cms_end + 1 ; _fas_end = _fas_start + ca_multilevel_code_info(LF_FASI).levels()- ca_multilevel_code_info(LF_COMMESSE).levels() - 1; insert_anal_fields(*this, 1, LF_FASI, y, dlg, dlgd); } else insert_anal_fields(*this, 1, LF_COMMESSE, y, dlg, dlgd); } } if (use_fsc && fasinfo.parent() <= 0) { _fas_start = dlg; _fas_end = _fas_start + ca_multilevel_code_info(LF_FASI).levels()-1; insert_anal_fields(*this, 1, LF_FASI, y, dlg, dlgd); } } } int TSol_mask::insert_anal_fields(TMask& m, int page, int lf, int& y, short& dlg, short& dlgd) { const int h = ca_create_fields(m, page, lf, 2, y, dlg, dlgd); for (int i = 0; i < h; i++) { TEdit_field& fld = m.efield(dlg+i); int logic = lf; if (logic == LF_FASI) { const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); if (fasinfo.parent() != 0) { const TMultilevel_code_info& parinfo = ca_multilevel_code_info(fasinfo.parent()); if (i < parinfo.levels()) logic = fasinfo.parent(); } } TEdit_field& dfld = m.efield(dlgd+i); dfld.set_field(EMPTY_STRING); // Toglie campi che fan saltare gli output! } y += h+1; dlg += h; dlgd += h; return h; } TSol_mask::~TSol_mask() {} bool TSol_mask::get_sel_tot_saldo() const { return get(F_RIFIMPMIN) == "C"; } real TSol_mask::get_sel_importo() const { return real(get(F_IMPORMIN)); } const TToken_string & TSol_mask::get_anal_filter() const { TToken_string &f = get_tmp_string(100); TString s; TString codfase; const TMultilevel_code_info & fasi = ca_multilevel_code_info(LF_FASI); TConfig& cfg = ca_config(); bool full = false; bool empty = true; if (_cms_start > 0) { s.cut(0); for (short dlg = _cms_start; dlg <= _cms_end; dlg++) { const int len = field(dlg).size(); TString val = get(dlg); full |= val.full(); if (val.full()) val.rpad(len); else val.fill('?', len); s << val; } } if (full) { empty = false; f.add(s); } else f.add(""); if (_cdc_start > 0) { full = false; s.cut(0); for (short dlg = _cdc_start; dlg <= _cdc_end; dlg++) { const int len = field(dlg).size(); TString val = get(dlg); full |= val.full(); if (val.full()) val.rpad(len); else val.fill('?', len); s << val; } } if (full) { empty = false; f.add(s); } else f.add(""); if (_fas_start > 0) { full = false; s.cut(0); for (short dlg = _fas_start; dlg <= _fas_end; dlg++) { const int len = field(dlg).size(); TString val = get(dlg); full |= val.full(); if (val.full()) val.rpad(len); else val.fill('?', len); s << val; } } if (full) { empty = false; f.add(s); } else f.add(""); if (empty) f.cut(0); return f; } /////////////////////////////////////////////////////////// // TSol_row /////////////////////////////////////////////////////////// TSol_row::TSol_row(const TRiga_partite& row, const TDate& data, const TImporto& imp, int rata) :TESSL_row(row, data, imp, rata) { } TSol_row::TSol_row(const char* desc, const TImporto& imp, const TValuta& val) :TESSL_row(desc, imp, val) {} /////////////////////////////////////////////////////////// // TSol_form: form speciale per solleciti /////////////////////////////////////////////////////////// TSol_form::TSol_form(const TSol_mask& m, bool gesval, short id_datalim, short id_datascad, short id_ggrischio) : TESSL_form(m, gesval, id_datalim, id_datascad, id_ggrischio) { _sel_tot_saldo = m.get_sel_tot_saldo(); _sel_importo = m.get_sel_importo(); } /////////////////////////////////////////////////////////// // TSol_array /////////////////////////////////////////////////////////// TSol_array::TSol_array(const TPartita& game, const TSol_form* f) :TESSL_array(game, f) { }