Patch level : 12.0 1096

Files correlati     : xvaga.dll ba0100m.msk
Commento        :

Aggiornata maschera di configurazione impostazioni email e aggiunta la possibilità di mettere il mittente in Ccn
This commit is contained in:
Macchina_Compilatrice 2021-10-26 12:05:59 +02:00 committed by Alessandro Bonazzi
parent 4fe321d849
commit 3195480088
5 changed files with 347 additions and 0 deletions

4
cd/test/sy1096.txt Normal file
View File

@ -0,0 +1,4 @@
Aggiornata maschera di configurazione impostazioni email e aggiunta la possibilità di mettere il mittente in Ccn
xvaga.dll
ba0100m.msk

25
cd/test/sy1096a.ini Normal file
View File

@ -0,0 +1,25 @@
[Main]
Demo=0
[sy1]
File(55) = xvaga.dll|X
File(57) = ba0100m.msk|X
Patch = 1096
Versione = 21511200
[sy99]
Kill(0) = setup\teamviewerqs_it.exe|x
[sy]
Data = 26-10-2021
Descrizione = Sistema
Dischi = 1
Moduli =
OEM =
Patch = 1096
PostProcess =
PreProcess =
Prezzo(1) =
Prezzo(2) =
Versione = 21511200

BIN
cd/test/sy1096a1.zip Normal file

Binary file not shown.

246
src/include/repapp.cpp Normal file
View File

@ -0,0 +1,246 @@
#include <repapp.h>
#include <utility.h>
///////////////////////////////////////////////////////////
// TReport_application
///////////////////////////////////////////////////////////
bool TReport_application::create()
{
bool ok = user_create();
if (ok)
return TSkeleton_application::create();
return false;
}
bool TReport_application::destroy()
{
user_destroy();
return TSkeleton_application::destroy();
}
void TReport_application::ini2mask(TConfig& ini, TMask& m, bool query)
{
const TString16 defpar = ini.get_paragraph();
TString tmp;
for (int f = m.fields()-1; f >= 0; f--)
{
TMask_field& campo = m.fld(f);
const TFieldref* fref = campo.field();
if (fref)
{
if (!query || campo.in_key(0))
{
const TString& str = fref->read(ini, defpar);
if (str.not_empty())
{
campo.set(str);
if (query)
{
tmp.format("%d=%s", campo.dlg(), (const char *) str);
}
}
}
}
}
ini.set_paragraph(defpar);
}
void TReport_application::mask2ini(const TMask& m, TConfig& ini)
{
ini.set("Firm", get_firm(), "Transaction");
ini.set("User", user());
ini.set("HostName", get_hostname());
int year, release, tag, patch;
if (get_version_info(year, release, tag, patch))
{
TString80 ver;
ver.format("%d %d.%d-%d", year, release, tag, patch);
ini.set("Version", ver);
}
for (int f = 0; f < m.fields(); f++)
{
TMask_field& campo = m.fld(f);
if (campo.shown())
{
const TFieldref* fr = campo.field();
if (fr)
{
if (campo.empty())
fr->write(ini, "Main", " ");
else
{
if (campo.class_id() == CLASS_DATE_FIELD && campo.right_justified())
{
const TDate d(campo.get());
fr->write(ini, "Main", d.string(ANSI));
}
else
fr->write(ini, "Main", campo.get());
}
}
}
}
ini.set_paragraph("Main"); // Reimposta paragrafo standard
}
// @cmember Esegue la stampa
void TReport_application::execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type)
{
book.add(rep, type);
}
TTrec * TReport_application::get_dbase_recdesc(TReport & rep)
{
TTrec * desc = new TTrec;
TReport_section * head = rep.find_section('H', 0);
int header_row = -1;
TToken_string key;
int nfields = 0;
int hrow = 0;
if (head != nullptr)
{
int secfields = head->items();
for (int i = secfields - 1; hrow == 0 && i >= 0; i--)
{
const TReport_field & fld = head->field(i);
const TReport_rct& r = fld.get_rect();
if ((r.x < 1500) && (fld.type() == 'T'))
hrow = r.y;
}
TString fieldname;
for (int i = 0; i < secfields; i++)
{
const TReport_field & fld = head->field(i);
const TReport_rct& r = fld.get_rect();
if ((r.y >= hrow - 50) && (r.y <= hrow + 50) && (fld.type() == 'T'))
{
fieldname = fld.formatted_text();
fieldname.cut(9);
fieldname.strip_spaces();
fieldname.upper();
if (nfields == 0)
key = fieldname;
const int nf = desc->fields();
TString f;
TToken_string def;
bool found = false;
for (int n = nf - 1; !found && n >= 0; n--)
{
def = desc->fielddef(n);
f = def.get(0);
if (f.starts_with(fieldname))
{
fieldname << atoi(f.mid(fieldname.len())) + 1;
found = true;
}
}
def = fieldname;
def.add(_alfafld);
def.add(80);
desc->set_fields(nfields);
desc->update_fielddef(nfields++, def);
}
}
desc->set_keys(1);
desc->update_keydef(0, key);
}
return desc;
}
// @cmember Ciclo principale
void TReport_application::main_loop()
{
TAutomask & m = get_mask();
KEY k;
while ((k = m.run()) != K_QUIT)
{
TReport & rep = get_report(m);
TReport_book b(title());
TFilename name = get_filename(rep);
bool ask_filename = name.blank();
export_type type = _export_printer;
switch (k)
{
case K_EXCEL:
type = _export_excel;
break;
case K_PDF:
type = _export_pdf;
break;
case K_TEXT:
type = _export_text;
break;
case K_DBF:
type = _export_dbase;
break;
case K_VISUALIZE:
type = _export_visualize;
break;
default:
break;
}
execute_print(b, m, rep, type);
switch (k)
{
case K_ENTER:
case K_PRINT:
b.print_or_preview();
break;
case K_EXPORT:
b.esporta();
break;
case K_EXCEL:
b.export_excel(name, false, true, ask_filename);
break;
case K_PDF:
b.export_pdf(name, false, true, ask_filename);
break;
case K_TEXT:
b.export_text(name, false, true, ask_filename);
break;
case K_DBF :
b.export_dbase(name, false, get_dbase_recdesc(rep), true, ask_filename);
break;
case K_VISUALIZE:
b.preview();
break;
default:
break;
}
}
}
const char * TReport_application::get_filename(const TReport & rep)
{
short id = output_id();
TFilename output;
if (id > 0)
output = get_mask().get(id);
else
output.tempdir();
output.add(output_name(rep));
TString & str = get_tmp_string(output.len());
str = output;
return str;
}

72
src/include/repapp.h Normal file
View File

@ -0,0 +1,72 @@
#ifndef __REPAPP_H
#define __REPAPP_H
#ifndef __APPLICAT_H
#include <applicat.h>
#endif
#ifndef __CONFIG_H
#include <config.h>
#endif
#ifndef __REPRINT_H
#include <reprint.h>
#endif
#ifndef __AUTOMASK_H
#include <automask.h>
#endif
// @doc EXTERNAL
// @class TReport_application | Classe per la gestione di una applicazione di stampa con report
//
// @base public | TApplication
class TReport_application : public TSkeleton_application
// @author:(INTERNAL) Guido
// @access:(INTERNAL) Private Member
{
private:
virtual bool create();
virtual bool destroy();
// @access Protected Member
protected: // TApplication
virtual bool firm_change_enabled() const { return true; }
// @cmember Aggiorna i limiti di ricerca sul cambio ditta
virtual void on_firm_change() { return TApplication::on_firm_change(); }
// @cmember Ritorna il report
virtual TReport & get_report(const TAutomask & m) pure;
// @cmember Alloca e ritorna il report una volta usato va distrutto;
virtual TTrec * get_dbase_recdesc(TReport & rep);
// @cmember Ciclo principale
virtual void main_loop();
// @cmember Inizializzazione dei dati dell'utente
virtual bool user_create() { return true; }
// @cmember Distruzione dei dati dell'utente
virtual bool user_destroy() { return true; }
// @cmember ritorna la maschera
virtual TAutomask & get_mask() pure;
void ini2mask(TConfig& ini, TMask& m, bool query);
void mask2ini(const TMask& m, TConfig& ini);
virtual void execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type = _export_printer);
public:
virtual const char * title() const { return "Report application"; }
virtual short output_id() const { return 0; }
virtual const char * output_name(const TReport & rep) const { return rep.filename().name_only(); }
const char * get_filename(const TReport & rep);
// @cmember Costruttore
TReport_application() { }
// @cmember Distruttore
virtual ~TReport_application() { }
};
#endif