Patch level : 12.0 no patch

Files correlati     : 
Commento            :

Aggiornati programmi personalizzati per poterli compilare.
Manca ps0883

git-svn-id: svn://10.65.10.50/branches/R_10_00@23224 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
bonazzi 2016-09-08 20:06:48 +00:00
parent 05f6b4d1eb
commit d327a5c85f
66 changed files with 6256 additions and 6229 deletions

View File

@ -293,7 +293,7 @@ bool TOmasa::transfer()
TRecord_text curr;
while (_trasfile->read(curr) == NOERR)
{
pi.setstatus(_trasfile->read_file()->tellg());
pi.setstatus((long)_trasfile->read_file()->tellg());
TString impstr = curr.get(F_VALOREVOCE);
impstr.insert(".",11);
negativo(impstr);

View File

@ -101,9 +101,11 @@ void TPartite2Euroasis::main_loop()
const TDate oggi(TODAY);
TString16 ora;
time_t tempo;
time(&tempo);
const struct tm* d = localtime(&tempo);
ora.format("%02d:%02d:%02d", d->tm_hour, d->tm_min, d->tm_sec);
struct tm d;
time(&tempo);
localtime_s(&d, &tempo);
ora.format("%02d:%02d:%02d", d.tm_hour, d.tm_min, d.tm_sec);
const TDate dataanalisi = m.get_date(F_DATA);
const int giorni = m.get_int(F_GIORNI);
const TDate dataesposto = dataanalisi - (long) giorni;

View File

@ -1,15 +1,15 @@
#include <xvt.h>
#include "pg0067.h"
int main( int argc, char** argv )
{
const int r = (argc > 1) ? argv[1][1]-'0' : -1;
switch (r)
{
case 0: pg0067100(argc, argv); break; // distributore di F24 bancari
default: break;
}
return 0;
#include <xvt.h>
#include "pg0067.h"
int main( int argc, char** argv )
{
const int r = (argc > 1) ? argv[1][1]-'0' : -1;
switch (r)
{
case 0: pg0067100(argc, argv); break; // distributore di F24 bancari
default: break;
}
return 0;
}

View File

@ -1 +1 @@
int pg0067100(int, char**);
int pg0067100(int, char**);

View File

@ -1,291 +1,305 @@
#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <golem.h>
#include <modaut.h>
#include <progind.h>
#include <reputils.h>
#include <textset.h>
#include <utility.h>
#include "pg0067100a.h"
///////////////////////////////////////////////
// MASCHERA
///////////////////////////////////////////////
class TDistribuzione_f24_mask : public TAutomask
{
protected:
TRecordset* create_recordset() const;
void print_stats(const bool stampa) const;
void export_stats() const;
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TDistribuzione_f24_mask();
};
TDistribuzione_f24_mask::TDistribuzione_f24_mask() : TAutomask("pg0067100a")
{
}
bool TDistribuzione_f24_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch(o.dlg())
{
case DLG_PRINT: //stampa
if (e == fe_button)
{
print_stats(true);
}
break;
case DLG_PREVIEW: //stampa
if (e == fe_button)
{
print_stats(false);
}
break;
case DLG_EXPORT: //esporta in excel
if (e == fe_button)
{
export_stats();
}
break;
default:
break;
}
return true;
}
//metodo comune di generazione del recordset
//recordset che deve ordinare, per piva e anno, i files pdf che trova nelle sottocartelle della..
//..cartella radice di destinazione
TRecordset* TDistribuzione_f24_mask::create_recordset() const
{
TAS400_recordset* recset = new TAS400_recordset("AS400(58)");
recset->create_field("CODICE_FISCALE", 0, 16, _alfafld, true);
for (int j = 2006; j < 2016; j++)
{
TString8 anno;
anno << "F24_" << j;
recset->create_field(anno, -1, 4, _intfld, true);
}
recset->create_field("CR", -1, 2, _alfafld, true, TVariant("\n\r"));
//cartella radice di destinazione
const TString& dest_dir = get(F_PATH_DST);
TFilename dest_pivas = dest_dir; dest_pivas.add("*");
SLIST pivas = xvt_fsys_list_files(DIR_TYPE, dest_pivas, true);
for (SLIST_ELT e = xvt_slist_get_first(pivas); e; e = xvt_slist_get_next(pivas, e))
{
TFilename dest_years = xvt_slist_get(pivas, e, NULL);
const TString& piva = dest_years.name_only();
if (piva.len() < 11 || piva.len() > 16)
continue;
recset->new_rec("");
recset->set("CODICE_FISCALE", piva);
dest_years.add("20??");
SLIST years = xvt_fsys_list_files(DIR_TYPE, dest_years, true);
for (SLIST_ELT e = xvt_slist_get_first(years); e; e = xvt_slist_get_next(years, e))
{
TFilename dest_year = xvt_slist_get(years, e, NULL);
const TString4 year = dest_year.name_only();
dest_year.add("*.pdf");
SLIST files = xvt_fsys_list_files("", dest_year, false);
const long count = xvt_slist_count(files);
xvt_slist_destroy(files);
//aggiunge la riga al recordset
TString8 fld; fld << "F24_" << year;
recset->set(fld, count);
}
xvt_slist_destroy(years);
}
xvt_slist_destroy(pivas);
//ordina il recordset per cofi/piva
recset->sort();
return recset;
}
void TDistribuzione_f24_mask::print_stats(const bool stampa) const
{
TRecordset* recset = create_recordset();
TReport rep;
rep.load("pg0067100");
rep.set_recordset(recset);
if (stampa)
rep.print();
else
rep.preview();
}
void TDistribuzione_f24_mask::export_stats() const
{
TRecordset* recset = create_recordset();
TFilename temp;
temp.temp("", "xls");
if (recset->save_as(temp, fmt_html))
goto_url(temp);
delete recset;
}
//////////////////////////////////////////////
// APPLICAZIONE
/////////////////////////////////////////////
//Ridistributore di F24 per il computer
class TDistribuzione_f24 : public TSkeleton_application
{
TDistribuzione_f24_mask* _mask;
virtual bool check_autorization() const {return false;}
protected:
virtual const char * extra_modules() const {return "rs";}
virtual bool create();
void elabora();
public:
virtual void main_loop();
};
void TDistribuzione_f24::elabora()
{
TFilename src_files = _mask->get(F_PATH_SRC);
src_files.add("*.pdf");
TString_array src_files_list;
//dalla cartella origine prende tutti i files .pdf e crea una simpatica lista
const int n_files_pdf = list_files(src_files, src_files_list);
const TString& dst_root_path = _mask->get(F_PATH_DST);
const bool delete_src_files = _mask->get_bool(F_ERASE_TRANSFERRED);
//scansione dello string_array per il trasferimento (con tanto di progind e log)
TProgind pi(n_files_pdf, TR("Trasferimento F24 in corso..."), true, true);
TLog_report log("ERRORI DI TRASFERIMENTO");
TToken_string curr_tok_file(_MAX_PATH, '_');
for (int i = 0; i < n_files_pdf; i++)
{
if (!pi.addstatus(1))
break;
//file in formato filename e token_string (per prendere i pezzi)
const TFilename curr_fname = src_files_list.row(i);
curr_tok_file = curr_fname.name_only();
//anno e relativo controllo
const int anno = curr_tok_file.get_int(0);
if (anno < 2000)
{
TString msg;
msg.format("File %s ha ANNO errato", (const char*)curr_tok_file);
log.log(1, msg);
continue;
}
//piva e relativo controllo
const TString16 piva = curr_tok_file.get(1);
if (piva.len() < 11)
{
TString msg;
msg.format("File %s ha P.IVA o C.F. errato", (const char*)curr_tok_file);
log.log(1, msg);
continue;
}
//controllo della cartella di destinazione
TFilename dst_file = dst_root_path;
dst_file.add(piva);
TString4 str_anno;
str_anno << anno;
dst_file.add(str_anno);
const bool crea_dir = make_dir(dst_file);
//non riesce a crearla! deve dare errore di grave livello!
if (!crea_dir)
{
TString msg;
msg.format("Impossibile creare la cartella %s !", dst_file);
log.log(2, msg);
continue;
}
//se invece crea/trova la cartella -> copia il file
dst_file.add(curr_fname.name());
const bool copia_riuscita = fcopy(curr_fname, dst_file);
if (!copia_riuscita)
{
TString msg;
msg.format("Impossibile copiare il file %s !", curr_fname.name());
log.log(2, msg);
continue;
}
//controllo dell'avvenuta copia e della correttezza del file destinazione
//controllo sulle dimensioni
const long src_size = fsize(curr_fname);
const long dst_size = fsize(dst_file);
if (src_size != dst_size)
{
TString msg;
msg.format("Copia del file %s non completata !", curr_fname.name());
log.log(2, msg);
continue;
}
//eliminazione del file sorgente
if (delete_src_files)
{
const bool src_file_removed = remove_file(curr_fname);
if (!src_file_removed)
{
TString msg;
msg.format("Impossibile eliminare il file origine %s ", curr_fname.name());
log.log(1, msg);
continue;
}
}
} //for(int i...
message_box(TR("Elaborazione completata"));
const int items = log.recordset()->items();
if (items > 0)
log.preview();
}
bool TDistribuzione_f24::create()
{
//se non ha il modulo RS non può proseguire
if (!has_module(RSAUT))
return error_box(TR("Modulo non autorizzato"));
return TSkeleton_application::create();
}
void TDistribuzione_f24::main_loop()
{
_mask = new TDistribuzione_f24_mask;
if (_mask->run() != K_QUIT)
elabora();
delete _mask;
_mask = NULL;
}
int pg0067100 (int argc, char **argv)
{
TDistribuzione_f24 a;
a.run(argc,argv, TR("Archiviazione F24"));
return true;
}
#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <golem.h>
#include <modaut.h>
#include <progind.h>
#include <reputils.h>
#include <textset.h>
#include <utility.h>
#include "pg0067100a.h"
///////////////////////////////////////////////
// MASCHERA
///////////////////////////////////////////////
class TDistribuzione_f24_mask : public TAutomask
{
protected:
TRecordset* create_recordset() const;
void print_stats(const bool stampa) const;
void export_stats() const;
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TDistribuzione_f24_mask();
};
TDistribuzione_f24_mask::TDistribuzione_f24_mask() : TAutomask("pg0067100a")
{
}
bool TDistribuzione_f24_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch(o.dlg())
{
case DLG_PRINT: //stampa
if (e == fe_button)
{
print_stats(true);
}
break;
case DLG_PREVIEW: //stampa
if (e == fe_button)
{
print_stats(false);
}
break;
case DLG_EXPORT: //esporta in excel
if (e == fe_button)
{
export_stats();
}
break;
default:
break;
}
return true;
}
//metodo comune di generazione del recordset
//recordset che deve ordinare, per piva e anno, i files pdf che trova nelle sottocartelle della..
//..cartella radice di destinazione
TRecordset* TDistribuzione_f24_mask::create_recordset() const
{
TAS400_recordset* recset = new TAS400_recordset("AS400(58)");
recset->create_field("CODICE_FISCALE", 0, 16, _alfafld, true);
for (int j = 2006; j < 2016; j++)
{
TString8 anno;
anno << "F24_" << j;
recset->create_field(anno, -1, 4, _intfld, true);
}
recset->create_field("CR", -1, 2, _alfafld, true, TVariant("\n\r"));
//cartella radice di destinazione
const TString& dest_dir = get(F_PATH_DST);
TFilename dest_pivas = dest_dir; dest_pivas.add("*");
SLIST pivas = xvt_fsys_list_files(DIR_TYPE, dest_pivas, true);
for (SLIST_ELT e = xvt_slist_get_first(pivas); e; e = xvt_slist_get_next(pivas, e))
{
TFilename dest_years = xvt_slist_get(pivas, e, NULL);
const TString& piva = dest_years.name_only();
if (piva.len() < 11 || piva.len() > 16)
continue;
recset->new_rec("");
recset->set("CODICE_FISCALE", piva);
dest_years.add("20??");
SLIST years = xvt_fsys_list_files(DIR_TYPE, dest_years, true);
for (SLIST_ELT e = xvt_slist_get_first(years); e; e = xvt_slist_get_next(years, e))
{
TFilename dest_year = xvt_slist_get(years, e, NULL);
const TString4 year = dest_year.name_only();
dest_year.add("*.pdf");
SLIST files = xvt_fsys_list_files("", dest_year, false);
const long count = xvt_slist_count(files);
xvt_slist_destroy(files);
//aggiunge la riga al recordset
TString8 fld; fld << "F24_" << year;
recset->set(fld, count);
}
xvt_slist_destroy(years);
}
xvt_slist_destroy(pivas);
//ordina il recordset per cofi/piva
recset->sort();
return recset;
}
void TDistribuzione_f24_mask::print_stats(const bool stampa) const
{
TRecordset* recset = create_recordset();
TReport rep;
rep.load("pg0067100");
rep.set_recordset(recset);
if (stampa)
rep.print();
else
rep.preview();
}
void TDistribuzione_f24_mask::export_stats() const
{
TRecordset* recset = create_recordset();
TFilename temp;
temp.temp("", "xls");
if (recset->save_as(temp, fmt_html))
goto_url(temp);
delete recset;
}
//////////////////////////////////////////////
// APPLICAZIONE
/////////////////////////////////////////////
//Ridistributore di F24 per il computer
class TDistribuzione_f24 : public TSkeleton_application
{
TDistribuzione_f24_mask* _mask;
virtual bool check_autorization() const {return false;}
protected:
virtual const char * extra_modules() const {return "rs";}
virtual bool create();
void elabora();
public:
virtual void main_loop();
};
void TDistribuzione_f24::elabora()
{
TFilename src_files = _mask->get(F_PATH_SRC);
TString regexp = _mask->get(F_ELIMINA_EXPR);
if (regexp.starts_with("$"))
regexp = regexp.mid(1);
else
if (!regexp.starts_with("*"))
regexp.insert("*");
if (regexp.ends_with("^"))
regexp.rtrim(1);
else
regexp << "*";
src_files.add("*.pdf");
TString_array src_files_list;
//dalla cartella origine prende tutti i files .pdf e crea una simpatica lista
const int n_files_pdf = list_files(src_files, src_files_list);
const TString& dst_root_path = _mask->get(F_PATH_DST);
const bool delete_src_files = _mask->get_bool(F_ERASE_TRANSFERRED);
//scansione dello string_array per il trasferimento (con tanto di progind e log)
TProgind pi(n_files_pdf, TR("Trasferimento F24 in corso..."), true, true);
TLog_report log("ERRORI DI TRASFERIMENTO");
TToken_string curr_tok_file(_MAX_PATH, '_');
for (int i = 0; i < n_files_pdf; i++)
{
if (!pi.addstatus(1))
break;
//file in formato filename e token_string (per prendere i pezzi)
const TFilename curr_fname = src_files_list.row(i);
curr_tok_file = curr_fname.name_only();
//anno e relativo controllo
const int anno = curr_tok_file.get_int(0);
if (anno < 2000)
{
TString msg;
msg.format("File %s ha ANNO errato", (const char*)curr_tok_file);
log.log(1, msg);
continue;
}
//piva e relativo controllo
const TString16 piva = curr_tok_file.get(1);
if (piva.len() < 11)
{
TString msg;
msg.format("File %s ha P.IVA o C.F. errato", (const char*)curr_tok_file);
log.log(1, msg);
continue;
}
//controllo della cartella di destinazione
TFilename dst_file = dst_root_path;
dst_file.add(piva);
TString4 str_anno;
str_anno << anno;
dst_file.add(str_anno);
const bool crea_dir = make_dir(dst_file);
//non riesce a crearla! deve dare errore di grave livello!
if (!crea_dir)
{
TString msg;
msg.format("Impossibile creare la cartella %s !", dst_file);
log.log(2, msg);
continue;
}
//se invece crea/trova la cartella -> copia il file
if (!curr_fname.match(regexp))
{
dst_file.add(curr_fname.name());
const bool copia_riuscita = fcopy(curr_fname, dst_file);
if (!copia_riuscita)
{
TString msg;
msg.format("Impossibile copiare il file %s !", curr_fname.name());
log.log(2, msg);
continue;
}
//controllo dell'avvenuta copia e della correttezza del file destinazione
//controllo sulle dimensioni
const long src_size = fsize(curr_fname);
const long dst_size = fsize(dst_file);
if (src_size != dst_size)
{
TString msg;
msg.format("Copia del file %s non completata !", curr_fname.name());
log.log(2, msg);
continue;
}
}
//eliminazione del file sorgente
if (delete_src_files)
{
const bool src_file_removed = remove_file(curr_fname);
if (!src_file_removed)
{
TString msg;
msg.format("Impossibile eliminare il file origine %s ", curr_fname.name());
log.log(1, msg);
continue;
}
}
} //for(int i...
message_box(TR("Elaborazione completata"));
const int items = log.recordset()->items();
if (items > 0)
log.preview();
}
bool TDistribuzione_f24::create()
{
//se non ha il modulo RS non può proseguire
if (!has_module(RSAUT))
return error_box(TR("Modulo non autorizzato"));
return TSkeleton_application::create();
}
void TDistribuzione_f24::main_loop()
{
_mask = new TDistribuzione_f24_mask;
if (_mask->run() != K_QUIT)
elabora();
delete _mask;
_mask = NULL;
}
int pg0067100 (int argc, char **argv)
{
TDistribuzione_f24 a;
a.run(argc,argv, TR("Archiviazione F24"));
return true;
}

View File

@ -1,124 +1,124 @@
<?xml version="1.0" encoding="UTF-8" ?>
<report name="pg0067100" lpi="6">
<description>Statistiche archiviazione F24</description>
<font face="Arial" size="8" />
<section type="Head">
<font face="Arial" bold="1" size="8" />
<field x="73.5" type="Testo" align="center" width="6" pattern="1" text="Totale" />
<field x="2" y="0.5" type="Testo" width="10" pattern="1" text="C.F.&#2F;p.IVA" />
<field x="20" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2006" />
<field x="25" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2007" />
<field x="30" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2008" />
<field x="35" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2009" />
<field x="40" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2010" />
<field x="45" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2011" />
<field x="50" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2012" />
<field x="55" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2013" />
<field x="60" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2014" />
<field x="65" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2015" />
<field x="70.5" y="0.75" type="Testo" align="center" width="12" pattern="1" text="CF&#2F;pIVA" />
<field border="1" x="1" y="1.5" type="Linea" width="80" height="0" pattern="1" />
</section>
<section type="Head" level="1" height="4.5">
<prescript description="H1 PRESCRIPT">MESSAGE RESET,F1</prescript>
<field border="1" radius="50" x="10" y="0.5" type="Testo" valign="center" align="center" shade_offset="50" width="60" height="3" text="STATISTICHE ARCHIVIAZIONE F24">
<font face="Arial" bold="1" size="14" />
</field>
</section>
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" width="16" pattern="1">
<source>CODICE_FISCALE</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE RESET,B1.200</prescript>
</field>
<field x="19.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2006</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.101</prescript>
</field>
<field x="24.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2007</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.102</prescript>
</field>
<field x="29.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2008</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.103</prescript>
</field>
<field x="34.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2009</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.104</prescript>
</field>
<field x="39.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2010</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.105</prescript>
</field>
<field x="44.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2011</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.106</prescript>
</field>
<field x="49.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2012</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.107</prescript>
</field>
<field x="54.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2013</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.108</prescript>
</field>
<field x="59.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2014</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.109</prescript>
</field>
<field x="64.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2015</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.110</prescript>
</field>
<field x="74" type="Numero" align="right" width="5" id="200" pattern="1">
<prescript description="B1.200 PRESCRIPT">MESSAGE ADD,F1.200</prescript>
</field>
</section>
<section type="Foot">
<field border="1" x="1" y="0.5" type="Linea" width="80" height="0" pattern="1" />
<field x="71" y="0.75" type="Testo" width="5" pattern="1" text="Pag." />
<field x="76" y="0.75" type="Numero" align="right" width="3" pattern="1">
<source>#REPORT.PAGE</source>
</field>
</section>
<section type="Foot" level="1">
<font italic="1" face="Arial" bold="1" size="8" />
<field border="1" x="1" y="0.25" type="Linea" width="80" height="0" pattern="1" />
<field x="1" y="0.75" type="Testo" width="15" pattern="1" text="Totali per anno" />
<field border="1" x="1" y="2.5" type="Linea" width="80" height="0" pattern="1" />
<field x="72.5" y="2.75" type="Testo" align="center" width="8" pattern="1" text="Totale" />
<field x="20" y="3" type="Testo" align="center" width="4" pattern="1" text="2006" />
<field x="25" y="3" type="Testo" align="center" width="4" pattern="1" text="2007" />
<field x="30" y="3" type="Testo" align="center" width="4" pattern="1" text="2008" />
<field x="35" y="3" type="Testo" align="center" width="4" pattern="1" text="2009" />
<field x="40" y="3" type="Testo" align="center" width="4" pattern="1" text="2010" />
<field x="45" y="3" type="Testo" align="center" width="4" pattern="1" text="2011" />
<field x="50" y="3" type="Testo" align="center" width="4" pattern="1" text="2012" />
<field x="55" y="3" type="Testo" align="center" width="4" pattern="1" text="2013" />
<field x="60" y="3" type="Testo" align="center" width="4" pattern="1" text="2014" />
<field x="65" y="3" type="Testo" align="center" width="4" pattern="1" text="2015" />
<field x="71.5" y="3.5" type="Testo" align="center" width="10" pattern="1" text="archiviati" />
<field x="18.5" y="0.75" type="Numero" align="right" width="5" id="101" pattern="1" />
<field x="23.5" y="0.75" type="Numero" align="right" width="5" id="102" pattern="1" />
<field x="28.5" y="0.75" type="Numero" align="right" width="5" id="103" pattern="1" />
<field x="33.5" y="0.75" type="Numero" align="right" width="5" id="104" pattern="1" />
<field x="38.5" y="0.75" type="Numero" align="right" width="5" id="105" pattern="1" />
<field x="43.5" y="0.75" type="Numero" align="right" width="5" id="106" pattern="1" />
<field x="48.5" y="0.75" type="Numero" align="right" width="5" id="107" pattern="1" />
<field x="53.5" y="0.75" type="Numero" align="right" width="5" id="108" pattern="1" />
<field x="58.5" y="0.75" type="Numero" align="right" width="5" id="109" pattern="1" />
<field x="63.5" y="0.75" type="Numero" align="right" width="5" id="110" pattern="1" />
<field x="73" y="0.75" type="Numero" align="right" width="6" id="200" pattern="1" />
</section>
<?xml version="1.0" encoding="UTF-8" ?>
<report name="pg0067100" lpi="6">
<description>Statistiche archiviazione F24</description>
<font face="Arial" size="8" />
<section type="Head">
<font face="Arial" bold="1" size="8" />
<field x="73.5" type="Testo" align="center" width="6" pattern="1" text="Totale" />
<field x="2" y="0.5" type="Testo" width="10" pattern="1" text="C.F.&#2F;p.IVA" />
<field x="20" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2006" />
<field x="25" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2007" />
<field x="30" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2008" />
<field x="35" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2009" />
<field x="40" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2010" />
<field x="45" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2011" />
<field x="50" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2012" />
<field x="55" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2013" />
<field x="60" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2014" />
<field x="65" y="0.5" type="Testo" align="center" width="4" pattern="1" text="2015" />
<field x="70.5" y="0.75" type="Testo" align="center" width="12" pattern="1" text="CF&#2F;pIVA" />
<field border="1" x="1" y="1.5" type="Linea" width="80" height="0" pattern="1" />
</section>
<section type="Head" level="1" height="4.5">
<prescript description="H1 PRESCRIPT">MESSAGE RESET,F1</prescript>
<field border="1" radius="50" x="10" y="0.5" type="Testo" valign="center" align="center" shade_offset="50" width="60" height="3" text="STATISTICHE ARCHIVIAZIONE F24">
<font face="Arial" bold="1" size="14" />
</field>
</section>
<section type="Body" />
<section type="Body" level="1">
<field x="2" type="Stringa" width="16" pattern="1">
<source>CODICE_FISCALE</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE RESET,B1.200</prescript>
</field>
<field x="19.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2006</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.101</prescript>
</field>
<field x="24.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2007</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.102</prescript>
</field>
<field x="29.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2008</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.103</prescript>
</field>
<field x="34.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2009</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.104</prescript>
</field>
<field x="39.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2010</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.105</prescript>
</field>
<field x="44.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2011</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.106</prescript>
</field>
<field x="49.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2012</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.107</prescript>
</field>
<field x="54.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2013</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.108</prescript>
</field>
<field x="59.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2014</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.109</prescript>
</field>
<field x="64.5" type="Numero" align="right" width="4" pattern="1" hide_zero="1">
<source>F24_2015</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,B1.200
MESSAGE ADD,F1.110</prescript>
</field>
<field x="74" type="Numero" align="right" width="5" id="200" pattern="1">
<prescript description="B1.200 PRESCRIPT">MESSAGE ADD,F1.200</prescript>
</field>
</section>
<section type="Foot">
<field border="1" x="1" y="0.5" type="Linea" width="80" height="0" pattern="1" />
<field x="71" y="0.75" type="Testo" width="5" pattern="1" text="Pag." />
<field x="76" y="0.75" type="Numero" align="right" width="3" pattern="1">
<source>#REPORT.PAGE</source>
</field>
</section>
<section type="Foot" level="1">
<font italic="1" face="Arial" bold="1" size="8" />
<field border="1" x="1" y="0.25" type="Linea" width="80" height="0" pattern="1" />
<field x="1" y="0.75" type="Testo" width="15" pattern="1" text="Totali per anno" />
<field border="1" x="1" y="2.5" type="Linea" width="80" height="0" pattern="1" />
<field x="72.5" y="2.75" type="Testo" align="center" width="8" pattern="1" text="Totale" />
<field x="20" y="3" type="Testo" align="center" width="4" pattern="1" text="2006" />
<field x="25" y="3" type="Testo" align="center" width="4" pattern="1" text="2007" />
<field x="30" y="3" type="Testo" align="center" width="4" pattern="1" text="2008" />
<field x="35" y="3" type="Testo" align="center" width="4" pattern="1" text="2009" />
<field x="40" y="3" type="Testo" align="center" width="4" pattern="1" text="2010" />
<field x="45" y="3" type="Testo" align="center" width="4" pattern="1" text="2011" />
<field x="50" y="3" type="Testo" align="center" width="4" pattern="1" text="2012" />
<field x="55" y="3" type="Testo" align="center" width="4" pattern="1" text="2013" />
<field x="60" y="3" type="Testo" align="center" width="4" pattern="1" text="2014" />
<field x="65" y="3" type="Testo" align="center" width="4" pattern="1" text="2015" />
<field x="71.5" y="3.5" type="Testo" align="center" width="10" pattern="1" text="archiviati" />
<field x="18.5" y="0.75" type="Numero" align="right" width="5" id="101" pattern="1" />
<field x="23.5" y="0.75" type="Numero" align="right" width="5" id="102" pattern="1" />
<field x="28.5" y="0.75" type="Numero" align="right" width="5" id="103" pattern="1" />
<field x="33.5" y="0.75" type="Numero" align="right" width="5" id="104" pattern="1" />
<field x="38.5" y="0.75" type="Numero" align="right" width="5" id="105" pattern="1" />
<field x="43.5" y="0.75" type="Numero" align="right" width="5" id="106" pattern="1" />
<field x="48.5" y="0.75" type="Numero" align="right" width="5" id="107" pattern="1" />
<field x="53.5" y="0.75" type="Numero" align="right" width="5" id="108" pattern="1" />
<field x="58.5" y="0.75" type="Numero" align="right" width="5" id="109" pattern="1" />
<field x="63.5" y="0.75" type="Numero" align="right" width="5" id="110" pattern="1" />
<field x="73" y="0.75" type="Numero" align="right" width="6" id="200" pattern="1" />
</section>
</report>

View File

@ -1,3 +1,4 @@
#define F_PATH_SRC 101
#define F_PATH_DST 102
#define F_ERASE_TRANSFERRED 103
#define F_PATH_SRC 101
#define F_PATH_DST 102
#define F_ERASE_TRANSFERRED 103
#define F_ELIMINA_EXPR 104

View File

@ -1,71 +1,76 @@
#include "pg0067100a.h"
PAGE "Trasferimento F24" -1 -1 78 6
STRING F_PATH_SRC 255 45
BEGIN
PROMPT 1 1 "Cartella di origine "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella origine valida!"
END
STRING F_PATH_DST 255 45
BEGIN
PROMPT 1 2 "Cartella di destinazione "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella destinazione valida!"
END
BOOLEAN F_ERASE_TRANSFERRED
BEGIN
PROMPT 1 4 "Eliminare i file di origine dopo la copia"
END
STRING DLG_PROFILE 50
BEGIN
PROMPT 1 -1 "Profilo "
PSELECT
END
ENDPAGE
TOOLBAR "" 0 0 0 2
BUTTON DLG_OK 2 2
BEGIN
PROMPT 1 1 "~Archivia"
PICTURE TOOL_ELABORA
END
BUTTON DLG_NULL 2 2
BEGIN
PROMPT 2 1 ""
END
BUTTON DLG_PRINT 2 2
BEGIN
PROMPT 3 1 "~Stampa"
PICTURE TOOL_PRINTELENCO
END
BUTTON DLG_PREVIEW 2 2
BEGIN
PROMPT 4 1 "A~nteprima"
PICTURE TOOL_PREVIEW
END
BUTTON DLG_EXPORT 2 2
BEGIN
PROMPT 5 1 "~Excel"
PICTURE TOOL_EXCEL
END
#include <helpbar.h>
ENDPAGE
ENDMASK
#include "pg0067100a.h"
PAGE "Trasferimento F24" -1 -1 78 6
STRING F_PATH_SRC 255 45
BEGIN
PROMPT 1 1 "Cartella di origine "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella origine valida!"
END
STRING F_PATH_DST 255 45
BEGIN
PROMPT 1 2 "Cartella di destinazione "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella destinazione valida!"
END
STRING F_ELIMINA_EXPR 80 45
BEGIN
PROMPT 1 3 "Elimina i seguenti file "
END
BOOLEAN F_ERASE_TRANSFERRED
BEGIN
PROMPT 1 4 "Eliminare i file di origine dopo la copia"
END
STRING DLG_PROFILE 50
BEGIN
PROMPT 1 -1 "Profilo "
PSELECT
END
ENDPAGE
TOOLBAR "" 0 0 0 2
BUTTON DLG_OK 2 2
BEGIN
PROMPT 1 1 "~Archivia"
PICTURE TOOL_ELABORA
END
BUTTON DLG_NULL 2 2
BEGIN
PROMPT 2 1 ""
END
BUTTON DLG_PRINT 2 2
BEGIN
PROMPT 3 1 "~Stampa"
PICTURE TOOL_PRINTELENCO
END
BUTTON DLG_PREVIEW 2 2
BEGIN
PROMPT 4 1 "A~nteprima"
PICTURE TOOL_PREVIEW
END
BUTTON DLG_EXPORT 2 2
BEGIN
PROMPT 5 1 "~Excel"
PICTURE TOOL_EXCEL
END
#include <helpbar.h>
ENDPAGE
ENDMASK

View File

@ -1,15 +1,15 @@
#include <xvt.h>
#include "pg0068.h"
int main( int argc, char** argv )
{
const int r = (argc > 1) ? argv[1][1]-'0' : -1;
switch (r)
{
case 0: pg0068100(argc, argv); break; // contabilizzazione Hair Kulture
default: break;
}
return 0;
#include <xvt.h>
#include "pg0068.h"
int main( int argc, char** argv )
{
const int r = (argc > 1) ? argv[1][1]-'0' : -1;
switch (r)
{
case 0: pg0068100(argc, argv); break; // contabilizzazione Hair Kulture
default: break;
}
return 0;
}

View File

@ -1 +1 @@
int pg0068100(int, char**);
int pg0068100(int, char**);

File diff suppressed because it is too large Load Diff

View File

@ -1,19 +1,19 @@
// Include file per pg0068100a.uml
#define F_ELAB_COSTI 101
#define F_ELAB_COSTI_DESCR 102
#define F_ELAB_PROVV 103
#define F_ELAB_PROVV_DESCR 104
#define F_DATA_INI 105
#define F_DATA_FIN 106
#define F_DATA_AUTO 107
#define F_DATA_REG 108
#define F_CAUS_COSTI 109
#define F_CAUS_COSTI_DESCR 110
#define F_CAUS_PROVV 111
#define F_CAUS_PROVV_DESCR 112
#define F_AUTO_DATA_REG 113
#define F_GRUPPO 114
#define F_CONTO 115
#define F_SOTTOCONTO 116
#define F_DESC 117
// Include file per pg0068100a.uml
#define F_ELAB_COSTI 101
#define F_ELAB_COSTI_DESCR 102
#define F_ELAB_PROVV 103
#define F_ELAB_PROVV_DESCR 104
#define F_DATA_INI 105
#define F_DATA_FIN 106
#define F_DATA_AUTO 107
#define F_DATA_REG 108
#define F_CAUS_COSTI 109
#define F_CAUS_COSTI_DESCR 110
#define F_CAUS_PROVV 111
#define F_CAUS_PROVV_DESCR 112
#define F_AUTO_DATA_REG 113
#define F_GRUPPO 114
#define F_CONTO 115
#define F_SOTTOCONTO 116
#define F_DESC 117

View File

@ -1,249 +1,249 @@
#include "pg0068100a.h"
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_USER 10 2
BEGIN
PROMPT -12 -1 "~Selezione"
PICTURE TOOL_MULTISEL
END
#include <elabar.h>
ENDPAGE
PAGE "Contabilizzazione HAIR KULTURE" 0 2 0 0
GROUPBOX DLG_NULL 77 4
BEGIN
PROMPT 1 0 "@bElaborazioni"
END
STRING F_ELAB_COSTI 8
BEGIN
PROMPT 2 1 "Costi "
FLAG "U"
USE %ELD SELECT I0 == 7
INPUT CODTAB F_ELAB_COSTI
DISPLAY "Codice@8" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_ELAB_COSTI CODTAB
OUTPUT F_ELAB_COSTI_DESCR S0
CHECKTYPE REQUIRED
WARNING "E' necessario specificare il codice elaborazione"
END
STRING F_ELAB_COSTI_DESCR 50
BEGIN
PROMPT 25 1 ""
USE %ELD KEY 2 SELECT I0 == 7
INPUT S0 F_ELAB_COSTI_DESCR
DISPLAY "Descrizione@50" S0
DISPLAY "Codice@8" CODTAB
COPY OUTPUT F_ELAB_COSTI
END
STRING F_ELAB_PROVV 8
BEGIN
PROMPT 2 2 "Provvigioni "
FLAG "U"
USE %ELD SELECT I0 == 7
INPUT CODTAB F_ELAB_PROVV
DISPLAY "Codice@8" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_ELAB_PROVV CODTAB
OUTPUT F_ELAB_PROVV_DESCR S0
CHECKTYPE REQUIRED
WARNING "E' necessario specificare il codice elaborazione"
END
STRING F_ELAB_PROVV_DESCR 50
BEGIN
PROMPT 25 2 ""
USE %ELD KEY 2 SELECT I0 == 7
INPUT S0 F_ELAB_PROVV_DESCR
DISPLAY "Descrizione@50" S0
DISPLAY "Codice@8" CODTAB
COPY OUTPUT F_ELAB_PROVV
END
GROUPBOX DLG_NULL 77 3
BEGIN
PROMPT 1 4 "@bDate intervallo documenti"
END
DATE F_DATA_INI
BEGIN
PROMPT 2 5 "Inizio "
CHECKTYPE REQUIRED
WARNING "La data di inizio intervallo e' obbligatoria"
END
DATE F_DATA_FIN
BEGIN
PROMPT 25 5 "Fine "
CHECKTYPE REQUIRED
WARNING "La data di fine intervallo deve essere successiva a quella di inizio"
VALIDATE DATE_CMP_FUNC >= F_DATA_INI
END
GROUPBOX DLG_NULL 77 8
BEGIN
PROMPT 1 7 "@bParametri movimenti generati"
END
TEXT -1
BEGIN
PROMPT 2 8 "@bCausali"
END
STRING F_CAUS_COSTI 3
BEGIN
PROMPT 3 9 "Costi "
FLAGS "UZ"
USE LF_CAUSALI
INPUT CODCAUS F_CAUS_COSTI
DISPLAY "Cod." CODCAUS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Documento" TIPODOC
DISPLAY "Tipo movimento" TIPOMOV
DISPLAY "Inc./Pag." CODCAUSIM
OUTPUT F_CAUS_COSTI CODCAUS
OUTPUT F_CAUS_COSTI_DESCR DESCR
CHECKTYPE REQUIRED
END
STRING F_CAUS_COSTI_DESCR 50
BEGIN
PROMPT 22 9 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_CAUS_COSTI_DESCR
DISPLAY "Descrizione @50" DESCR
DISPLAY "Cod." CODCAUS
DISPLAY "Documento" TIPODOC
DISPLAY "Movimento" TIPOMOV
DISPLAY "Inc./Pag." CODCAUSIM
COPY OUTPUT F_CAUS_COSTI
CHECKTYPE REQUIRED
END
STRING F_CAUS_PROVV 3
BEGIN
PROMPT 3 10 "Provvigioni "
FLAGS "UZ"
USE LF_CAUSALI
INPUT CODCAUS F_CAUS_PROVV
DISPLAY "Cod." CODCAUS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Documento" TIPODOC
DISPLAY "Tipo movimento" TIPOMOV
DISPLAY "Inc./Pag." CODCAUSIM
OUTPUT F_CAUS_PROVV CODCAUS
OUTPUT F_CAUS_PROVV_DESCR DESCR
CHECKTYPE REQUIRED
END
STRING F_CAUS_PROVV_DESCR 50
BEGIN
PROMPT 22 10 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_CAUS_PROVV_DESCR
DISPLAY "Descrizione @50" DESCR
DISPLAY "Cod." CODCAUS
DISPLAY "Documento" TIPODOC
DISPLAY "Movimento" TIPOMOV
DISPLAY "Inc./Pag." CODCAUSIM
COPY OUTPUT F_CAUS_PROVV
CHECKTYPE REQUIRED
END
TEXT -1
BEGIN
PROMPT 2 11 "@bConto omaggi"
END
NUMBER F_GRUPPO 3
BEGIN
PROMPT 3 12 ""
FLAGS "R"
USE LF_PCON SELECT CONTO=""
INPUT GRUPPO F_GRUPPO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO GRUPPO
CHECKTYPE REQUIRED
END
NUMBER F_CONTO 3
BEGIN
PROMPT 9 12 ""
FLAGS "R"
USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO=""))
COPY INPUT F_GRUPPO
INPUT CONTO F_CONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO GRUPPO
OUTPUT F_CONTO CONTO
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 1 F_SOTTOCONTO
WARNING "Manca il conto"
END
NUMBER F_SOTTOCONTO 6
BEGIN
PROMPT 15 12 ""
USE LF_PCON SELECT (SOTTOCONTO!="")&&(ANALITICA="X")
COPY INPUT F_CONTO
INPUT SOTTOCONTO F_SOTTOCONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Sosp." SOSPESO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SOTTOCONTO SOTTOCONTO
OUTPUT F_GRUPPO GRUPPO
OUTPUT F_CONTO CONTO
OUTPUT F_DESC DESCR
CHECKTYPE NORMAL
END
STRING F_DESC 50
BEGIN
PROMPT 24 12 ""
USE LF_PCON KEY 2
INPUT DESCR F_DESC
DISPLAY "Descrizione@50" DESCR
DISPLAY "Sosp." SOSPESO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SOTTOCONTO
CHECKTYPE REQUIRED
HELP "Descrizione del gruppo o del conto o del sottoconto"
WARNING "Descrizione mancante"
END
/*BOOL F_AUTO_DATA_REG
BEGIN
PROMPT 2 11 "Usare data documento come data registrazione"
MESSAGE FALSE ENABLE,F_DATA_REG
MESSAGE TRUE CLEAR,F_DATA_REG
END
DATE F_DATA_REG
BEGIN
PROMPT 53 11 "Data reg. "
CHECKTYPE REQUIRED
END*/
STRING DLG_PROFILE 50
BEGIN
PROMPT 9 -2 "Profilo "
PSELECT
END
ENDPAGE
ENDMASK
#include "pg0068100a.h"
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_USER 10 2
BEGIN
PROMPT -12 -1 "~Selezione"
PICTURE TOOL_MULTISEL
END
#include <elabar.h>
ENDPAGE
PAGE "Contabilizzazione HAIR KULTURE" 0 2 0 0
GROUPBOX DLG_NULL 77 4
BEGIN
PROMPT 1 0 "@bElaborazioni"
END
STRING F_ELAB_COSTI 8
BEGIN
PROMPT 2 1 "Costi "
FLAG "U"
USE %ELD SELECT I0 == 7
INPUT CODTAB F_ELAB_COSTI
DISPLAY "Codice@8" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_ELAB_COSTI CODTAB
OUTPUT F_ELAB_COSTI_DESCR S0
CHECKTYPE REQUIRED
WARNING "E' necessario specificare il codice elaborazione"
END
STRING F_ELAB_COSTI_DESCR 50
BEGIN
PROMPT 25 1 ""
USE %ELD KEY 2 SELECT I0 == 7
INPUT S0 F_ELAB_COSTI_DESCR
DISPLAY "Descrizione@50" S0
DISPLAY "Codice@8" CODTAB
COPY OUTPUT F_ELAB_COSTI
END
STRING F_ELAB_PROVV 8
BEGIN
PROMPT 2 2 "Provvigioni "
FLAG "U"
USE %ELD SELECT I0 == 7
INPUT CODTAB F_ELAB_PROVV
DISPLAY "Codice@8" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_ELAB_PROVV CODTAB
OUTPUT F_ELAB_PROVV_DESCR S0
CHECKTYPE REQUIRED
WARNING "E' necessario specificare il codice elaborazione"
END
STRING F_ELAB_PROVV_DESCR 50
BEGIN
PROMPT 25 2 ""
USE %ELD KEY 2 SELECT I0 == 7
INPUT S0 F_ELAB_PROVV_DESCR
DISPLAY "Descrizione@50" S0
DISPLAY "Codice@8" CODTAB
COPY OUTPUT F_ELAB_PROVV
END
GROUPBOX DLG_NULL 77 3
BEGIN
PROMPT 1 4 "@bDate intervallo documenti"
END
DATE F_DATA_INI
BEGIN
PROMPT 2 5 "Inizio "
CHECKTYPE REQUIRED
WARNING "La data di inizio intervallo e' obbligatoria"
END
DATE F_DATA_FIN
BEGIN
PROMPT 25 5 "Fine "
CHECKTYPE REQUIRED
WARNING "La data di fine intervallo deve essere successiva a quella di inizio"
VALIDATE DATE_CMP_FUNC >= F_DATA_INI
END
GROUPBOX DLG_NULL 77 8
BEGIN
PROMPT 1 7 "@bParametri movimenti generati"
END
TEXT -1
BEGIN
PROMPT 2 8 "@bCausali"
END
STRING F_CAUS_COSTI 3
BEGIN
PROMPT 3 9 "Costi "
FLAGS "UZ"
USE LF_CAUSALI
INPUT CODCAUS F_CAUS_COSTI
DISPLAY "Cod." CODCAUS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Documento" TIPODOC
DISPLAY "Tipo movimento" TIPOMOV
DISPLAY "Inc./Pag." CODCAUSIM
OUTPUT F_CAUS_COSTI CODCAUS
OUTPUT F_CAUS_COSTI_DESCR DESCR
CHECKTYPE REQUIRED
END
STRING F_CAUS_COSTI_DESCR 50
BEGIN
PROMPT 22 9 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_CAUS_COSTI_DESCR
DISPLAY "Descrizione @50" DESCR
DISPLAY "Cod." CODCAUS
DISPLAY "Documento" TIPODOC
DISPLAY "Movimento" TIPOMOV
DISPLAY "Inc./Pag." CODCAUSIM
COPY OUTPUT F_CAUS_COSTI
CHECKTYPE REQUIRED
END
STRING F_CAUS_PROVV 3
BEGIN
PROMPT 3 10 "Provvigioni "
FLAGS "UZ"
USE LF_CAUSALI
INPUT CODCAUS F_CAUS_PROVV
DISPLAY "Cod." CODCAUS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Documento" TIPODOC
DISPLAY "Tipo movimento" TIPOMOV
DISPLAY "Inc./Pag." CODCAUSIM
OUTPUT F_CAUS_PROVV CODCAUS
OUTPUT F_CAUS_PROVV_DESCR DESCR
CHECKTYPE REQUIRED
END
STRING F_CAUS_PROVV_DESCR 50
BEGIN
PROMPT 22 10 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_CAUS_PROVV_DESCR
DISPLAY "Descrizione @50" DESCR
DISPLAY "Cod." CODCAUS
DISPLAY "Documento" TIPODOC
DISPLAY "Movimento" TIPOMOV
DISPLAY "Inc./Pag." CODCAUSIM
COPY OUTPUT F_CAUS_PROVV
CHECKTYPE REQUIRED
END
TEXT -1
BEGIN
PROMPT 2 11 "@bConto omaggi"
END
NUMBER F_GRUPPO 3
BEGIN
PROMPT 3 12 ""
FLAGS "R"
USE LF_PCON SELECT CONTO=""
INPUT GRUPPO F_GRUPPO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO GRUPPO
CHECKTYPE REQUIRED
END
NUMBER F_CONTO 3
BEGIN
PROMPT 9 12 ""
FLAGS "R"
USE LF_PCON SELECT ((CONTO!="")&&(SOTTOCONTO=""))
COPY INPUT F_GRUPPO
INPUT CONTO F_CONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO GRUPPO
OUTPUT F_CONTO CONTO
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 1 F_SOTTOCONTO
WARNING "Manca il conto"
END
NUMBER F_SOTTOCONTO 6
BEGIN
PROMPT 15 12 ""
USE LF_PCON SELECT (SOTTOCONTO!="")&&(ANALITICA="X")
COPY INPUT F_CONTO
INPUT SOTTOCONTO F_SOTTOCONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Sosp." SOSPESO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SOTTOCONTO SOTTOCONTO
OUTPUT F_GRUPPO GRUPPO
OUTPUT F_CONTO CONTO
OUTPUT F_DESC DESCR
CHECKTYPE NORMAL
END
STRING F_DESC 50
BEGIN
PROMPT 24 12 ""
USE LF_PCON KEY 2
INPUT DESCR F_DESC
DISPLAY "Descrizione@50" DESCR
DISPLAY "Sosp." SOSPESO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SOTTOCONTO
CHECKTYPE REQUIRED
HELP "Descrizione del gruppo o del conto o del sottoconto"
WARNING "Descrizione mancante"
END
/*BOOL F_AUTO_DATA_REG
BEGIN
PROMPT 2 11 "Usare data documento come data registrazione"
MESSAGE FALSE ENABLE,F_DATA_REG
MESSAGE TRUE CLEAR,F_DATA_REG
END
DATE F_DATA_REG
BEGIN
PROMPT 53 11 "Data reg. "
CHECKTYPE REQUIRED
END*/
STRING DLG_PROFILE 50
BEGIN
PROMPT 9 -2 "Profilo "
PSELECT
END
ENDPAGE
ENDMASK

View File

@ -1,16 +1,16 @@
#include <xvt.h>
#include "pg0069.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
default:
pg0069100(argc, argv); break; //importazione e contabilizzazione fatture Nautilus e Bonomo
}
exit(0);
return 0;
#include <xvt.h>
#include "pg0069.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
default:
pg0069100(argc, argv); break; //importazione e contabilizzazione fatture Nautilus e Bonomo
}
exit(0);
return 0;
}

View File

@ -1 +1 @@
int pg0069100(int argc, char* argv[]);
int pg0069100(int argc, char* argv[]);

File diff suppressed because it is too large Load Diff

View File

@ -1,39 +1,39 @@
// campi della maschera Nautilus
#define F_PATH 101
#define F_NAME 102
#define F_CODCAUS 103
#define F_DESCR 104
#define F_CODIVA_ES 105
#define F_DES_CODIVA_ES 116
#define F_CODIVA_SP 106
#define F_DES_CODIVA_SP 117
#define F_GRUPPO_SP 107
#define F_CONTO_SP 108
#define F_SOTTOCONTO_SP 109
#define F_DESCRIZIONE_SP 110
#define F_CODIVA_TR 111
#define F_DES_CODIVA_TR 118
#define F_GRUPPO_TR 112
#define F_CONTO_TR 113
#define F_SOTTOCONTO_TR 114
#define F_DESCRIZIONE_TR 115
// campi del tracciato record
#define F_CODAZIENDA 0
#define F_CODDIP 1
#define F_VOCE 2
#define F_TIPOVOCE 3
#define F_QUOTAVOCE 4
#define F_VALOREVOCE 5
#define F_IMPORTO 6
#define F_CONTODARE 7
#define F_CONTOAVERE 8
#define F_CENTROCOSTO 9
#define F_SEDELAVORO 10
#define F_SEDEINPS 11
#define F_QUALIFICA 12
#define F_POSINAIL 13
#define F_VARIABILE 14
#define F_CONTRATTO 15
// campi della maschera Nautilus
#define F_PATH 101
#define F_NAME 102
#define F_CODCAUS 103
#define F_DESCR 104
#define F_CODIVA_ES 105
#define F_DES_CODIVA_ES 116
#define F_CODIVA_SP 106
#define F_DES_CODIVA_SP 117
#define F_GRUPPO_SP 107
#define F_CONTO_SP 108
#define F_SOTTOCONTO_SP 109
#define F_DESCRIZIONE_SP 110
#define F_CODIVA_TR 111
#define F_DES_CODIVA_TR 118
#define F_GRUPPO_TR 112
#define F_CONTO_TR 113
#define F_SOTTOCONTO_TR 114
#define F_DESCRIZIONE_TR 115
// campi del tracciato record
#define F_CODAZIENDA 0
#define F_CODDIP 1
#define F_VOCE 2
#define F_TIPOVOCE 3
#define F_QUOTAVOCE 4
#define F_VALOREVOCE 5
#define F_IMPORTO 6
#define F_CONTODARE 7
#define F_CONTOAVERE 8
#define F_CENTROCOSTO 9
#define F_SEDELAVORO 10
#define F_SEDEINPS 11
#define F_QUALIFICA 12
#define F_POSINAIL 13
#define F_VARIABILE 14
#define F_CONTRATTO 15
#define F_FILLER 16

View File

@ -1,285 +1,285 @@
#include "pg0069100a.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Importazione documenti Nautilus" -1 -1 78 19
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 1 "@bParametri file da importare"
END
STRING F_PATH 255 64
BEGIN
PROMPT 2 2 "Percorso "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella valida!"
FIELD PATH
END
STRING F_NAME 64
BEGIN
PROMPT 2 3 "Nome "
FSELECT "*.txt"
CHECKTYPE REQUIRED
FIELD NAME
END
STRING F_CODCAUS 4
BEGIN
PROMPT 2 5 "Causale "
FLAGS "U"
USE LF_CAUSALI
INPUT CODCAUS F_CODCAUS
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@60" DESCR
OUTPUT F_CODCAUS CODCAUS
OUTPUT F_DESCR DESCR
CHECKTYPE REQUIRED
ADD RUN cg0 -4
FIELD CODCAUS
END
STRING F_DESCR 50
BEGIN
PROMPT 17 5 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_DESCR
DISPLAY "Descrizione@60" DESCR
DISPLAY "Codice" CODCAUS
COPY OUTPUT F_CODCAUS
CHECKTYPE SEARCH
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 7 "@bParametri IVA merce esente"
END
STRING F_CODIVA_ES 4
BEGIN
PROMPT 2 8 "Codice IVA "
USE %IVA KEY 1
FLAGS "U"
INPUT CODTAB F_CODIVA_ES
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODIVA_ES CODTAB
OUTPUT F_DES_CODIVA_ES S0
CHECKTYPE NORMAL
FIELD IVA_ESENTE
END
STRING F_DES_CODIVA_ES 50
BEGIN
PROMPT 20 8 ""
USE %IVA KEY 2
INPUT S0 F_DES_CODIVA_ES
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODIVA_ES
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 10 "@bParametri IVA spese"
END
STRING F_CODIVA_SP 4
BEGIN
PROMPT 2 11 "Codice IVA "
USE %IVA KEY 1
FLAGS "U"
INPUT CODTAB F_CODIVA_SP
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODIVA_SP CODTAB
OUTPUT F_DES_CODIVA_SP S0
CHECKTYPE NORMAL
FIELD IVA_SPESE
END
STRING F_DES_CODIVA_SP 50
BEGIN
PROMPT 20 11 ""
USE %IVA KEY 2
INPUT S0 F_DES_CODIVA_SP
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODIVA_SP
CHECKTYPE SEARCH
END
NUMBER F_GRUPPO_SP 3
BEGIN
PROMPT 2 12 "Gruppo "
USE LF_PCON KEY 1 SELECT (CONTO="")
INPUT GRUPPO F_GRUPPO_SP
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO_SP GRUPPO
CHECKTYPE NORMAL
FIELD GR_IS
END
NUMBER F_CONTO_SP 3
BEGIN
PROMPT 15 12 "Conto "
USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
INPUT GRUPPO F_GRUPPO_SP
INPUT CONTO F_CONTO_SP
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CONTO_SP CONTO
OUTPUT F_GRUPPO_SP GRUPPO
CHECKTYPE NORMAL
FIELD CO_IS
END
NUMBER F_SOTTOCONTO_SP 6
BEGIN
PROMPT 27 12 "Sottoc. "
USE LF_PCON
INPUT GRUPPO F_GRUPPO_SP
INPUT CONTO F_CONTO_SP
INPUT SOTTOCONTO F_SOTTOCONTO_SP
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SOTTOCONTO_SP SOTTOCONTO
OUTPUT F_GRUPPO_SP GRUPPO
OUTPUT F_CONTO_SP CONTO
OUTPUT F_DESCRIZIONE_SP DESCR
CHECKTYPE NORMAL
FIELD SC_IS
END
STRING F_DESCRIZIONE_SP 50
BEGIN
PROMPT 2 13 ""
USE LF_PCON KEY 2
INPUT DESCR F_DESCRIZIONE_SP
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
OUTPUT F_SOTTOCONTO_SP SOTTOCONTO
OUTPUT F_CONTO_SP CONTO
OUTPUT F_GRUPPO_SP GRUPPO
OUTPUT F_DESCRIZIONE_SP DESCR
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 15 "@bParametri IVA trasporto"
END
STRING F_CODIVA_TR 4
BEGIN
PROMPT 2 16 "Codice IVA "
USE %IVA KEY 1
FLAGS "U"
INPUT CODTAB F_CODIVA_TR
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODIVA_TR CODTAB
OUTPUT F_DES_CODIVA_TR S0
CHECKTYPE NORMAL
FIELD IVA_TRASP
END
STRING F_DES_CODIVA_TR 50
BEGIN
PROMPT 20 16 ""
USE %IVA KEY 2
INPUT S0 F_DES_CODIVA_TR
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODIVA_TR
CHECKTYPE SEARCH
END
NUMBER F_GRUPPO_TR 3
BEGIN
PROMPT 2 17 "Gruppo "
USE LF_PCON KEY 1 SELECT (CONTO="")
INPUT GRUPPO F_GRUPPO_TR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO_TR GRUPPO
CHECKTYPE NORMAL
FIELD GR_IT
END
NUMBER F_CONTO_TR 3
BEGIN
PROMPT 15 17 "Conto "
USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
INPUT GRUPPO F_GRUPPO_TR
INPUT CONTO F_CONTO_TR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CONTO_TR CONTO
OUTPUT F_GRUPPO_TR GRUPPO
CHECKTYPE NORMAL
FIELD CO_IT
END
NUMBER F_SOTTOCONTO_TR 6
BEGIN
PROMPT 27 17 "Sottoc. "
USE LF_PCON
INPUT GRUPPO F_GRUPPO_TR
INPUT CONTO F_CONTO_TR
INPUT SOTTOCONTO F_SOTTOCONTO_TR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SOTTOCONTO_TR SOTTOCONTO
OUTPUT F_GRUPPO_TR GRUPPO
OUTPUT F_CONTO_TR CONTO
OUTPUT F_DESCRIZIONE_TR DESCR
CHECKTYPE NORMAL
FIELD SC_IT
END
STRING F_DESCRIZIONE_TR 50
BEGIN
PROMPT 2 18 ""
USE LF_PCON KEY 2
INPUT DESCR F_DESCRIZIONE_TR
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
OUTPUT F_SOTTOCONTO_TR SOTTOCONTO
OUTPUT F_CONTO_TR CONTO
OUTPUT F_GRUPPO_TR GRUPPO
OUTPUT F_DESCRIZIONE_TR DESCR
CHECKTYPE NORMAL
END
ENDPAGE
ENDMASK
#include "pg0069100a.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Importazione documenti Nautilus" -1 -1 78 19
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 1 "@bParametri file da importare"
END
STRING F_PATH 255 64
BEGIN
PROMPT 2 2 "Percorso "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella valida!"
FIELD PATH
END
STRING F_NAME 64
BEGIN
PROMPT 2 3 "Nome "
FSELECT "*.txt"
CHECKTYPE REQUIRED
FIELD NAME
END
STRING F_CODCAUS 4
BEGIN
PROMPT 2 5 "Causale "
FLAGS "U"
USE LF_CAUSALI
INPUT CODCAUS F_CODCAUS
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@60" DESCR
OUTPUT F_CODCAUS CODCAUS
OUTPUT F_DESCR DESCR
CHECKTYPE REQUIRED
ADD RUN cg0 -4
FIELD CODCAUS
END
STRING F_DESCR 50
BEGIN
PROMPT 17 5 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_DESCR
DISPLAY "Descrizione@60" DESCR
DISPLAY "Codice" CODCAUS
COPY OUTPUT F_CODCAUS
CHECKTYPE SEARCH
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 7 "@bParametri IVA merce esente"
END
STRING F_CODIVA_ES 4
BEGIN
PROMPT 2 8 "Codice IVA "
USE %IVA KEY 1
FLAGS "U"
INPUT CODTAB F_CODIVA_ES
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODIVA_ES CODTAB
OUTPUT F_DES_CODIVA_ES S0
CHECKTYPE NORMAL
FIELD IVA_ESENTE
END
STRING F_DES_CODIVA_ES 50
BEGIN
PROMPT 20 8 ""
USE %IVA KEY 2
INPUT S0 F_DES_CODIVA_ES
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODIVA_ES
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 10 "@bParametri IVA spese"
END
STRING F_CODIVA_SP 4
BEGIN
PROMPT 2 11 "Codice IVA "
USE %IVA KEY 1
FLAGS "U"
INPUT CODTAB F_CODIVA_SP
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODIVA_SP CODTAB
OUTPUT F_DES_CODIVA_SP S0
CHECKTYPE NORMAL
FIELD IVA_SPESE
END
STRING F_DES_CODIVA_SP 50
BEGIN
PROMPT 20 11 ""
USE %IVA KEY 2
INPUT S0 F_DES_CODIVA_SP
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODIVA_SP
CHECKTYPE SEARCH
END
NUMBER F_GRUPPO_SP 3
BEGIN
PROMPT 2 12 "Gruppo "
USE LF_PCON KEY 1 SELECT (CONTO="")
INPUT GRUPPO F_GRUPPO_SP
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO_SP GRUPPO
CHECKTYPE NORMAL
FIELD GR_IS
END
NUMBER F_CONTO_SP 3
BEGIN
PROMPT 15 12 "Conto "
USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
INPUT GRUPPO F_GRUPPO_SP
INPUT CONTO F_CONTO_SP
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CONTO_SP CONTO
OUTPUT F_GRUPPO_SP GRUPPO
CHECKTYPE NORMAL
FIELD CO_IS
END
NUMBER F_SOTTOCONTO_SP 6
BEGIN
PROMPT 27 12 "Sottoc. "
USE LF_PCON
INPUT GRUPPO F_GRUPPO_SP
INPUT CONTO F_CONTO_SP
INPUT SOTTOCONTO F_SOTTOCONTO_SP
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SOTTOCONTO_SP SOTTOCONTO
OUTPUT F_GRUPPO_SP GRUPPO
OUTPUT F_CONTO_SP CONTO
OUTPUT F_DESCRIZIONE_SP DESCR
CHECKTYPE NORMAL
FIELD SC_IS
END
STRING F_DESCRIZIONE_SP 50
BEGIN
PROMPT 2 13 ""
USE LF_PCON KEY 2
INPUT DESCR F_DESCRIZIONE_SP
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
OUTPUT F_SOTTOCONTO_SP SOTTOCONTO
OUTPUT F_CONTO_SP CONTO
OUTPUT F_GRUPPO_SP GRUPPO
OUTPUT F_DESCRIZIONE_SP DESCR
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 15 "@bParametri IVA trasporto"
END
STRING F_CODIVA_TR 4
BEGIN
PROMPT 2 16 "Codice IVA "
USE %IVA KEY 1
FLAGS "U"
INPUT CODTAB F_CODIVA_TR
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODIVA_TR CODTAB
OUTPUT F_DES_CODIVA_TR S0
CHECKTYPE NORMAL
FIELD IVA_TRASP
END
STRING F_DES_CODIVA_TR 50
BEGIN
PROMPT 20 16 ""
USE %IVA KEY 2
INPUT S0 F_DES_CODIVA_TR
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CODIVA_TR
CHECKTYPE SEARCH
END
NUMBER F_GRUPPO_TR 3
BEGIN
PROMPT 2 17 "Gruppo "
USE LF_PCON KEY 1 SELECT (CONTO="")
INPUT GRUPPO F_GRUPPO_TR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GRUPPO_TR GRUPPO
CHECKTYPE NORMAL
FIELD GR_IT
END
NUMBER F_CONTO_TR 3
BEGIN
PROMPT 15 17 "Conto "
USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
INPUT GRUPPO F_GRUPPO_TR
INPUT CONTO F_CONTO_TR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CONTO_TR CONTO
OUTPUT F_GRUPPO_TR GRUPPO
CHECKTYPE NORMAL
FIELD CO_IT
END
NUMBER F_SOTTOCONTO_TR 6
BEGIN
PROMPT 27 17 "Sottoc. "
USE LF_PCON
INPUT GRUPPO F_GRUPPO_TR
INPUT CONTO F_CONTO_TR
INPUT SOTTOCONTO F_SOTTOCONTO_TR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SOTTOCONTO_TR SOTTOCONTO
OUTPUT F_GRUPPO_TR GRUPPO
OUTPUT F_CONTO_TR CONTO
OUTPUT F_DESCRIZIONE_TR DESCR
CHECKTYPE NORMAL
FIELD SC_IT
END
STRING F_DESCRIZIONE_TR 50
BEGIN
PROMPT 2 18 ""
USE LF_PCON KEY 2
INPUT DESCR F_DESCRIZIONE_TR
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
OUTPUT F_SOTTOCONTO_TR SOTTOCONTO
OUTPUT F_CONTO_TR CONTO
OUTPUT F_GRUPPO_TR GRUPPO
OUTPUT F_DESCRIZIONE_TR DESCR
CHECKTYPE NORMAL
END
ENDPAGE
ENDMASK

View File

@ -1,14 +1,14 @@
[MAIN]
CODCAUS =
CO_IS =
CO_IT =
GR_IS =
GR_IT =
IVA_ESENTE =
IVA_SPESE =
IVA_TRASP =
NAME =
PATH =
SC_IS =
SC_IT =
[MAIN]
CODCAUS =
CO_IS =
CO_IT =
GR_IS =
GR_IT =
IVA_ESENTE =
IVA_SPESE =
IVA_TRASP =
NAME =
PATH =
SC_IS =
SC_IT =

View File

@ -1,18 +1,18 @@
#include <xvt.h>
#include "pg0388.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
pg0388100(argc, argv); break; //trasmissione ordini De Cade'
case 1:
pg0388200(argc, argv); break; //importazione bolle De Cade'
default:
pg0388100(argc, argv); break;
}
return 0;
#include <xvt.h>
#include "pg0388.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
pg0388100(argc, argv); break; //trasmissione ordini De Cade'
case 1:
pg0388200(argc, argv); break; //importazione bolle De Cade'
default:
pg0388100(argc, argv); break;
}
return 0;
}

View File

@ -1,2 +1,2 @@
int pg0388100(int argc, char* argv[]);
int pg0388200(int argc, char* argv[]);
int pg0388100(int argc, char* argv[]);
int pg0388200(int argc, char* argv[]);

View File

@ -1,272 +1,272 @@
#include <applicat.h>
#include <assoc.h>
#include <automask.h>
#include <currency.h>
#include <filetext.h>
#include <msksheet.h>
#include <recarray.h>
#include <relation.h>
#include <sort.h>
#include "..\ve\velib.h"
#include "pg0388.h"
#include "pg0388100a.h"
#define ALIAS_COMCF 200
#define ALIAS_IND 300
class TPG0388100_file: public TFile_text
{
protected:
virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str);
public:
TPG0388100_file(const TString& file_name);
virtual ~TPG0388100_file() { }
};
TPG0388100_file::TPG0388100_file(const TString& file_name)
: TFile_text(file_name, "pg0388100a.ini")
{
}
class TPG0388100_mask : public TAutomask
{
protected:
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TPG0388100_mask();
virtual ~TPG0388100_mask(){};
};
TPG0388100_mask::TPG0388100_mask() :TAutomask ("pg0388100a")
{
}
bool TPG0388100_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
return true;
}
class TPG0388100 : public TSkeleton_application
{
TCursor* _cur;
TPG0388100_mask* _msk;
TPG0388100_file* _trasfile;
TConfig* _configfile;
TRiga_documento* _riga_doc_curr;
virtual const char * extra_modules() const {return "ve";}
protected:
virtual bool create(void);
virtual bool destroy(void);
virtual void main_loop() ;
void mask2ini();
void ini2mask();
bool trasferisci_ordini();
real _omaggio;
public:
const real& get_omaggio() {return _omaggio;};
TPG0388100() {} ;
virtual ~TPG0388100() {} ;
};
// restituisce un riferimento all' applicazione
inline TPG0388100& app() { return (TPG0388100&) main_app();}
// gestione dei messaggi estesi nei campi
void TPG0388100_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TString& str)
{
const TString code(s.get(0));
TString valore;
if (code == "_FISSO")
{
// gestione dei campi fissi
// sintassi: _FISSO,!<valore>
// dove: <valore> è la stringa fissa da emettere
TString in(s.get());
CHECK(in[0]=='!',"Macro _FISSO senza carattere '!'");
in.ltrim(1);
in.trim();
valore = in;
}
else if (code == "_OMAGGIO")
{
valore = app().get_omaggio().string();
}
else if (code == "_CONCAT")
{
TString in(s.get());
CHECK(in[0]=='!',"Macro _CONCAT senza carattere '!'");
in.ltrim(1);
in.trim();
valore << str;
TString fi(s.get());
str = cur.curr(in).get(fi);
if (str.not_empty())
{
valore << ',';
valore << str;
}
}
else if (code == "_NOTE")
{
valore = cur.curr(LF_DOC).get(DOC_NOTE);
valore.replace(char(182), '\n');
TParagraph_string nota(valore, 50);
valore = nota.get();
}
else NFCHECK("Macro non definita: %s", (const char *)code);
str = valore;
}
bool TPG0388100::create()
{
open_files(LF_DOC, LF_CLIFO, LF_COMUNI, LF_CFVEN, 0);
_msk = new TPG0388100_mask();
_configfile = new TConfig("pg0388conf.ini", "INVIO");
return TSkeleton_application::create();
}
bool TPG0388100::destroy()
{
delete _configfile;
delete _msk;
return TSkeleton_application::destroy();
}
void TPG0388100::mask2ini()
{
//carica i parametri del file di configurazione
_configfile->set_paragraph("INVIO");
for (int i = 0; i < _msk->fields() ; i++)
{
TMask_field& f = _msk->fld(i);
const TFieldref* fr = f.field();
if (fr != NULL)
_configfile->set(fr->name(), f.get());
}
}
void TPG0388100::ini2mask()
{
//carica i parametri del file di configurazione
_configfile->set_paragraph("INVIO");
for (int i = 0; i < _msk->fields() ; i++)
{
TMask_field& f = _msk->fld(i);
const TFieldref* fr = f.field();
if (fr != NULL)
{
const TString& val = _configfile->get(fr->name());
f.set(val);
}
}
}
void TPG0388100::main_loop()
{
KEY tasto;
ini2mask();
tasto = _msk->run();
if (tasto == K_ENTER)
{
mask2ini();
if (trasferisci_ordini())
message_box(TR("Trasmissione ordini completata"));
}
}
bool TPG0388100::trasferisci_ordini()
{
const TFilename file = _msk->get(F_FILENAME);
_trasfile = new TPG0388100_file(file);
_trasfile->open(file,'w');
//parametri dei documenti da estrarre
const TString4 numord = _msk->get(F_NUMORD);
const char statoini = _msk->get(F_STATOINI)[0];
const char statofin = _msk->get(F_STATOFIN)[0];
const int anno = _msk->get_int(F_ANNO);
const long numini = _msk->get_long(F_NUMINI);
const long numfin = _msk->get_long(F_NUMFIN);
TRelation doc_rel(LF_DOC);
doc_rel.add(LF_RIGHEDOC, "CODNUM==CODNUM|ANNO==ANNO|PROVV==PROVV|NDOC==NDOC");
doc_rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
doc_rel.add(LF_COMUNI, "COM==COMCF", 1, LF_CLIFO, ALIAS_COMCF);
doc_rel.add(LF_INDSP, "TIPOCF==TIPOCF|CODCF==CODCF|CODIND==CODINDSP");
doc_rel.add(LF_COMUNI, "COM==COM", 1, LF_INDSP, ALIAS_IND);
TRectype da(LF_DOC);
TRectype a(LF_DOC);
da.put(DOC_PROVV, "D");
a.put(DOC_PROVV, "D");
da.put(DOC_ANNO, anno);
a.put(DOC_ANNO, anno);
da.put(DOC_CODNUM, numord);
a.put(DOC_CODNUM, numord);
da.put(DOC_NDOC, numini);
a.put(DOC_NDOC, numfin);
TString filt_expr;
filt_expr = "(STATO==\"";
filt_expr << statoini << "\")";
doc_rel.lfile().set_curr(new TDocumento);
_omaggio = ZERO;
_cur = new TCursor(&doc_rel,filt_expr,1,&da,&a);
const long cur_items = _cur ->items(); // Scorre tutti i documenti che rientrano nell'intervallo selezionato
if (cur_items != 0)
{
for (*_cur = 0; _cur->pos() < cur_items; ++(*_cur))
{
_omaggio = ZERO;
TRecord_text rec;
rec.set_type("TE");
_trasfile->autoload(rec, *_cur);
_trasfile->write(rec);
TDocumento documento = doc_rel.curr();
_configfile->set("NUMINI", documento.numero());
// modifico lo stato del documento estratto
documento.stato(statofin);
documento.rewrite();
for (int i=1;i<=documento.rows();i++)
{
TRecord_text recr;
const TRiga_documento& rec_rdoc = documento[i];
if (!(rec_rdoc.is_omaggio()))
{
if (i< documento.rows())
{
const TRiga_documento& rec_rigasucc = documento[i+1];
if (rec_rigasucc.is_omaggio())
_omaggio = rec_rigasucc.quantita();
else
_omaggio = ZERO;
}
//_riga_doc_curr = new TRiga_documento(rec_rdoc);
doc_rel.curr(LF_RIGHEDOC) = rec_rdoc;
recr.set_type("RI");
_trasfile->autoload(recr, *_cur);
_trasfile->write(recr);
//delete _riga_doc_curr;
}
}
}
delete _cur;
}
_trasfile->close();
delete _trasfile;
return true;
}
int pg0388100(int argc, char **argv)
{
TPG0388100 a;
a.run(argc, argv, "Trasmissione ordini");
return 0;
}
#include <applicat.h>
#include <assoc.h>
#include <automask.h>
#include <currency.h>
#include <filetext.h>
#include <msksheet.h>
#include <recarray.h>
#include <relation.h>
#include <sort.h>
#include "..\ve\velib.h"
#include "pg0388.h"
#include "pg0388100a.h"
#define ALIAS_COMCF 200
#define ALIAS_IND 300
class TPG0388100_file: public TFile_text
{
protected:
virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str);
public:
TPG0388100_file(const TString& file_name);
virtual ~TPG0388100_file() { }
};
TPG0388100_file::TPG0388100_file(const TString& file_name)
: TFile_text(file_name, "pg0388100a.ini")
{
}
class TPG0388100_mask : public TAutomask
{
protected:
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TPG0388100_mask();
virtual ~TPG0388100_mask(){};
};
TPG0388100_mask::TPG0388100_mask() :TAutomask ("pg0388100a")
{
}
bool TPG0388100_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
return true;
}
class TPG0388100 : public TSkeleton_application
{
TCursor* _cur;
TPG0388100_mask* _msk;
TPG0388100_file* _trasfile;
TConfig* _configfile;
TRiga_documento* _riga_doc_curr;
virtual const char * extra_modules() const {return "ve";}
protected:
virtual bool create(void);
virtual bool destroy(void);
virtual void main_loop() ;
void mask2ini();
void ini2mask();
bool trasferisci_ordini();
real _omaggio;
public:
const real& get_omaggio() {return _omaggio;};
TPG0388100() {} ;
virtual ~TPG0388100() {} ;
};
// restituisce un riferimento all' applicazione
inline TPG0388100& app() { return (TPG0388100&) main_app();}
// gestione dei messaggi estesi nei campi
void TPG0388100_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TString& str)
{
const TString code(s.get(0));
TString valore;
if (code == "_FISSO")
{
// gestione dei campi fissi
// sintassi: _FISSO,!<valore>
// dove: <valore> è la stringa fissa da emettere
TString in(s.get());
CHECK(in[0]=='!',"Macro _FISSO senza carattere '!'");
in.ltrim(1);
in.trim();
valore = in;
}
else if (code == "_OMAGGIO")
{
valore = app().get_omaggio().string();
}
else if (code == "_CONCAT")
{
TString in(s.get());
CHECK(in[0]=='!',"Macro _CONCAT senza carattere '!'");
in.ltrim(1);
in.trim();
valore << str;
TString fi(s.get());
str = cur.curr(in).get(fi);
if (str.not_empty())
{
valore << ',';
valore << str;
}
}
else if (code == "_NOTE")
{
valore = cur.curr(LF_DOC).get(DOC_NOTE);
valore.replace(char(182), '\n');
TParagraph_string nota(valore, 50);
valore = nota.get();
}
else NFCHECK("Macro non definita: %s", (const char *)code);
str = valore;
}
bool TPG0388100::create()
{
open_files(LF_DOC, LF_CLIFO, LF_COMUNI, LF_CFVEN, 0);
_msk = new TPG0388100_mask();
_configfile = new TConfig("pg0388conf.ini", "INVIO");
return TSkeleton_application::create();
}
bool TPG0388100::destroy()
{
delete _configfile;
delete _msk;
return TSkeleton_application::destroy();
}
void TPG0388100::mask2ini()
{
//carica i parametri del file di configurazione
_configfile->set_paragraph("INVIO");
for (int i = 0; i < _msk->fields() ; i++)
{
TMask_field& f = _msk->fld(i);
const TFieldref* fr = f.field();
if (fr != NULL)
_configfile->set(fr->name(), f.get());
}
}
void TPG0388100::ini2mask()
{
//carica i parametri del file di configurazione
_configfile->set_paragraph("INVIO");
for (int i = 0; i < _msk->fields() ; i++)
{
TMask_field& f = _msk->fld(i);
const TFieldref* fr = f.field();
if (fr != NULL)
{
const TString& val = _configfile->get(fr->name());
f.set(val);
}
}
}
void TPG0388100::main_loop()
{
KEY tasto;
ini2mask();
tasto = _msk->run();
if (tasto == K_ENTER)
{
mask2ini();
if (trasferisci_ordini())
message_box(TR("Trasmissione ordini completata"));
}
}
bool TPG0388100::trasferisci_ordini()
{
const TFilename file = _msk->get(F_FILENAME);
_trasfile = new TPG0388100_file(file);
_trasfile->open(file,'w');
//parametri dei documenti da estrarre
const TString4 numord = _msk->get(F_NUMORD);
const char statoini = _msk->get(F_STATOINI)[0];
const char statofin = _msk->get(F_STATOFIN)[0];
const int anno = _msk->get_int(F_ANNO);
const long numini = _msk->get_long(F_NUMINI);
const long numfin = _msk->get_long(F_NUMFIN);
TRelation doc_rel(LF_DOC);
doc_rel.add(LF_RIGHEDOC, "CODNUM==CODNUM|ANNO==ANNO|PROVV==PROVV|NDOC==NDOC");
doc_rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
doc_rel.add(LF_COMUNI, "COM==COMCF", 1, LF_CLIFO, ALIAS_COMCF);
doc_rel.add(LF_INDSP, "TIPOCF==TIPOCF|CODCF==CODCF|CODIND==CODINDSP");
doc_rel.add(LF_COMUNI, "COM==COM", 1, LF_INDSP, ALIAS_IND);
TRectype da(LF_DOC);
TRectype a(LF_DOC);
da.put(DOC_PROVV, "D");
a.put(DOC_PROVV, "D");
da.put(DOC_ANNO, anno);
a.put(DOC_ANNO, anno);
da.put(DOC_CODNUM, numord);
a.put(DOC_CODNUM, numord);
da.put(DOC_NDOC, numini);
a.put(DOC_NDOC, numfin);
TString filt_expr;
filt_expr = "(STATO==\"";
filt_expr << statoini << "\")";
doc_rel.lfile().set_curr(new TDocumento);
_omaggio = ZERO;
_cur = new TCursor(&doc_rel,filt_expr,1,&da,&a);
const long cur_items = _cur ->items(); // Scorre tutti i documenti che rientrano nell'intervallo selezionato
if (cur_items != 0)
{
for (*_cur = 0; _cur->pos() < cur_items; ++(*_cur))
{
_omaggio = ZERO;
TRecord_text rec;
rec.set_type("TE");
_trasfile->autoload(rec, *_cur);
_trasfile->write(rec);
TDocumento documento = doc_rel.curr();
_configfile->set("NUMINI", documento.numero());
// modifico lo stato del documento estratto
documento.stato(statofin);
documento.rewrite();
for (int i=1;i<=documento.rows();i++)
{
TRecord_text recr;
const TRiga_documento& rec_rdoc = documento[i];
if (!(rec_rdoc.is_omaggio()))
{
if (i< documento.rows())
{
const TRiga_documento& rec_rigasucc = documento[i+1];
if (rec_rigasucc.is_omaggio())
_omaggio = rec_rigasucc.quantita();
else
_omaggio = ZERO;
}
//_riga_doc_curr = new TRiga_documento(rec_rdoc);
doc_rel.curr(LF_RIGHEDOC) = rec_rdoc;
recr.set_type("RI");
_trasfile->autoload(recr, *_cur);
_trasfile->write(recr);
//delete _riga_doc_curr;
}
}
}
delete _cur;
}
_trasfile->close();
delete _trasfile;
return true;
}
int pg0388100(int argc, char **argv)
{
TPG0388100 a;
a.run(argc, argv, "Trasmissione ordini");
return 0;
}

View File

@ -1,11 +1,11 @@
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_FILENAME 103
#define F_ANNO 104
#define F_NUMINI 105
#define F_NUMFIN 106
#define F_NUMORD 107
#define F_DESORD 108
#define F_STATOINI 109
#define F_STATOFIN 110
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_FILENAME 103
#define F_ANNO 104
#define F_NUMINI 105
#define F_NUMFIN 106
#define F_NUMORD 107
#define F_DESORD 108
#define F_STATOINI 109
#define F_STATOFIN 110

View File

@ -1,204 +1,204 @@
[MAIN]
DECSEP = ,
FIELDSEP = |
RECORDSEP =
SKIPLINES = 0
TYPEFIELD = -1
TYPELEN = -1
TYPEPOS = -1
[TYPE FISSO]
ALIGN =
DATA =
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[TYPE DATA]
ALIGN =
DATA = D
DECIMAL = 0
FILLER =
LENGTH = 6
PICTURE =
[TYPE NUMERO]
ALIGN = R
DATA = N
DECIMAL = 0
FILLER = '0'
LENGTH = 0
PICTURE =
[TYPE STRINGA]
ALIGN = L
DATA = S
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[TYPE IMPORTO]
ALIGN = R
DATA = S
DECIMAL = 0
FILLER = '0'
LENGTH = 0
PICTURE =
[RECORD TE]
NAME(0)=RECORD TESTA
TYPE(0)=STRINGA
MESSAGE(0)=_FISSO,!T
NAME(1) = CODICE DESTINAZIONE MERCE
TYPE(1) = STRINGA
FIELD(1) = 33->CODINDSP
NAME(2) = RAGIONE SOCIALE DESTINAZIONE MERCE
TYPE(2) = STRINGA
FIELD(2) = 16->RAGSOC
NAME(3) = VIA DESTINAZIONE MERCE
TYPE(3) = STRINGA
FIELD(3) = 16->INDIR
MESSAGE(3) = _CONCAT,!16,CIV
NAME(4) = CAP DESTINAZIONE MERCE
TYPE(4) = STRINGA
FIELD(4) = 16->CAP
NAME(5) = CITTA DESTINAZIONE MERCE
TYPE(5) = STRINGA
FIELD(5) = 16->LOCALITA
NAME(6) = PROVINCIA DESTINAZIONE MERCE
TYPE(6) = STRINGA
NAME(7) = RAGIONE SOCIALE CLIENTE
TYPE(7) = STRINGA
FIELD(7) = 20->RAGSOC
NAME(8) = SEGUITO RAGIONE SOCIALE
TYPE(8) = STRINGA
NAME(9) = VIA CLIENTE
TYPE(9) = STRINGA
FIELD(9) = 20->INDCF
MESSAGE(9) = _CONCAT,!20,CIVCF
NAME(10) = CAP CLIENTE
TYPE(10) = STRINGA
FIELD(10) = 20->CAPCF
NAME(11) = CITTA CLIENTE
TYPE(11) = STRINGA
FIELD(11) = 13->DENCOM
NAME(12) = PROVINCIA CLIENTE
TYPE(12) = STRINGA
FIELD(12) = 13->PROVCOM
NAME(13) = PARTITA IVA CLIENTE
TYPE(13) = STRINGA
FIELD(13) = 20->PAIV
NAME(14) = CODICE CLIENTE
TYPE(14) = STRINGA
FIELD(14) = 20->CODCF
NAME(15) = ABI
TYPE(15) = STRINGA
FIELD(15) = 33->CODABIA
NAME(16) = CAB
TYPE(16) = STRINGA
FIELD(16) = 33->CODCABA
NAME(17) = CATEGORIA CLIENTE
TYPE(17) = STRINGA
FIELD(17) = 33->CATVEN
NAME(18) = NUMERO ORDINE
TYPE(18) = STRINGA
FIELD(18) = 33->NDOC
NAME(19) = ANNO ORDINE
TYPE(19) = STRINGA
FIELD(19) = 33->ANNO
NAME(20) = DATA ORDINE
TYPE(20) = STRINGA
FIELD(20) = 33->DATADOC
NAME(21) = DATA CONSEGNA ORDINE
TYPE(21) = STRINGA
FIELD(21) = 33->DATACONS
NAME(22) = CODICE AGENTE
TYPE(22) = STRINGA
FIELD(22) = 33->CODAG
NAME(23) = RIFERIMENTO
TYPE(23) = STRINGA
NAME(24) = CAUSALE TRASPORTO
TYPE(24) = STRINGA
FIELD(24) = 33->CAUSTRASP
NAME(25) = IMPORTO CONTRASSEGNO
TYPE(25) = STRINGA
[RECORD RI]
NAME(0)=RECORD RIGHE
TYPE(0)=STRINGA
MESSAGE(0)=_FISSO,!R
NAME(1) = NUMERO ORDINE
TYPE(1) = STRINGA
FIELD(1) = 34->NDOC
NAME(2) = ANNO ORDINE
TYPE(2) = STRINGA
FIELD(2) = 34->ANNO
NAME(3) = RIGA ORDINE
TYPE(3) = STRINGA
FIELD(3) = 34->NRIGA
NAME(4) = CODICE ARTICOLO
TYPE(4) = STRINGA
FIELD(4) = 34->CODART
NAME(5) = DESCRIZIONE ARTICOLO
TYPE(5) = STRINGA
FIELD(5) = 34->DESCR
NAME(6) = QUANTITA FATTURATA
TYPE(6) = STRINGA
FIELD(6) = 34->QTA
NAME(7) = QUANTITA IN SCONTO
TYPE(7) = STRINGA
NAME(8) = QUANTITA OMAGGIO
TYPE(8) = STRINGA
MESSAGE(8) = _OMAGGIO
NAME(9) = PREZZO UNITARIO
TYPE(9) = STRINGA
FIELD(9) = 34->PREZZO
NAME(10) = SCONTO 1
TYPE(10) = STRINGA
FIELD(10) = 34->SCONTO
NAME(11) = SCONTO 2
TYPE(11) = STRINGA
NAME(12) = NOTE DI RIGA
TYPE(12) = STRINGA
[MAIN]
DECSEP = ,
FIELDSEP = |
RECORDSEP =
SKIPLINES = 0
TYPEFIELD = -1
TYPELEN = -1
TYPEPOS = -1
[TYPE FISSO]
ALIGN =
DATA =
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[TYPE DATA]
ALIGN =
DATA = D
DECIMAL = 0
FILLER =
LENGTH = 6
PICTURE =
[TYPE NUMERO]
ALIGN = R
DATA = N
DECIMAL = 0
FILLER = '0'
LENGTH = 0
PICTURE =
[TYPE STRINGA]
ALIGN = L
DATA = S
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[TYPE IMPORTO]
ALIGN = R
DATA = S
DECIMAL = 0
FILLER = '0'
LENGTH = 0
PICTURE =
[RECORD TE]
NAME(0)=RECORD TESTA
TYPE(0)=STRINGA
MESSAGE(0)=_FISSO,!T
NAME(1) = CODICE DESTINAZIONE MERCE
TYPE(1) = STRINGA
FIELD(1) = 33->CODINDSP
NAME(2) = RAGIONE SOCIALE DESTINAZIONE MERCE
TYPE(2) = STRINGA
FIELD(2) = 16->RAGSOC
NAME(3) = VIA DESTINAZIONE MERCE
TYPE(3) = STRINGA
FIELD(3) = 16->INDIR
MESSAGE(3) = _CONCAT,!16,CIV
NAME(4) = CAP DESTINAZIONE MERCE
TYPE(4) = STRINGA
FIELD(4) = 16->CAP
NAME(5) = CITTA DESTINAZIONE MERCE
TYPE(5) = STRINGA
FIELD(5) = 16->LOCALITA
NAME(6) = PROVINCIA DESTINAZIONE MERCE
TYPE(6) = STRINGA
NAME(7) = RAGIONE SOCIALE CLIENTE
TYPE(7) = STRINGA
FIELD(7) = 20->RAGSOC
NAME(8) = SEGUITO RAGIONE SOCIALE
TYPE(8) = STRINGA
NAME(9) = VIA CLIENTE
TYPE(9) = STRINGA
FIELD(9) = 20->INDCF
MESSAGE(9) = _CONCAT,!20,CIVCF
NAME(10) = CAP CLIENTE
TYPE(10) = STRINGA
FIELD(10) = 20->CAPCF
NAME(11) = CITTA CLIENTE
TYPE(11) = STRINGA
FIELD(11) = 13->DENCOM
NAME(12) = PROVINCIA CLIENTE
TYPE(12) = STRINGA
FIELD(12) = 13->PROVCOM
NAME(13) = PARTITA IVA CLIENTE
TYPE(13) = STRINGA
FIELD(13) = 20->PAIV
NAME(14) = CODICE CLIENTE
TYPE(14) = STRINGA
FIELD(14) = 20->CODCF
NAME(15) = ABI
TYPE(15) = STRINGA
FIELD(15) = 33->CODABIA
NAME(16) = CAB
TYPE(16) = STRINGA
FIELD(16) = 33->CODCABA
NAME(17) = CATEGORIA CLIENTE
TYPE(17) = STRINGA
FIELD(17) = 33->CATVEN
NAME(18) = NUMERO ORDINE
TYPE(18) = STRINGA
FIELD(18) = 33->NDOC
NAME(19) = ANNO ORDINE
TYPE(19) = STRINGA
FIELD(19) = 33->ANNO
NAME(20) = DATA ORDINE
TYPE(20) = STRINGA
FIELD(20) = 33->DATADOC
NAME(21) = DATA CONSEGNA ORDINE
TYPE(21) = STRINGA
FIELD(21) = 33->DATACONS
NAME(22) = CODICE AGENTE
TYPE(22) = STRINGA
FIELD(22) = 33->CODAG
NAME(23) = RIFERIMENTO
TYPE(23) = STRINGA
NAME(24) = CAUSALE TRASPORTO
TYPE(24) = STRINGA
FIELD(24) = 33->CAUSTRASP
NAME(25) = IMPORTO CONTRASSEGNO
TYPE(25) = STRINGA
[RECORD RI]
NAME(0)=RECORD RIGHE
TYPE(0)=STRINGA
MESSAGE(0)=_FISSO,!R
NAME(1) = NUMERO ORDINE
TYPE(1) = STRINGA
FIELD(1) = 34->NDOC
NAME(2) = ANNO ORDINE
TYPE(2) = STRINGA
FIELD(2) = 34->ANNO
NAME(3) = RIGA ORDINE
TYPE(3) = STRINGA
FIELD(3) = 34->NRIGA
NAME(4) = CODICE ARTICOLO
TYPE(4) = STRINGA
FIELD(4) = 34->CODART
NAME(5) = DESCRIZIONE ARTICOLO
TYPE(5) = STRINGA
FIELD(5) = 34->DESCR
NAME(6) = QUANTITA FATTURATA
TYPE(6) = STRINGA
FIELD(6) = 34->QTA
NAME(7) = QUANTITA IN SCONTO
TYPE(7) = STRINGA
NAME(8) = QUANTITA OMAGGIO
TYPE(8) = STRINGA
MESSAGE(8) = _OMAGGIO
NAME(9) = PREZZO UNITARIO
TYPE(9) = STRINGA
FIELD(9) = 34->PREZZO
NAME(10) = SCONTO 1
TYPE(10) = STRINGA
FIELD(10) = 34->SCONTO
NAME(11) = SCONTO 2
TYPE(11) = STRINGA
NAME(12) = NOTE DI RIGA
TYPE(12) = STRINGA

View File

@ -1,117 +1,117 @@
#include "pg0388100a.h"
TOOLBAR "" 0 -5 0 4
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -11 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -11 ""
END
ENDPAGE
PAGE "Trasmissione ordini" -1 -1 78 18
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 0 "@bDitta"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 2 1 "Codice "
FLAGS "GDF"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 17 1 "Rag.Soc. "
FLAGS "D"
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 3 "@bParametri"
END
STRING F_FILENAME 52
BEGIN
PROMPT 2 4 "Nome file da creare "
CHECKTYPE REQUIRED
VALIDATE FILENAME_FUNC
FLAGS "A"
HELP "Nome del file in cui scaricare i dati"
WARNING "E' necessario specificare un nome di file"
FIELD FILENAME
END
NUMBER F_ANNO 4
BEGIN
PROMPT 2 5 "Anno ordini "
HELP "Anno ordini da trasferire"
CHECKTYPE REQUIRED
FIELD ANNO
END
NUMBER F_NUMINI 7
BEGIN
PROMPT 2 6 "Ordini dal "
HELP "Numero ordine iniziale"
CHECKTYPE REQUIRED
FIELD NUMINI
END
NUMBER F_NUMFIN 7
BEGIN
PROMPT 30 6 "al "
HELP "Numero ordine finale"
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 9 "@bParametri di configurazione"
END
STRING F_NUMORD 4
BEGIN
PROMPT 2 10 "Numerazione "
USE %NUM
INPUT CODTAB F_NUMORD
OUTPUT F_DESORD S0
CHECKTYPE REQUIRED
FLAGS "UD"
FIELD NUMORD
END
STRING F_DESORD 50
BEGIN
PROMPT 20 10 ""
FLAGS "D"
END
STRING F_STATOINI 1
BEGIN
PROMPT 2 11 "Stato ordini da trasmettere "
FLAGS "D"
FIELD STATOINI
END
STRING F_STATOFIN 1
BEGIN
PROMPT 2 12 "Stato da attribuire dopo la trasmissione"
FLAGS "D"
FIELD STATOFIN
END
ENDPAGE
ENDMASK
#include "pg0388100a.h"
TOOLBAR "" 0 -5 0 4
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -11 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -11 ""
END
ENDPAGE
PAGE "Trasmissione ordini" -1 -1 78 18
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 0 "@bDitta"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 2 1 "Codice "
FLAGS "GDF"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 17 1 "Rag.Soc. "
FLAGS "D"
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 3 "@bParametri"
END
STRING F_FILENAME 52
BEGIN
PROMPT 2 4 "Nome file da creare "
CHECKTYPE REQUIRED
VALIDATE FILENAME_FUNC
FLAGS "A"
HELP "Nome del file in cui scaricare i dati"
WARNING "E' necessario specificare un nome di file"
FIELD FILENAME
END
NUMBER F_ANNO 4
BEGIN
PROMPT 2 5 "Anno ordini "
HELP "Anno ordini da trasferire"
CHECKTYPE REQUIRED
FIELD ANNO
END
NUMBER F_NUMINI 7
BEGIN
PROMPT 2 6 "Ordini dal "
HELP "Numero ordine iniziale"
CHECKTYPE REQUIRED
FIELD NUMINI
END
NUMBER F_NUMFIN 7
BEGIN
PROMPT 30 6 "al "
HELP "Numero ordine finale"
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 9 "@bParametri di configurazione"
END
STRING F_NUMORD 4
BEGIN
PROMPT 2 10 "Numerazione "
USE %NUM
INPUT CODTAB F_NUMORD
OUTPUT F_DESORD S0
CHECKTYPE REQUIRED
FLAGS "UD"
FIELD NUMORD
END
STRING F_DESORD 50
BEGIN
PROMPT 20 10 ""
FLAGS "D"
END
STRING F_STATOINI 1
BEGIN
PROMPT 2 11 "Stato ordini da trasmettere "
FLAGS "D"
FIELD STATOINI
END
STRING F_STATOFIN 1
BEGIN
PROMPT 2 12 "Stato da attribuire dopo la trasmissione"
FLAGS "D"
FIELD STATOFIN
END
ENDPAGE
ENDMASK

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +1,15 @@
// campi della maschera principale
#define F_PATH 101
#define F_NAMEBOL 102
#define F_NUMBOL 103
#define F_TIPOBOL 104
#define F_NUMORD 105
#define F_LASTBOL 106
#define F_DESBOL 107
#define F_DESTIPO 108
#define F_DESORD 109
#define F_NAMEINV 110
#define F_IMPBOL 111
#define F_IMPINV 112
#define F_STATOBOL 113
// campi della maschera principale
#define F_PATH 101
#define F_NAMEBOL 102
#define F_NUMBOL 103
#define F_TIPOBOL 104
#define F_NUMORD 105
#define F_LASTBOL 106
#define F_DESBOL 107
#define F_DESTIPO 108
#define F_DESORD 109
#define F_NAMEINV 110
#define F_IMPBOL 111
#define F_IMPINV 112
#define F_STATOBOL 113

View File

@ -1,151 +1,151 @@
[MAIN]
DECSEP =
FIELDSEP =
RECORDSEP =
RECORDSIZE =
SKIPLINES = 0
TYPEFIELD = 0
TYPELEN = 4
TYPEPOS = 0
[TYPE FISSO]
ALIGN =
DATA =
DECIMAL = 0
FILLER = ' '
LENGTH =
PICTURE =
[TYPE DATA]
ALIGN =
DATA = D
DECIMAL = 0
FILLER =
LENGTH = 10
PICTURE =
[TYPE NUMERO]
ALIGN = R
DATA =
DECIMAL = 0
FILLER = '0'
LENGTH = 0
PICTURE =
[TYPE IMPORTO]
ALIGN = R
DATA =
DECIMAL = 0
LENGTH = 11
PICTURE =
[TYPE STRINGA]
ALIGN = L
DATA = S
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[RECORD TB01]
NAME(0) = TIPO
TYPE(0) = FISSO
POSITION(0) = 0
LENGTH(0) = 4
NAME(1) = NUMERO
TYPE(1) = NUMERO
POSITION(1) = 4
LENGTH(1) = 6
NAME(2) = DATA
TYPE(2) = DATA
POSITION(2) = 10
LENGTH(2) = 10
NAME(3) = FILLER
TYPE(3) =
POSITION(3) = 20
LENGTH(3) = 7
NAME(4) = ANNO
TYPE(4) = NUMERO
POSITION(4) = 27
LENGTH(4) = 4
NAME(5) = NUMORD
TYPE(5) = NUMERO
POSITION(5) = 31
LENGTH(5) = 6
NAME(6) = FILLER
TYPE(6) =
POSITION(6) = 37
LENGTH(6) = 95
[RECORD RB01]
NAME(0) = TIPO
TYPE(0) = FISSO
POSITION(0) = 0
LENGTH(0) = 4
NAME(1) = NUMERO
TYPE(1) = NUMERO
POSITION(1) = 4
LENGTH(1) = 6
NAME(2) = DATA
TYPE(2) = DATA
POSITION(2) = 10
LENGTH(2) = 10
NAME(3) = RIGABOL
TYPE(3) = NUMERO
POSITION(3) = 20
LENGTH(3) = 3
NAME(4) = RIGAORD
TYPE(4) = NUMERO
POSITION(4) = 23
LENGTH(4) = 6
NAME(5) = CODART
TYPE(5) = NUMERO
POSITION(5) = 29
LENGTH(5) = 10
NAME(6) = DESCR
TYPE(6) = STRINGA
POSITION(6) = 39
LENGTH(6) = 30
NAME(7) = QTAFAT
TYPE(7) = NUMERO
POSITION(7) = 69
LENGTH(7) = 7
NAME(8) = QTAOMG
TYPE(8) = NUMERO
POSITION(8) = 76
LENGTH(8) = 7
NAME(9) = FILLER
TYPE(9) =
POSITION(9) = 83
LENGTH(9) = 16
NAME(10) = SCADENZA
TYPE(10) = DATA
POSITION(10) = 99
LENGTH(10) = 10
NAME(11) = LOTTO
TYPE(11) = STRINGA
POSITION(11) = 109
LENGTH(11) = 12
NAME(12) = FILLER
TYPE(12) =
POSITION(12) = 121
LENGTH(12) = 11
[MAIN]
DECSEP =
FIELDSEP =
RECORDSEP =
RECORDSIZE =
SKIPLINES = 0
TYPEFIELD = 0
TYPELEN = 4
TYPEPOS = 0
[TYPE FISSO]
ALIGN =
DATA =
DECIMAL = 0
FILLER = ' '
LENGTH =
PICTURE =
[TYPE DATA]
ALIGN =
DATA = D
DECIMAL = 0
FILLER =
LENGTH = 10
PICTURE =
[TYPE NUMERO]
ALIGN = R
DATA =
DECIMAL = 0
FILLER = '0'
LENGTH = 0
PICTURE =
[TYPE IMPORTO]
ALIGN = R
DATA =
DECIMAL = 0
LENGTH = 11
PICTURE =
[TYPE STRINGA]
ALIGN = L
DATA = S
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[RECORD TB01]
NAME(0) = TIPO
TYPE(0) = FISSO
POSITION(0) = 0
LENGTH(0) = 4
NAME(1) = NUMERO
TYPE(1) = NUMERO
POSITION(1) = 4
LENGTH(1) = 6
NAME(2) = DATA
TYPE(2) = DATA
POSITION(2) = 10
LENGTH(2) = 10
NAME(3) = FILLER
TYPE(3) =
POSITION(3) = 20
LENGTH(3) = 7
NAME(4) = ANNO
TYPE(4) = NUMERO
POSITION(4) = 27
LENGTH(4) = 4
NAME(5) = NUMORD
TYPE(5) = NUMERO
POSITION(5) = 31
LENGTH(5) = 6
NAME(6) = FILLER
TYPE(6) =
POSITION(6) = 37
LENGTH(6) = 95
[RECORD RB01]
NAME(0) = TIPO
TYPE(0) = FISSO
POSITION(0) = 0
LENGTH(0) = 4
NAME(1) = NUMERO
TYPE(1) = NUMERO
POSITION(1) = 4
LENGTH(1) = 6
NAME(2) = DATA
TYPE(2) = DATA
POSITION(2) = 10
LENGTH(2) = 10
NAME(3) = RIGABOL
TYPE(3) = NUMERO
POSITION(3) = 20
LENGTH(3) = 3
NAME(4) = RIGAORD
TYPE(4) = NUMERO
POSITION(4) = 23
LENGTH(4) = 6
NAME(5) = CODART
TYPE(5) = NUMERO
POSITION(5) = 29
LENGTH(5) = 10
NAME(6) = DESCR
TYPE(6) = STRINGA
POSITION(6) = 39
LENGTH(6) = 30
NAME(7) = QTAFAT
TYPE(7) = NUMERO
POSITION(7) = 69
LENGTH(7) = 7
NAME(8) = QTAOMG
TYPE(8) = NUMERO
POSITION(8) = 76
LENGTH(8) = 7
NAME(9) = FILLER
TYPE(9) =
POSITION(9) = 83
LENGTH(9) = 16
NAME(10) = SCADENZA
TYPE(10) = DATA
POSITION(10) = 99
LENGTH(10) = 10
NAME(11) = LOTTO
TYPE(11) = STRINGA
POSITION(11) = 109
LENGTH(11) = 12
NAME(12) = FILLER
TYPE(12) =
POSITION(12) = 121
LENGTH(12) = 11

View File

@ -1,140 +1,140 @@
#include "pg0388200a.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Parametri Importazione" -1 -1 78 20
STRING F_PATH 255 40
BEGIN
PROMPT 1 1 "Percorso files da importare "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella valida!"
FIELD PATH
END
BOOLEAN F_IMPBOL
BEGIN
PROMPT 2 3 "@bImportazione bolle"
MESSAGE FALSE DISABLE,F_NAMEBOL
MESSAGE TRUE ENABLE,F_NAMEBOL
END
GROUPBOX DLG_NULL 78 9
BEGIN
PROMPT 1 4 ""
END
STRING F_NAMEBOL 30
BEGIN
PROMPT 2 5 "Nome file da importare "
FLAGS "B"
CHECKTYPE REQUIRED
FIELD NAMEBOL
END
STRING F_NUMBOL 4
BEGIN
PROMPT 2 6 "Numerazione "
USE %NUM
INPUT CODTAB F_NUMBOL
OUTPUT F_DESBOL S0
CHECKTYPE REQUIRED
FLAGS "UD"
FIELD NUMBOL
END
STRING F_DESBOL 50
BEGIN
PROMPT 20 6 ""
FLAGS "D"
END
STRING F_TIPOBOL 4
BEGIN
PROMPT 2 7 "Tipo "
USE %TIP
INPUT CODTAB F_TIPOBOL
OUTPUT F_DESTIPO S0
CHECKTYPE REQUIRED
FLAGS "UD"
FIELD TIPOBOL
END
STRING F_DESTIPO 50
BEGIN
PROMPT 20 7 ""
FLAGS "D"
END
NUMBER F_STATOBOL 1
BEGIN
PROMPT 2 8 "Stato bolle importate "
FLAGS "D"
FIELD STATOBOL
END
NUMBER F_LASTBOL 6
BEGIN
PROMPT 2 9 "Ultima bolla importata "
FLAGS "D"
FIELD LASTBOL
END
TEXT -1
BEGIN
PROMPT 2 10 "@bOrdini"
END
STRING F_NUMORD 4
BEGIN
PROMPT 2 11 "Numerazione "
USE %NUM
INPUT CODTAB F_NUMORD
OUTPUT F_DESORD S0
CHECKTYPE REQUIRED
FLAGS "UD"
FIELD NUMORD
END
STRING F_DESORD 50
BEGIN
PROMPT 20 11 ""
FLAGS "D"
END
BOOLEAN F_IMPINV
BEGIN
PROMPT 2 14 "@bImportazione inventario"
MESSAGE FALSE DISABLE,F_NAMEINV
MESSAGE TRUE ENABLE,F_NAMEINV
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 15 ""
END
STRING F_NAMEINV 30
BEGIN
PROMPT 2 16 "Nome file da importare "
FLAGS "B"
CHECKTYPE REQUIRED
FIELD NAMEINV
END
ENDPAGE
ENDMASK
#include "pg0388200a.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Parametri Importazione" -1 -1 78 20
STRING F_PATH 255 40
BEGIN
PROMPT 1 1 "Percorso files da importare "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella valida!"
FIELD PATH
END
BOOLEAN F_IMPBOL
BEGIN
PROMPT 2 3 "@bImportazione bolle"
MESSAGE FALSE DISABLE,F_NAMEBOL
MESSAGE TRUE ENABLE,F_NAMEBOL
END
GROUPBOX DLG_NULL 78 9
BEGIN
PROMPT 1 4 ""
END
STRING F_NAMEBOL 30
BEGIN
PROMPT 2 5 "Nome file da importare "
FLAGS "B"
CHECKTYPE REQUIRED
FIELD NAMEBOL
END
STRING F_NUMBOL 4
BEGIN
PROMPT 2 6 "Numerazione "
USE %NUM
INPUT CODTAB F_NUMBOL
OUTPUT F_DESBOL S0
CHECKTYPE REQUIRED
FLAGS "UD"
FIELD NUMBOL
END
STRING F_DESBOL 50
BEGIN
PROMPT 20 6 ""
FLAGS "D"
END
STRING F_TIPOBOL 4
BEGIN
PROMPT 2 7 "Tipo "
USE %TIP
INPUT CODTAB F_TIPOBOL
OUTPUT F_DESTIPO S0
CHECKTYPE REQUIRED
FLAGS "UD"
FIELD TIPOBOL
END
STRING F_DESTIPO 50
BEGIN
PROMPT 20 7 ""
FLAGS "D"
END
NUMBER F_STATOBOL 1
BEGIN
PROMPT 2 8 "Stato bolle importate "
FLAGS "D"
FIELD STATOBOL
END
NUMBER F_LASTBOL 6
BEGIN
PROMPT 2 9 "Ultima bolla importata "
FLAGS "D"
FIELD LASTBOL
END
TEXT -1
BEGIN
PROMPT 2 10 "@bOrdini"
END
STRING F_NUMORD 4
BEGIN
PROMPT 2 11 "Numerazione "
USE %NUM
INPUT CODTAB F_NUMORD
OUTPUT F_DESORD S0
CHECKTYPE REQUIRED
FLAGS "UD"
FIELD NUMORD
END
STRING F_DESORD 50
BEGIN
PROMPT 20 11 ""
FLAGS "D"
END
BOOLEAN F_IMPINV
BEGIN
PROMPT 2 14 "@bImportazione inventario"
MESSAGE FALSE DISABLE,F_NAMEINV
MESSAGE TRUE ENABLE,F_NAMEINV
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 15 ""
END
STRING F_NAMEINV 30
BEGIN
PROMPT 2 16 "Nome file da importare "
FLAGS "B"
CHECKTYPE REQUIRED
FIELD NAMEINV
END
ENDPAGE
ENDMASK

View File

@ -1,26 +1,26 @@
[MAIN]
DECSEP =
FIELDSEP = ;
RECORDSEP =
SKIPLINES = 0
TYPEFIELD = -1
TYPEPOS = -1
[TYPE STRINGA]
DATA = S
[RECORD]
NAME(0) = CODART
TYPE(0) = STRINGA
NAME(1) = LOTTO
TYPE(1) = STRINGA
NAME(2) = DATASCAD
TYPE(2) = STRINGA
NAME(3) = GIAC
TYPE(3) = STRINGA
NAME(4) = CODMAG
TYPE(4) = STRINGA
[MAIN]
DECSEP =
FIELDSEP = ;
RECORDSEP =
SKIPLINES = 0
TYPEFIELD = -1
TYPEPOS = -1
[TYPE STRINGA]
DATA = S
[RECORD]
NAME(0) = CODART
TYPE(0) = STRINGA
NAME(1) = LOTTO
TYPE(1) = STRINGA
NAME(2) = DATASCAD
TYPE(2) = STRINGA
NAME(3) = GIAC
TYPE(3) = STRINGA
NAME(4) = CODMAG
TYPE(4) = STRINGA

View File

@ -1,9 +1,9 @@
[INVIO]
[RICEZIONE]
NAME =
PATH =
CODNUMBOL =
TIPOBOL =
CODNUMORD =
LASTBOL =
[INVIO]
[RICEZIONE]
NAME =
PATH =
CODNUMBOL =
TIPOBOL =
CODNUMORD =
LASTBOL =

View File

@ -42,24 +42,16 @@ TLif_iterator::TLif_iterator(TLif_transfer* ht) : _ht(ht), _pi(NULL)
{
const TRecnotype tot = _ht->recordset().items();
TString title;
title << _ht->title() << ": " << tot << ' ' << TR("righe");
if (tot > 1)
_pi = new TProgind(tot, title, true, true);
else
::begin_wait();
if (tot > 0)
_ht->log(title);
title << _ht->title() << ": " << tot << ' ' << TR("righe");
_pi = new TProgind(tot, title, true, true);
_ht->log(title);
_rec = -1;
}
TLif_iterator::~TLif_iterator()
{
if (_pi != NULL)
delete _pi;
else
::end_wait();
}
///////////////////////////////////////////////////////////

View File

@ -613,6 +613,7 @@ void TPE_mask::save_rate()
const TString& codval = get(F_CODVAL);
const real cambio = get(F_CAMBIO);
const bool eurocambio = get_bool(F_EURO);
bool zeroes = FALSE; // Esistono righe effetto da cancellare

View File

@ -100,7 +100,7 @@ error_type TContabil_tsys::write_all(TDocumento& doc, TMovimentoPN_VE & moviment
const int iva_items = movimento.iva_items();
const int cg_items = movimento.cg_items();
TCurrency c(ZERO);
const real dec = c.decimals();
const int dec = c.decimals();
const real molt = pow(10.0, dec);
if (test_swap())

View File

@ -359,13 +359,13 @@ void TStatistiche_ANIVAL_csv_recordset::aggiungi_riga(TDocument_recordset& righe
{
//codart
new_rec("");
set(0, TVariant(codart));
set(0, codart);
//descrart
const TString& descrart = cache().get(LF_ANAMAG, codart, ANAMAG_DESCR);
set(1, TVariant(descrart));
set(1, descrart);
set(28, TVariant(grmerc));
set(29, TVariant(codcf));
set(28, grmerc);
set(29, codcf);
//re-sorting per codart (serve perchè solo il recordset ordinato è scannerizzabile con il plutonico metodo dicotomico)
switch (tipo_stat)

View File

@ -6,6 +6,7 @@
#include <execp.h>
#include <progind.h>
#include <reprint.h>
#include <sheet.h>
#include <utility.h>
#include "../or/orlib.h"
@ -265,34 +266,34 @@ void TGenera_ordini_mask::update_sheet()
TToken_string & row = sf.row(i);
const TString & codart = recset.get(LF_ANAMAG, ANAMAG_CODART).as_string();
row.add(codart, sf.cid2index(F_CODART));
row.add(codart, sf.cid2index(SA_CODART));
art.read(codart);
const real giac = art.giacenza_anno(codmag, "", anno);
row.add(recset.get(LF_ANAMAG, ANAMAG_DESCR).as_string(), sf.cid2index(F_DESCR));
row.add(recset.get("UMART.UM").as_string(), sf.cid2index(F_UM));
row.add(recset.get(LF_ANAMAG, ANAMAG_DESCR).as_string(), sf.cid2index(SA_DESCR));
row.add(recset.get("UMART.UM").as_string(), sf.cid2index(SA_UM));
const long codforn = recset.get(LF_ANAMAG, ANAMAG_CODFORN).as_int();
row.add(codforn, sf.cid2index(F_FORNITORE));
row.add(recset.get("CLIFO.RAGSOC").as_string(), sf.cid2index(F_RAGSOC));
row.add(recset.get(LF_ANAMAG, ANAMAG_GIORNIRIOR).as_string(), sf.cid2index(F_LEADTIME));
row.add(recset.get(LF_ANAMAG, ANAMAG_LOTTORIOR).as_string(), sf.cid2index(F_LOTTOMIN));
row.add(recset.get(LF_ANAMAG, ANAMAG_DESCRAGG).as_string(), sf.cid2index(F_DESCRAGG));
row.add(giac.string(), sf.cid2index(F_GIACENZA));
row.add(codforn, sf.cid2index(SA_FORNITORE));
row.add(recset.get("CLIFO.RAGSOC").as_string(), sf.cid2index(SA_RAGSOC));
row.add(recset.get(LF_ANAMAG, ANAMAG_GIORNIRIOR).as_string(), sf.cid2index(SA_LEADTIME));
row.add(recset.get(LF_ANAMAG, ANAMAG_LOTTORIOR).as_string(), sf.cid2index(SA_LOTTOMIN));
row.add(recset.get(LF_ANAMAG, ANAMAG_DESCRAGG).as_string(), sf.cid2index(SA_DESCRAGG));
row.add(giac.string(), sf.cid2index(SA_GIACENZA));
row.add(recset.get(LF_ANAMAG, ANAMAG_PPCONF).as_string(), sf.cid2index(F_PPCONF));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER1).as_string(), sf.cid2index(F_USER1));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER2).as_string(), sf.cid2index(F_USER2));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER3).as_string(), sf.cid2index(F_USER3));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER4).as_string(), sf.cid2index(F_USER4));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER5).as_string(), sf.cid2index(F_USER5));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER6).as_string(), sf.cid2index(F_USER6));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER7).as_string(), sf.cid2index(F_USER7));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER8).as_string(), sf.cid2index(F_USER8));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER9).as_string(), sf.cid2index(F_USER9));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER10).as_string(), sf.cid2index(F_USER10));
row.add(recset.get(LF_ANAMAG, ANAMAG_PPCONF).as_string(), sf.cid2index(SA_PPCONF));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER1).as_string(), sf.cid2index(SA_USER1));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER2).as_string(), sf.cid2index(SA_USER2));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER3).as_string(), sf.cid2index(SA_USER3));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER4).as_string(), sf.cid2index(SA_USER4));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER5).as_string(), sf.cid2index(SA_USER5));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER6).as_string(), sf.cid2index(SA_USER6));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER7).as_string(), sf.cid2index(SA_USER7));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER8).as_string(), sf.cid2index(SA_USER8));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER9).as_string(), sf.cid2index(SA_USER9));
row.add(recset.get(LF_ANAMAG, ANAMAG_USER10).as_string(), sf.cid2index(SA_USER10));
const real disp = art.disponibilita(codes, get(F_MAG), NULL);
row.add(disp.string(), sf.cid2index(F_DISPON));
row.add(disp.string(), sf.cid2index(SA_DISPON));
sf.check_row(i);
if (check_expr)
{
@ -323,7 +324,7 @@ void TGenera_ordini_mask::update_orders()
_order_changed = false;
TWait_cursor hourglass;
TSheet_field& sh = sfield(F_ORDERS);
TSheet_field& sh = sfield(F_DOCUMENTS);
sh.destroy();
TString query;
@ -350,7 +351,7 @@ void TGenera_ordini_mask::update_orders()
TMask& m = sh.sheet_mask();
TRelation& rel = *orders.cursor()->relation();
const int status_pos = sh.cid2index(S_STATODOC);
const int status_pos = sh.cid2index(SD_STATODOC);
for (bool ok = orders.move_first(); ok; ok = orders.move_next())
{
TToken_string& row = sh.row(-1);
@ -387,7 +388,7 @@ void TGenera_ordini_mask::next_page(int p)
}
if (_order_changed)
{
const TSheet_field& sf = sfield(F_ORDERS);
const TSheet_field& sf = sfield(F_DOCUMENTS);
if (win() == sf.parent())
update_orders();
}
@ -734,7 +735,7 @@ void TGenera_ordini_mask::on_idle()
{
//si posiziona sulla qta
TSheet_field& sf_righe = sfield(F_ARTICLES);
const int column = sf_righe.cid2index(F_QTA);
const int column = sf_righe.cid2index(SA_QTA);
sf_righe.select(_riga_da_selezionare, column, true);
_riga_da_selezionare = -1;
sf_righe.set_focus();
@ -772,8 +773,8 @@ TGenera_ordini_mask::TGenera_ordini_mask()
for (int i = 1; i <= 10; i++)
{
const int col = sh.cid2index(F_USER1 + i -1);
TEditable_field & f = sh_mask.efield(F_USER1 + i - 1);
const int col = sh.cid2index(SA_USER1 + i -1);
TEditable_field & f = sh_mask.efield(SA_USER1 + i - 1);
if (c.get_bool("CHK_USER", "ve", i) && c.get_bool("USERDEF", "or", i))
{
@ -876,7 +877,7 @@ void TCreazione_ordini::aggiorna_stato_doc_orig(const TRectype& rdoc)
void TCreazione_ordini::generate_carics()
{
TGenera_ordini_mask& mask = *_mask;
TSheet_field& sf = mask.sfield(F_ORDERS);
TSheet_field& sf = mask.sfield(F_DOCUMENTS);
long minforn = 999999L;
long maxforn = 0L;
@ -912,21 +913,21 @@ void TCreazione_ordini::generate_carics()
{
if (!pi.setstatus(n))
break;
if (row->get_char(sf.cid2index(S_DAEVADERE) == 'X'))
if (row->get_char(sf.cid2index(SD_DAEVADERE) == 'X'))
{
const real qta = row->get(sf.cid2index(S_QTADAEVADERE));
const real qta = row->get(sf.cid2index(SD_QTADAEVADERE));
if (!qta.is_zero())
{
const TString8 codforn(row->get(sf.cid2index(S_FORNITORE)));
const TString8 codforn(row->get(sf.cid2index(SD_FORNITORE)));
const long cod = atol(codforn);
TString8 key; key.format("F|%ld", cod);
const TRectype& forn = cache().get(LF_CLIFO, key);
const TDate datacons(row->get(sf.cid2index(S_DATACONS)));
const TDate datacons(row->get(sf.cid2index(SD_DATACONS)));
const TString4 codval(forn.get(CLI_CODVAL));
const TRectype& forven = cache().get(LF_CFVEN, key);
const TString4 codiva(forven.get(CFV_ASSFIS));
const TString commessa = row->get(sf.cid2index(S_CDC));
const TString fase = row->get(sf.cid2index(S_FSC));
const TString commessa = row->get(sf.cid2index(SA_CDC));
const TString fase = row->get(sf.cid2index(SA_FSC));
TDocumento* d = (TDocumento*)orders.objptr(codforn);
if (d == NULL)
@ -1022,9 +1023,9 @@ void TCreazione_ordini::generate_carics()
rdoc.put(RDOC_CODAGG1, row->get(sf.cid2index(F_CODAGG1)));
rdoc.put(RDOC_CODAGG2, row->get(sf.cid2index(F_CODAGG2)));
*/
const TDate dataord = row->get(sf.cid2index(S_DATADOC));
const long ndoc = row->get_long(sf.cid2index(S_NUMDOC));
const int nriga = row->get_int(sf.cid2index(S_NUMRIGA));
const TDate dataord = row->get(sf.cid2index(SD_DATADOC));
const long ndoc = row->get_long(sf.cid2index(SD_NUMDOC));
const int nriga = row->get_int(sf.cid2index(SD_NUMRIGA));
TRectype& rigord = righedoc.curr();
rigord.put(RDOC_PROVV, 'D');
rigord.put(RDOC_ANNO, dataord.year());
@ -1141,19 +1142,19 @@ void TCreazione_ordini::generate_orders()
if (!pi.setstatus(n))
break;
const real qta = row->get(sf.cid2index(F_QTA));
const real qta = row->get(sf.cid2index(SA_QTA));
if (!qta.is_zero())
{
const TString8 codforn(row->get(sf.cid2index(F_FORNITORE)));
const TString8 codforn(row->get(sf.cid2index(SA_FORNITORE)));
const long cod = atol(codforn);
TString8 key; key.format("F|%ld", cod);
const TRectype& forn = cache().get(LF_CLIFO, key);
const TDate datacons(row->get(sf.cid2index(F_DATACONS)));
const TDate datacons(row->get(sf.cid2index(SA_DATACONS)));
const TString4 codval(forn.get(CLI_CODVAL));
const TRectype& forven = cache().get(LF_CFVEN, key);
const TString4 codiva(forven.get(CFV_ASSFIS));
const TString commessa = row->get(sf.cid2index(F_CDC));
const TString fase = row->get(sf.cid2index(F_FSC));
const TString commessa = row->get(sf.cid2index(SA_CDC));
const TString fase = row->get(sf.cid2index(SA_FSC));
TDocumento* d = (TDocumento*)orders.objptr(codforn);
if (d == NULL)
@ -1203,23 +1204,23 @@ void TCreazione_ordini::generate_orders()
}
TRiga_documento& rdoc = d->new_row("01");
const TString codart(row->get(sf.cid2index(F_CODART)));
const TString codart(row->get(sf.cid2index(SA_CODART)));
rdoc.put(RDOC_CODMAG, codmag);
rdoc.put(RDOC_CODMAGC, codmagc);
rdoc.put(RDOC_CODART, codart);
rdoc.put(RDOC_CODARTMAG, codart);
rdoc.put(RDOC_CHECKED, "X");
rdoc.put(RDOC_DESCR, row->get(sf.cid2index(F_DESCR)));
rdoc.put(RDOC_DESCR, row->get(sf.cid2index(SA_DESCR)));
const TString descr_agg(row->get(sf.cid2index(F_DESCRAGG)));
const TString descr_agg(row->get(sf.cid2index(SA_DESCRAGG)));
if (descr_agg.full())
{
rdoc.put(RDOC_DESCLUNGA, "X");
rdoc.put(RDOC_DESCEST, descr_agg);
}
rdoc.put(RDOC_UMQTA, row->get(sf.cid2index(F_UM)));
rdoc.put(RDOC_UMQTA, row->get(sf.cid2index(SA_UM)));
rdoc.put(RDOC_QTA, qta);
rdoc.put(RDOC_DATACONS, datacons);
@ -1240,10 +1241,10 @@ void TCreazione_ordini::generate_orders()
for (int i = 0; i < 10 ; i++)
if (_userfld.row(i).full())
rdoc.put(_userfld.row(i), mask.get(F_USER1 + i));
rdoc.put(_userfld.row(i), mask.get(SA_USER1 + i));
rdoc.put(RDOC_CODAGG1, row->get(sf.cid2index(F_CODAGG1)));
rdoc.put(RDOC_CODAGG2, row->get(sf.cid2index(F_CODAGG2)));
rdoc.put(RDOC_CODAGG1, row->get(sf.cid2index(SA_CODAGG1)));
rdoc.put(RDOC_CODAGG2, row->get(sf.cid2index(SA_CODAGG2)));
}
}
}

View File

@ -132,7 +132,7 @@ void TListinoPs0816::import_listino(const TMask& m)
TRecord_text curr;
while (file.read(curr) == NOERR)
{
pi.setstatus(file.read_file()->tellg());
pi.setstatus((long)file.read_file()->tellg());
if (pi.iscancelled())
break;
codart = file.get_field(curr, "CODICE ARTICOLO");

View File

@ -3,6 +3,7 @@
#include <defmask.h>
#include <relation.h>
#include <reprint.h>
#include <sheet.h>
#include "ps0872.h"
#include "ps0872200a.h"

View File

@ -284,7 +284,7 @@ bool TImpPaghe::transfer()
TRecord_text curr;
while (_trasfile->read(curr) == NOERR)
{
pi.setstatus(_trasfile->read_file()->tellg());
pi.setstatus((long)_trasfile->read_file()->tellg());
TString impstr = curr.get(F_IMPORTO);
real importo(impstr);
importo = importo/100;

View File

@ -3,6 +3,7 @@
#include <defmask.h>
#include <relation.h>
#include <reprint.h>
#include <sheet.h>
#include "ps0920.h"
#include "ps0920100a.h"

View File

@ -467,17 +467,17 @@ void TClosure_msk::load_sheet()
FOR_EACH_TOKEN(rif, tok)
row.add(tok);
row.add(rec.get("S1"), s.cid2index(F_CODART));
row.add(rec.get("I1"), s.cid2index(F_PALET1));
row.add(rec.get("I2"), s.cid2index(F_SPEZZ1));
row.add(rec.get("I3"), s.cid2index(F_PALET2));
row.add(rec.get("I4"), s.cid2index(F_SPEZZ2));
row.add(rec.get("B0"), s.cid2index(F_SALDO));
row.add(rec.get("S6"), s.cid2index(F_LOTTO));
row.add(rec.get("D0"), s.cid2index(F_DATA));
row.add(rec.get("B1"), s.cid2index(F_EVASA));
row.add(rec.get("D1"), s.cid2index(F_DATEVAS));
row.add(rec.get("CODTAB"), s.cid2index(F_RECORD));
row.add(rec.get("S1"), s.cid2index(S_CODART));
row.add(rec.get("I1"), s.cid2index(S_PALET1));
row.add(rec.get("I2"), s.cid2index(S_SPEZZ1));
row.add(rec.get("I3"), s.cid2index(S_PALET2));
row.add(rec.get("I4"), s.cid2index(S_SPEZZ2));
row.add(rec.get("B0"), s.cid2index(S_SALDO));
row.add(rec.get("S6"), s.cid2index(S_LOTTO));
row.add(rec.get("D0"), s.cid2index(S_DATA));
row.add(rec.get("B1"), s.cid2index(S_EVASA));
row.add(rec.get("D1"), s.cid2index(S_DATEVAS));
row.add(rec.get("CODTAB"), s.cid2index(S_RECORD));
s.check_row(s.items()-1, 0x3); // Do outputs and checks
}
@ -498,9 +498,11 @@ bool TClosure_msk::chiudi_righe(TString_array& records, TLog_report& log)
const TDate datadoc = get(F_DATADOC);
int err = NOERR;
TLocalisamfile mmag(LF_TABMOD);
FOR_EACH_ARRAY_ROW(records, r, row) if (row->get_char(0) > ' ' && row->get_char(F_EVASA-101) > ' ')
TSheet_field& s = sfield(F_SHEET);
FOR_EACH_ARRAY_ROW(records, r, row) if (row->get_char(0) > ' ' && row->get_char(s.cid2index(S_EVASA)) > ' ')
{
const TString16 rec = row->get(F_RECORD-101);
const TString16 rec = row->get(s.cid2index(S_RECORD));
mmag.put("MOD", "PS");
mmag.put("CUST", 920);
mmag.put("COD", "MAG");
@ -525,25 +527,27 @@ bool TClosure_msk::chiudi_righe(TString_array& records, TLog_report& log)
bool TClosure_msk::evadi_ordine(TEvasione_mmag& jail, TToken_string& row, TLista_documenti& doc_in, TLista_documenti& doc_out, TLog_report& log)
{
TSheet_field& s = sfield(F_SHEET);
for (int scelta = 1; scelta <= 2; scelta++)
{
const int pall = row.get_int((scelta == 1 ? F_PALET1 : F_PALET2) - 101);
const int spez = row.get_int((scelta == 1 ? F_SPEZZ1 : F_SPEZZ2) - 101);
const int pezzi = row.get_int((scelta == 1 ? F_PEZZ1 : F_PEZZ2 ) - 101);
const int pall = row.get_int(s.cid2index(scelta == 1 ? S_PALET1 : S_PALET2));
const int spez = row.get_int(s.cid2index(scelta == 1 ? S_SPEZZ1 : S_SPEZZ2));
const int pezzi = row.get_int(s.cid2index(scelta == 1 ? S_PEZZ1 : S_PEZZ2 ));
bool sld = false;
if (row.get_char(F_SALDO - 101) > ' ')
if (row.get_char(s.cid2index(S_SALDO)) > ' ')
{
if (scelta == 1)
sld = row.get_int(F_PEZZ2 - 101) <= 0;
sld = row.get_int(s.cid2index(S_PEZZ2)) <= 0;
else
sld = pezzi > 0;
}
if (pezzi > 0 || sld)
{
const TString codart = row.get(F_CODART - 101);
const TString codart = row.get(S_CODART - 101);
const long codcf = atol(codart.left(3));
const int idriga = row.get_int(F_IDRIGA - 101);
const int lotto = row.get_long(F_LOTTO - 101);
const int idriga = row.get_int(S_IDRIGA - 101);
const int lotto = row.get_long(S_LOTTO - 101);
jail.evade(scelta, codart, idriga, pezzi, sld, lotto, pall, spez);
TString8 s, t;
@ -554,7 +558,7 @@ bool TClosure_msk::evadi_ordine(TEvasione_mmag& jail, TToken_string& row, TLista
const bool good = jail.elabora(doc_in, doc_out, get_date(F_DATADOC));
if (good)
{
row.add("X", F_EVASA-101);
row.add("X", S_EVASA-101);
}
else
{
@ -581,13 +585,15 @@ bool TClosure_msk::elabora(TString_array& records, TLog_report& log)
const long codcf = records.row(0).get_long(1);
const int indsped = records.row(0).get_int(2);
TSheet_field& s = sfield(F_SHEET);
TDocumento* mmag = NULL;
FOR_EACH_ARRAY_ROW(records, r, row)
FOR_EACH_ARRAY_ROW(records, r, row)
{
const char provv = 'D';
const int anno = row->get_int (F_ANNO -101);
const TString4 codnum = row->get (F_CODNUM-101);
const long ndoc = row->get_long(F_NDOC -101);
const int anno = row->get_int (s.cid2index(S_ANNO));
const TString4 codnum = row->get (s.cid2index(S_CODNUM));
const long ndoc = row->get_long(s.cid2index(S_NDOC));
if (!doc_in.find(provv, anno, codnum, ndoc))
{
if (mmag != NULL && doc_in.items())
@ -651,7 +657,7 @@ bool TClosure_msk::elabora()
{
TRecnotype c = 0;
TSheet_field&s = sfield(F_SHEET);
TSheet_field& s = sfield(F_SHEET);
FOR_EACH_SHEET_ROW(s, r1, row1)
c += row1->get_char(0) > ' ';
@ -666,8 +672,8 @@ bool TClosure_msk::elabora()
FOR_EACH_SHEET_ROW(s, r, row) if (row->get_char(0) > ' ')
{
const long codcf = row->get_long(s.cid2index(F_CLIFO));
const int indsped = row->get_int(s.cid2index(F_INDSPED));
const long codcf = row->get_long(s.cid2index(S_CLIFO));
const int indsped = row->get_int(s.cid2index(S_INDSPED));
if (codcf != last_cf || indsped != last_ind)
{
elabora(records, log);
@ -718,7 +724,7 @@ bool TClosure_msk::cancella()
// Elminazione su richiesta
if (k > 0 && noyes_box(FR("Confermare l'eliminazione di %ld record?"), k))
{
const int nRec = s.cid2index(F_RECORD);
const int nRec = s.cid2index(S_RECORD);
TLocalisamfile mmag(LF_TABMOD);
TString16 n;
FOR_EACH_SHEET_ROW(s, r2, row2) if (row2->starts_with("X"))
@ -744,15 +750,15 @@ bool TClosure_msk::salva()
{
int err = NOERR;
TSheet_field&s = sfield(F_SHEET);
TSheet_field& s = sfield(F_SHEET);
const int nRec = s.cid2index(F_RECORD);
const int nPa1 = s.cid2index(F_PALET1);
const int nSp1 = s.cid2index(F_SPEZZ1);
const int nPa2 = s.cid2index(F_PALET2);
const int nSp2 = s.cid2index(F_SPEZZ2);
const int nSld = s.cid2index(F_SALDO);
const int nLot = s.cid2index(F_LOTTO);
const int nRec = s.cid2index(S_RECORD);
const int nPa1 = s.cid2index(S_PALET1);
const int nSp1 = s.cid2index(S_SPEZZ1);
const int nPa2 = s.cid2index(S_PALET2);
const int nSp2 = s.cid2index(S_SPEZZ2);
const int nSld = s.cid2index(S_SALDO);
const int nLot = s.cid2index(S_LOTTO);
TLocalisamfile mmag(LF_TABMOD);
TString16 n;
@ -869,18 +875,18 @@ bool TClosure_msk::on_field_event(TOperable_field& o, TField_event e , long joll
enable(DLG_ELABORA, !one_empty);
}
break;
case F_PALET1:
case F_SPEZZ1:
case F_PALET2:
case F_SPEZZ2:
case S_PALET1:
case S_SPEZZ1:
case S_PALET2:
case S_SPEZZ2:
if (e == fe_modify || e == fe_init)
{
TMask& sm = o.mask();
const TRectype& art = cache().get(LF_ANAMAG, sm.get(F_CODART));
const TRectype& art = cache().get(LF_ANAMAG, sm.get(S_CODART));
const int pps = art.get_int(ANAMAG_PPCOLLO); // Pezzi per spezzone
const int ppp = art.get_int(ANAMAG_USER1) * art.get_int(ANAMAG_USER2) * pps; // Pezzi per pallet
const real peso = art.get(ANAMAG_PESO);
const int id = o.dlg() < F_PALET2 ? F_PALET1 : F_PALET2;
const int id = o.dlg() < S_PALET2 ? S_PALET1 : S_PALET2;
sm.set(id+2, sm.get_int(id)*ppp + sm.get_int(id+1)*pps);
sm.set(id+3, real(peso * sm.get_int(id+2)));
@ -888,8 +894,8 @@ bool TClosure_msk::on_field_event(TOperable_field& o, TField_event e , long joll
enable(DLG_SAVEREC, _dirty = true);
}
break;
case F_SALDO:
case F_LOTTO:
case S_SALDO:
case S_LOTTO:
if (e == fe_modify && !_dirty && is_running())
enable(DLG_SAVEREC, _dirty = true);
break;

View File

@ -139,41 +139,41 @@ ENDMASK
PAGE "Riga" -1 -1 75 12
BOOLEAN F_SELECT
BOOLEAN S_SELECT
BEGIN
PROMPT 1 1 "Selezione"
END
DATE F_DATA
DATE S_DATA
BEGIN
PROMPT 21 1 "Data "
FLAGS "D"
END
NUMBER F_RECORD 10
NUMBER S_RECORD 10
BEGIN
PROMPT 54 1 "Record "
FLAGS "DZ"
END
NUMBER F_CLIFO 6
NUMBER S_CLIFO 6
BEGIN
PROMPT 1 2 "Cliente "
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF F_CLIFO
OUTPUT F_RAGSOC RAGSOC
OUTPUT S_RAGSOC RAGSOC
CHECKTYPE REQUIRED
FLAGS "DG"
END
STRING F_RAGSOC 50
STRING S_RAGSOC 50
BEGIN
PROMPT 21 2 ""
FLAGS "D"
END
NUMBER F_INDSPED 3
NUMBER S_INDSPED 3
BEGIN
PROMPT 1 3 "Indirizzo "
/*
@ -186,43 +186,43 @@ BEGIN
FLAGS "DG"
END
STRING F_CODNUM 4
STRING S_CODNUM 4
BEGIN
PROMPT 1 4 "Ordine "
FLAGS "D"
END
NUMBER F_ANNO 4
NUMBER S_ANNO 4
BEGIN
PROMPT 17 4 ""
FLAGS "D"
END
NUMBER F_NDOC 7
NUMBER S_NDOC 7
BEGIN
PROMPT 23 4 ""
FLAGS "D"
END
NUMBER F_IDRIGA 4
NUMBER S_IDRIGA 4
BEGIN
PROMPT 33 4 "Riga "
FLAGS "D"
END
BOOLEAN F_EVASA
BOOLEAN S_EVASA
BEGIN
PROMPT 48 4 "Evasa il"
FLAGS "D"
END
DATE F_DATEVAS
DATE S_DATEVAS
BEGIN
PROMPT 61 4 ""
FLAGS "D"
END
STRING F_CODART 20
STRING S_CODART 20
BEGIN
PROMPT 1 6 "Articolo "
USE LF_ANAMAG
@ -232,7 +232,7 @@ BEGIN
FLAGS "DG"
END
STRING F_DESCR 50
STRING S_DESCR 50
BEGIN
PROMPT 10 7 ""
FLAGS "D"
@ -263,37 +263,37 @@ BEGIN
PROMPT 1 9 "@bI scelta"
END
NUMBER F_LOTTO 5
NUMBER S_LOTTO 5
BEGIN
PROMPT 51 8 "Lotto "
END
NUMERO F_PALET1 3
NUMERO S_PALET1 3
BEGIN
PROMPT 11 9 ""
FLAGS "U"
END
NUMERO F_SPEZZ1 3
NUMERO S_SPEZZ1 3
BEGIN
PROMPT 21 9 ""
FLAGS "U"
END
NUMERO F_PEZZ1 7
NUMERO S_PEZZ1 7
BEGIN
PROMPT 31 9 ""
FLAGS "D"
END
NUMERO F_PESO1 7
NUMERO S_PESO1 7
BEGIN
PROMPT 41 9 ""
FLAGS "D"
END
BOOLEAN F_SALDO
BOOLEAN S_SALDO
BEGIN
PROMPT 51 9 "Saldo"
END
@ -303,25 +303,25 @@ BEGIN
PROMPT 1 10 "@bII scelta"
END
NUMERO F_PALET2 3
NUMERO S_PALET2 3
BEGIN
PROMPT 11 10 ""
FLAGS "U"
END
NUMERO F_SPEZZ2 3
NUMERO S_SPEZZ2 3
BEGIN
PROMPT 21 10 ""
FLAGS "U"
END
NUMERO F_PEZZ2 7
NUMERO S_PEZZ2 7
BEGIN
PROMPT 31 10 ""
FLAGS "D"
END
NUMERO F_PESO2 7
NUMERO S_PESO2 7
BEGIN
PROMPT 41 10 ""
FLAGS "D"

View File

@ -95,7 +95,7 @@ void TLis2fil::import(const TString& filename)
TRecord_text curr;
while (trasfile.read(curr) == NOERR)
{
pi.setstatus(trasfile.read_file()->tellg());
pi.setstatus((long)trasfile.read_file()->tellg());
trasfile.autosave(rel, curr);
trasfile.save_price(curr, _um);
}

View File

@ -1,16 +1,16 @@
#include <xvt.h>
#include "pt0001.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
default:
pt0001100(argc, argv); break; // settaggio clienti non in allegato
}
exit(0);
return 0;
#include <xvt.h>
#include "pt0001.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
default:
pt0001100(argc, argv); break; // settaggio clienti non in allegato
}
exit(0);
return 0;
}

View File

@ -1 +1 @@
int pt0001100(int argc, char* argv[]);
int pt0001100(int argc, char* argv[]);

View File

@ -1,60 +1,60 @@
#include <applicat.h>
#include <config.h>
#include <execp.h>
#include <progind.h>
#include <utility.h>
#include "clifo.h"
//----------------------------------
// TSkeleton_application
//----------------------------------
class TClienti0001 : public TSkeleton_application
{
virtual const char * extra_modules() const {return "ba";}
protected:
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
TClienti0001() {}
};
TClienti0001& app() { return (TClienti0001&) main_app(); }
bool TClienti0001::create()
{
return TSkeleton_application::create();
}
bool TClienti0001::destroy()
{
return TApplication::destroy();
}
void TClienti0001::main_loop()
{
TCursor clienti(new TRelation(LF_CLIENTI));
TRectype from(clienti.curr());
from.put(CF_TIPOCF, 'C');
clienti.setregion(from, from);
for (clienti = 0L; clienti.pos() < items; ++clienti)
{
clienti.curr().put(CF_ALLEG, '6');
clienti.curr().rewrite();
}
}
int pt0001100 (int argc, char* argv[])
{
TClienti0001 main_app;
main_app.run(argc, argv, TR("Settaggio clienti non in allegato"));
return TRUE;
}
#include <applicat.h>
#include <config.h>
#include <execp.h>
#include <progind.h>
#include <utility.h>
#include "clifo.h"
//----------------------------------
// TSkeleton_application
//----------------------------------
class TClienti0001 : public TSkeleton_application
{
virtual const char * extra_modules() const {return "ba";}
protected:
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
TClienti0001() {}
};
TClienti0001& app() { return (TClienti0001&) main_app(); }
bool TClienti0001::create()
{
return TSkeleton_application::create();
}
bool TClienti0001::destroy()
{
return TApplication::destroy();
}
void TClienti0001::main_loop()
{
TCursor clienti(new TRelation(LF_CLIENTI));
TRectype from(clienti.curr());
from.put(CF_TIPOCF, 'C');
clienti.setregion(from, from);
for (clienti = 0L; clienti.pos() < items; ++clienti)
{
clienti.curr().put(CF_ALLEG, '6');
clienti.curr().rewrite();
}
}
int pt0001100 (int argc, char* argv[])
{
TClienti0001 main_app;
main_app.run(argc, argv, TR("Settaggio clienti non in allegato"));
return TRUE;
}

View File

@ -1,58 +1,58 @@
#include <applicat.h>
#include <config.h>
#include <execp.h>
#include <progind.h>
#include <relation.h>
#include <utility.h>
#include "clifo.h"
//----------------------------------
// TSkeleton_application
//----------------------------------
class TClienti0001 : public TSkeleton_application
{
virtual const char * extra_modules() const {return "ba";}
protected:
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
TClienti0001() {}
};
TClienti0001& app() { return (TClienti0001&) main_app(); }
bool TClienti0001::create()
{
return TSkeleton_application::create();
}
bool TClienti0001::destroy()
{
return TApplication::destroy();
}
void TClienti0001::main_loop()
{
TCursor clienti(new TRelation(LF_CLIFO));
TRectype from(clienti.curr());
from.put(CLI_TIPOCF, 'C');
clienti.setregion(from, from);
const long items = clienti.items();
for (clienti = 0L; clienti.pos() < items; ++clienti)
{
clienti.curr().put(CLI_ALLEG, '6');
clienti.file().rewrite();
}
}
int pt0001100 (int argc, char* argv[])
{
TClienti0001 main_app;
main_app.run(argc, argv, TR("Settaggio clienti non in allegato"));
return TRUE;
}
#include <applicat.h>
#include <config.h>
#include <execp.h>
#include <progind.h>
#include <relation.h>
#include <utility.h>
#include "clifo.h"
//----------------------------------
// TSkeleton_application
//----------------------------------
class TClienti0001 : public TSkeleton_application
{
virtual const char * extra_modules() const {return "ba";}
protected:
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
TClienti0001() {}
};
TClienti0001& app() { return (TClienti0001&) main_app(); }
bool TClienti0001::create()
{
return TSkeleton_application::create();
}
bool TClienti0001::destroy()
{
return TApplication::destroy();
}
void TClienti0001::main_loop()
{
TCursor clienti(new TRelation(LF_CLIFO));
TRectype from(clienti.curr());
from.put(CLI_TIPOCF, 'C');
clienti.setregion(from, from);
const long items = clienti.items();
for (clienti = 0L; clienti.pos() < items; ++clienti)
{
clienti.curr().put(CLI_ALLEG, '6');
clienti.file().rewrite();
}
}
int pt0001100 (int argc, char* argv[])
{
TClienti0001 main_app;
main_app.run(argc, argv, TR("Settaggio clienti non in allegato"));
return TRUE;
}

View File

@ -1,16 +1,16 @@
#include <xvt.h>
#include "pt0002.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
default:
pt0002100(argc, argv); break; //importazione di clienti/fornitori da file CSV
}
exit(0);
return 0;
#include <xvt.h>
#include "pt0002.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
default:
pt0002100(argc, argv); break; //importazione di clienti/fornitori da file CSV
}
exit(0);
return 0;
}

View File

@ -1 +1 @@
int pt0002100(int argc, char* argv[]);
int pt0002100(int argc, char* argv[]);

View File

@ -1,478 +1,478 @@
#include <applicat.h>
#include <automask.h>
#include <progind.h>
#include <reputils.h>
#include <utility.h>
#include <relation.h>
#include <textset.h>
#include <reprint.h>
#include "pt0002.h"
#include "pt0002100a.h"
#include "../cg/cglib01.h"
#include "clifo.h"
#include "comuni.h"
///////////////////////////////////////////////////////////
// TClient_textset
///////////////////////////////////////////////////////////
class TClifo_recset : public TCSV_recordset
{
TAssoc_array _index;
protected:
virtual TRecnotype new_rec(const char* buf = NULL);
public:
const TString& rag_sociale() const;
TClifo_recset(const char * query);
};
TRecnotype TClifo_recset::new_rec(const char* buf)
{
TToken_string str(256,'\t'); //nuovo record tab separator
if(buf && *buf)
{
bool apici=false;
for (const char* c = buf; *c ; c++)
{
if (*c == '"')
{
apici = !apici;
}
else
{
if (*c == ',')
{
if (!apici)
str << str.separator();
else
str << *c;
}
else
str << *c;
}
}
}
const TRecnotype n = TText_recordset::new_rec(str);
if (n >= 0)
row(n).separator(str.separator());
return n;
}
//funzione che crea il campo ragione sociale dai primi 2 campi del file csv
const TString& TClifo_recset::rag_sociale() const
{
const TString& nome = get(1).as_string();
TString ragsoc = get(0).as_string();
if (nome.full())
{
ragsoc.cut(30);
ragsoc.left_just(30);
ragsoc << nome;
}
ragsoc.cut(50);
return get_tmp_string() = ragsoc;
}
TClifo_recset::TClifo_recset(const char * fileName)
: TCSV_recordset("CSV(,)\n")
{
load_file(fileName);
}
///////////////////////////////////////////////////////////
// TAutomask
///////////////////////////////////////////////////////////
class TImportaClifo_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TImportaClifo_mask();
};
TImportaClifo_mask::TImportaClifo_mask() :TAutomask ("pt0002100a")
{
}
bool TImportaClifo_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
switch (f.dlg())
{
//giochetto per avere la lista dei files validi nella directory di trasferimento!
case F_NAME:
if (e == fe_button)
{
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"),
"File@32");
TFilename path = get(F_PATH);
path.add("*.csv"); //files delle testate
list_files(path, as.rows_array());
TFilename name;
FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
{
name = *row;
*row = name.name();
}
if (as.run() == K_ENTER)
{
f.set(as.row(as.selected()));
}
}
break;
default:
break;
}
return true;
}
///////////////////////////////////////
// TSkeleton_application
///////////////////////////////////////
class TClifoCSV : public TSkeleton_application
{
virtual bool check_autorization() const {return false;}
virtual const char * extra_modules() const {return "ve";}
TImportaClifo_mask* _msk;
TConfig* _configfile;
protected:
long find_clifo(const char tipo, const TString& cofi, const TString& paiv, const TString& ragsoc) const;
bool safe_put(TLocalisamfile& clienti, const char* field, const char* val) const;
long find_last_clifo(const char tipo) const;
void pulisci_cap(TString& cap) const;
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
virtual void ini2mask();
virtual void mask2ini();
bool transfer(const TFilename& file);
TClifoCSV() {};
};
TClifoCSV& app() { return (TClifoCSV&) main_app(); }
/////////////////////////////////
// ricerca clifo
/////////////////////////////////
//funzione che ricerca un cliente o un fornitore nel file clifo di campo
//restituisce 0 (zero) se non lo trova, se no cerca il più simile possibile
long TClifoCSV::find_clifo(const char tipo, const TString& cofi, const TString& paiv, const TString& ragsoc) const
{
long found=0;
TRelation clifo(LF_CLIFO);
TRectype& rec = clifo.curr();
TString up_ragsoc = ragsoc;
up_ragsoc.upper();
for (int key = 4; key<=5 && !found; key++)
{
bool good_key = false; // Assumiamo che la chiave sia icompleta
rec.zero();
rec.put(CLI_TIPOCF,tipo);
switch (key)
{
case 4: rec.put(CLI_COFI,cofi); good_key = cofi.full(); break;
case 5: rec.put(CLI_PAIV,paiv); good_key = paiv.full(); break;
default: break;
}
if (good_key) // Se la chiave e' completa ... cerco bene
{
TCursor cur(&clifo,"", key, &rec, &rec);
const TRecnotype items = cur.items();
if (items > 0)
{
double best = -1;
TString80 cur_ragsoc;
cur.freeze();
for (cur=0; cur.pos() < items; ++cur)
{
cur_ragsoc = rec.get(CLI_RAGSOC);
cur_ragsoc.upper();
// funzione che mi dice quanto due stringhe si assomiglino
const double var = xvt_str_fuzzy_compare(up_ragsoc, cur_ragsoc);
if (var > best)
{
best = var;
found = rec.get_long(CLI_CODCF);
}
}
}
}
}
return found;
}
/////////////////////////////////
// aggiornamento clifo
/////////////////////////////////
//funzione che effettua la put solo se non cerco di inserire un campo vuoto
bool TClifoCSV::safe_put(TLocalisamfile& file, const char* field, const char* val) const
{
const bool ok = val && *val;
if (ok)
file.put(field, val);
return ok;
}
//funzione che trova il primo codice libero di un cliento o di un fornitore
long TClifoCSV::find_last_clifo(const char tipo) const
{
TLocalisamfile clifo(LF_CLIFO);
long codcf = 1L ;
if (tipo == 'C')
{
clifo.put(CLI_TIPOCF, 'F');
if (clifo.read(_isgteq) == NOERR)
clifo.prev();
else
clifo.last();
if (clifo.get_char(CLI_TIPOCF) == 'C')
codcf += clifo.get_long(CLI_CODCF);
}
else
{
clifo.last();
if (clifo.get_char(CLI_TIPOCF) == 'F')
codcf+=clifo.get_long(CLI_CODCF);
}
return codcf;
}
void TClifoCSV::pulisci_cap(TString& cap) const
{
TString8 str;
for (int i = 0; cap[i] && str.len() < 5; i++)
if (isdigit(cap[i]))
str << cap[i];
cap = str;
}
bool TClifoCSV::transfer(const TFilename& file)
{
const char tipo = _msk->get(F_TIPO)[0];
const char* head = tipo == 'C' ? TR("Trasferimento clienti") : TR("Trasferimento fornitori");
TLog_report log(head);
TClifo_recset s(file);
TLocalisamfile clifo(LF_CLIFO);
TProgind pi(s.items(),head,true,true);
for (bool ok=s.move_first();ok;ok=s.move_next())
{
if (!pi.addstatus(1))
break;
const TString ragsoc = s.rag_sociale();
if (ragsoc.full())
{
const TString16 cofi = s.get(2).as_string(); //get da file del cod. fisc.
const TString16 paiv = s.get(3).as_string(); //get da file della p. iva
const long var = find_clifo(tipo,cofi,paiv,ragsoc); //controllo se il clifo esiste già
clifo.zero();
clifo.put(CLI_TIPOCF, tipo);
if (var)
{
//se esiste leggo il record corrispondente
clifo.put(CLI_CODCF,var);
clifo.read();
}
else
{
//se no ne creo uno nuovo
long codcf = find_last_clifo(tipo);
clifo.put(CLI_CODCF, codcf);
}
safe_put(clifo, CLI_RAGSOC, ragsoc); //ragsoc
if (!var)
safe_put(clifo, CLI_TIPOAPER, s.get(1).is_empty() ? "G" : "F");
safe_put(clifo, CLI_PAIV, paiv); //p.iva
safe_put(clifo, CLI_COFI, cofi); //cod. fisc.
safe_put(clifo, CLI_INDCF, s.get(4).as_string()); //indirizzo
safe_put(clifo, CLI_CIVCF, s.get(5).as_string()); //num. civico
if (s.get(6).as_string().empty()) //italiano
{
TString cap = s.get(9).as_string();
pulisci_cap(cap);
TString80 comune = s.get(11).as_string(); //comune o localita'
comune.trim();
safe_put(clifo, CLI_CAPCF, cap); //cap
const TString& codcom = cap2comune(cap, comune);
if (codcom.blank())
{
if (s.get(10).as_string().full())
comune << " (" << s.get(10).as_string() << ')'; //inserisce la località se non trova un comune
safe_put(clifo, CLI_LOCCF, comune);
}
else
safe_put(clifo, CLI_COMCF, codcom);
}
else
{
TString comune = s.get(7).as_string();
comune << ", " << s.get(8).as_string() << '(' << s.get(6).as_string() <<')'; //inserisce la località estera
safe_put(clifo, CLI_LOCCF, comune);
if (!var)
safe_put(clifo, CLI_ALLEG, "5"); // Cliente/Fornitore Estero
}
const char* tp = tipo == 'C' ? TR("Cliente") : TR("Fornitore");
TString str;
str << "Il "<< tp << " codice (" << clifo.get(CLI_CODCF) <<") " << ragsoc << " ";
if (var)
{
const int err = clifo.rewrite();
if (err == NOERR)
{
str << "è stato aggiornato";
log.log(0, str);
}
else
{
str << "NON è stato aggiornato. Errore " << err;
log.log(2, str);
}
}
else
{
const int err = clifo.write();
if (err == NOERR)
{
str << "è stato inserito";
log.log(0, str);
}
else
{
str << "NON è stato inserito. Errore " << err;
log.log(2, str);
}
}
if (cofi.empty() && paiv.empty())
{
TString str;
str << "Il " << tp << ' ' << ragsoc << " non ha nè CODICE FISCALE nè PARTITA IVA";
log.log(1, str);
}
}
}
TReport_book buc;
buc.add(log);
buc.preview();
return true;
}
void TClifoCSV::mask2ini()
{
//carica i parametri del file di configurazione
_configfile->set_paragraph("MAIN");
for (int i = 0; i < _msk->fields() ; i++)
{
TMask_field& f = _msk->fld(i);
const TFieldref* fr = f.field();
if (fr != NULL)
_configfile->set(fr->name(), f.get());
}
}
void TClifoCSV::ini2mask()
{
//carica i parametri del file di configurazione
_configfile->set_paragraph("MAIN");
for (int i = 0; i < _msk->fields() ; i++)
{
TMask_field& f = _msk->fld(i);
const TFieldref* fr = f.field();
if (fr != NULL)
f.set(_configfile->get(fr->name()));
}
}
bool TClifoCSV::create()
{
_configfile = new TConfig("pt0002conf.ini");
_msk = new TImportaClifo_mask();
return TSkeleton_application::create();
}
bool TClifoCSV::destroy()
{
delete _msk;
delete _configfile;
return TApplication::destroy();
}
void TClifoCSV::main_loop()
{
KEY tasto;
ini2mask();
tasto = _msk->run();
if (tasto == K_ENTER)
{
mask2ini();
//genero il nome del file da caricare
TFilename name = _msk->get(F_PATH);
name.add(_msk->get(F_NAME));
if (transfer(name))
{
message_box(TR("Importazione documenti completata"));
}
}
}
int pt0002100 (int argc, char* argv[])
{
TClifoCSV main_app;
main_app.run(argc, argv, TR("Importazione Clienti/Fornitori"));
return true;
}
#include <applicat.h>
#include <automask.h>
#include <progind.h>
#include <reputils.h>
#include <utility.h>
#include <relation.h>
#include <textset.h>
#include <reprint.h>
#include "pt0002.h"
#include "pt0002100a.h"
#include "../cg/cglib01.h"
#include "clifo.h"
#include "comuni.h"
///////////////////////////////////////////////////////////
// TClient_textset
///////////////////////////////////////////////////////////
class TClifo_recset : public TCSV_recordset
{
TAssoc_array _index;
protected:
virtual TRecnotype new_rec(const char* buf = NULL);
public:
const TString& rag_sociale() const;
TClifo_recset(const char * query);
};
TRecnotype TClifo_recset::new_rec(const char* buf)
{
TToken_string str(256,'\t'); //nuovo record tab separator
if(buf && *buf)
{
bool apici=false;
for (const char* c = buf; *c ; c++)
{
if (*c == '"')
{
apici = !apici;
}
else
{
if (*c == ',')
{
if (!apici)
str << str.separator();
else
str << *c;
}
else
str << *c;
}
}
}
const TRecnotype n = TText_recordset::new_rec(str);
if (n >= 0)
row(n).separator(str.separator());
return n;
}
//funzione che crea il campo ragione sociale dai primi 2 campi del file csv
const TString& TClifo_recset::rag_sociale() const
{
const TString& nome = get(1).as_string();
TString ragsoc = get(0).as_string();
if (nome.full())
{
ragsoc.cut(30);
ragsoc.left_just(30);
ragsoc << nome;
}
ragsoc.cut(50);
return get_tmp_string() = ragsoc;
}
TClifo_recset::TClifo_recset(const char * fileName)
: TCSV_recordset("CSV(,)\n")
{
load_file(fileName);
}
///////////////////////////////////////////////////////////
// TAutomask
///////////////////////////////////////////////////////////
class TImportaClifo_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TImportaClifo_mask();
};
TImportaClifo_mask::TImportaClifo_mask() :TAutomask ("pt0002100a")
{
}
bool TImportaClifo_mask::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
switch (f.dlg())
{
//giochetto per avere la lista dei files validi nella directory di trasferimento!
case F_NAME:
if (e == fe_button)
{
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"),
"File@32");
TFilename path = get(F_PATH);
path.add("*.csv"); //files delle testate
list_files(path, as.rows_array());
TFilename name;
FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
{
name = *row;
*row = name.name();
}
if (as.run() == K_ENTER)
{
f.set(as.row(as.selected()));
}
}
break;
default:
break;
}
return true;
}
///////////////////////////////////////
// TSkeleton_application
///////////////////////////////////////
class TClifoCSV : public TSkeleton_application
{
virtual bool check_autorization() const {return false;}
virtual const char * extra_modules() const {return "ve";}
TImportaClifo_mask* _msk;
TConfig* _configfile;
protected:
long find_clifo(const char tipo, const TString& cofi, const TString& paiv, const TString& ragsoc) const;
bool safe_put(TLocalisamfile& clienti, const char* field, const char* val) const;
long find_last_clifo(const char tipo) const;
void pulisci_cap(TString& cap) const;
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
virtual void ini2mask();
virtual void mask2ini();
bool transfer(const TFilename& file);
TClifoCSV() {};
};
TClifoCSV& app() { return (TClifoCSV&) main_app(); }
/////////////////////////////////
// ricerca clifo
/////////////////////////////////
//funzione che ricerca un cliente o un fornitore nel file clifo di campo
//restituisce 0 (zero) se non lo trova, se no cerca il più simile possibile
long TClifoCSV::find_clifo(const char tipo, const TString& cofi, const TString& paiv, const TString& ragsoc) const
{
long found=0;
TRelation clifo(LF_CLIFO);
TRectype& rec = clifo.curr();
TString up_ragsoc = ragsoc;
up_ragsoc.upper();
for (int key = 4; key<=5 && !found; key++)
{
bool good_key = false; // Assumiamo che la chiave sia icompleta
rec.zero();
rec.put(CLI_TIPOCF,tipo);
switch (key)
{
case 4: rec.put(CLI_COFI,cofi); good_key = cofi.full(); break;
case 5: rec.put(CLI_PAIV,paiv); good_key = paiv.full(); break;
default: break;
}
if (good_key) // Se la chiave e' completa ... cerco bene
{
TCursor cur(&clifo,"", key, &rec, &rec);
const TRecnotype items = cur.items();
if (items > 0)
{
double best = -1;
TString80 cur_ragsoc;
cur.freeze();
for (cur=0; cur.pos() < items; ++cur)
{
cur_ragsoc = rec.get(CLI_RAGSOC);
cur_ragsoc.upper();
// funzione che mi dice quanto due stringhe si assomiglino
const double var = xvt_str_fuzzy_compare(up_ragsoc, cur_ragsoc);
if (var > best)
{
best = var;
found = rec.get_long(CLI_CODCF);
}
}
}
}
}
return found;
}
/////////////////////////////////
// aggiornamento clifo
/////////////////////////////////
//funzione che effettua la put solo se non cerco di inserire un campo vuoto
bool TClifoCSV::safe_put(TLocalisamfile& file, const char* field, const char* val) const
{
const bool ok = val && *val;
if (ok)
file.put(field, val);
return ok;
}
//funzione che trova il primo codice libero di un cliento o di un fornitore
long TClifoCSV::find_last_clifo(const char tipo) const
{
TLocalisamfile clifo(LF_CLIFO);
long codcf = 1L ;
if (tipo == 'C')
{
clifo.put(CLI_TIPOCF, 'F');
if (clifo.read(_isgteq) == NOERR)
clifo.prev();
else
clifo.last();
if (clifo.get_char(CLI_TIPOCF) == 'C')
codcf += clifo.get_long(CLI_CODCF);
}
else
{
clifo.last();
if (clifo.get_char(CLI_TIPOCF) == 'F')
codcf+=clifo.get_long(CLI_CODCF);
}
return codcf;
}
void TClifoCSV::pulisci_cap(TString& cap) const
{
TString8 str;
for (int i = 0; cap[i] && str.len() < 5; i++)
if (isdigit(cap[i]))
str << cap[i];
cap = str;
}
bool TClifoCSV::transfer(const TFilename& file)
{
const char tipo = _msk->get(F_TIPO)[0];
const char* head = tipo == 'C' ? TR("Trasferimento clienti") : TR("Trasferimento fornitori");
TLog_report log(head);
TClifo_recset s(file);
TLocalisamfile clifo(LF_CLIFO);
TProgind pi(s.items(),head,true,true);
for (bool ok=s.move_first();ok;ok=s.move_next())
{
if (!pi.addstatus(1))
break;
const TString ragsoc = s.rag_sociale();
if (ragsoc.full())
{
const TString16 cofi = s.get(2).as_string(); //get da file del cod. fisc.
const TString16 paiv = s.get(3).as_string(); //get da file della p. iva
const long var = find_clifo(tipo,cofi,paiv,ragsoc); //controllo se il clifo esiste già
clifo.zero();
clifo.put(CLI_TIPOCF, tipo);
if (var)
{
//se esiste leggo il record corrispondente
clifo.put(CLI_CODCF,var);
clifo.read();
}
else
{
//se no ne creo uno nuovo
long codcf = find_last_clifo(tipo);
clifo.put(CLI_CODCF, codcf);
}
safe_put(clifo, CLI_RAGSOC, ragsoc); //ragsoc
if (!var)
safe_put(clifo, CLI_TIPOAPER, s.get(1).is_empty() ? "G" : "F");
safe_put(clifo, CLI_PAIV, paiv); //p.iva
safe_put(clifo, CLI_COFI, cofi); //cod. fisc.
safe_put(clifo, CLI_INDCF, s.get(4).as_string()); //indirizzo
safe_put(clifo, CLI_CIVCF, s.get(5).as_string()); //num. civico
if (s.get(6).as_string().empty()) //italiano
{
TString cap = s.get(9).as_string();
pulisci_cap(cap);
TString80 comune = s.get(11).as_string(); //comune o localita'
comune.trim();
safe_put(clifo, CLI_CAPCF, cap); //cap
const TString& codcom = cap2comune(cap, comune);
if (codcom.blank())
{
if (s.get(10).as_string().full())
comune << " (" << s.get(10).as_string() << ')'; //inserisce la località se non trova un comune
safe_put(clifo, CLI_LOCCF, comune);
}
else
safe_put(clifo, CLI_COMCF, codcom);
}
else
{
TString comune = s.get(7).as_string();
comune << ", " << s.get(8).as_string() << '(' << s.get(6).as_string() <<')'; //inserisce la località estera
safe_put(clifo, CLI_LOCCF, comune);
if (!var)
safe_put(clifo, CLI_ALLEG, "5"); // Cliente/Fornitore Estero
}
const char* tp = tipo == 'C' ? TR("Cliente") : TR("Fornitore");
TString str;
str << "Il "<< tp << " codice (" << clifo.get(CLI_CODCF) <<") " << ragsoc << " ";
if (var)
{
const int err = clifo.rewrite();
if (err == NOERR)
{
str << "è stato aggiornato";
log.log(0, str);
}
else
{
str << "NON è stato aggiornato. Errore " << err;
log.log(2, str);
}
}
else
{
const int err = clifo.write();
if (err == NOERR)
{
str << "è stato inserito";
log.log(0, str);
}
else
{
str << "NON è stato inserito. Errore " << err;
log.log(2, str);
}
}
if (cofi.empty() && paiv.empty())
{
TString str;
str << "Il " << tp << ' ' << ragsoc << " non ha nè CODICE FISCALE nè PARTITA IVA";
log.log(1, str);
}
}
}
TReport_book buc;
buc.add(log);
buc.preview();
return true;
}
void TClifoCSV::mask2ini()
{
//carica i parametri del file di configurazione
_configfile->set_paragraph("MAIN");
for (int i = 0; i < _msk->fields() ; i++)
{
TMask_field& f = _msk->fld(i);
const TFieldref* fr = f.field();
if (fr != NULL)
_configfile->set(fr->name(), f.get());
}
}
void TClifoCSV::ini2mask()
{
//carica i parametri del file di configurazione
_configfile->set_paragraph("MAIN");
for (int i = 0; i < _msk->fields() ; i++)
{
TMask_field& f = _msk->fld(i);
const TFieldref* fr = f.field();
if (fr != NULL)
f.set(_configfile->get(fr->name()));
}
}
bool TClifoCSV::create()
{
_configfile = new TConfig("pt0002conf.ini");
_msk = new TImportaClifo_mask();
return TSkeleton_application::create();
}
bool TClifoCSV::destroy()
{
delete _msk;
delete _configfile;
return TApplication::destroy();
}
void TClifoCSV::main_loop()
{
KEY tasto;
ini2mask();
tasto = _msk->run();
if (tasto == K_ENTER)
{
mask2ini();
//genero il nome del file da caricare
TFilename name = _msk->get(F_PATH);
name.add(_msk->get(F_NAME));
if (transfer(name))
{
message_box(TR("Importazione documenti completata"));
}
}
}
int pt0002100 (int argc, char* argv[])
{
TClifoCSV main_app;
main_app.run(argc, argv, TR("Importazione Clienti/Fornitori"));
return true;
}

View File

@ -1,7 +1,7 @@
// campi della maschera pt002100a Importazione Clienti/Fornitori da file CSV
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_PATH 103
#define F_NAME 104
#define F_TIPO 105
// campi della maschera pt002100a Importazione Clienti/Fornitori da file CSV
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_PATH 103
#define F_NAME 104
#define F_TIPO 105

View File

@ -1,67 +1,67 @@
#include "pt0002100a.h"
PAGE "Importazione clienti/fornitori da file" -1 -1 78 12
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 2 1 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 2 "Codice "
FLAGS "FD"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 23 2 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 76 4
BEGIN
PROMPT 2 4 "@bSorgente"
END
STRING F_PATH 256 39
BEGIN
PROMPT 3 5 "Cartella "
DSELECT
CHECKTYPE REQUIRED
FIELD ClifoInPath
END
STRING F_NAME 18
BEGIN
PROMPT 3 6 "File "
FIELD ClifoInFile
END
RADIOBUTTON F_TIPO 1 32
BEGIN
PROMPT 2 8 "@bDati da Importare"
ITEM "C|Clienti"
ITEM "F|Fornitori"
FLAGS "Z"
END
BUTTON DLG_ELABORA 10 2
BEGIN
PROMPT -12 -1 ""
PICTURE BMP_ELABORA
MESSAGE EXIT,K_ENTER
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
#include "pt0002100a.h"
PAGE "Importazione clienti/fornitori da file" -1 -1 78 12
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 2 1 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 2 "Codice "
FLAGS "FD"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 23 2 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 76 4
BEGIN
PROMPT 2 4 "@bSorgente"
END
STRING F_PATH 256 39
BEGIN
PROMPT 3 5 "Cartella "
DSELECT
CHECKTYPE REQUIRED
FIELD ClifoInPath
END
STRING F_NAME 18
BEGIN
PROMPT 3 6 "File "
FIELD ClifoInFile
END
RADIOBUTTON F_TIPO 1 32
BEGIN
PROMPT 2 8 "@bDati da Importare"
ITEM "C|Clienti"
ITEM "F|Fornitori"
FLAGS "Z"
END
BUTTON DLG_ELABORA 10 2
BEGIN
PROMPT -12 -1 ""
PICTURE BMP_ELABORA
MESSAGE EXIT,K_ENTER
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

View File

@ -1,6 +1,6 @@
[MAIN]
CODDITTA =
RAGSOC =
PATH =
NAME =
[MAIN]
CODDITTA =
RAGSOC =
PATH =
NAME =
TIPO =

View File

@ -1,16 +1,16 @@
#include <xvt.h>
#include "pt0003.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
default:
pt0003100(argc, argv); break; // Incasso fatture
}
exit(0);
return 0;
#include <xvt.h>
#include "pt0003.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
default:
pt0003100(argc, argv); break; // Incasso fatture
}
exit(0);
return 0;
}

View File

@ -1 +1 @@
int pt0003100(int argc, char* argv[]);
int pt0003100(int argc, char* argv[]);

View File

@ -1,266 +1,268 @@
#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <progind.h>
#include "../ve/velib.h"
#include <doc.h>
#include <rdoc.h>
#include "pt0003.h"
#include "pt0003100a.h"
class TMaskPt00031 : public TAutomask
{
TCursor * _cur;
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
bool on_sheet_event(TOperable_field& o, TField_event e, long jolly);
void update_sheet();
void update_pagato(real & totale);
void update_total();
public:
TCursor & cursor() const { return *_cur;}
TMaskPt00031();
virtual ~TMaskPt00031();
};
TMaskPt00031::TMaskPt00031()
: TAutomask("pt0003100a")
{
TRelation * r = new TRelation(LF_DOC);
r->file().set_curr(new TDocumento);
_cur = new TCursor(r, "", 2);
((TButton_field&) field(DLG_SAVEREC)).set_exit_key(K_ENTER);
}
TMaskPt00031::~TMaskPt00031()
{
delete _cur;
}
bool TMaskPt00031::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
const int id = o.dlg();
switch (id)
{
case F_TOTPAGATO:
if (e == fe_modify )
{
real totpagato = o.mask().get_real(F_TOTPAGATO);
update_pagato(totpagato);
}
break;
case F_NUM:
if (e == fe_modify || e == fe_init)
update_sheet();
break;
case F_ANNO:
case F_CODCLI:
if (e == fe_modify)
update_sheet();
break;
case F_SHEET:
return on_sheet_event(o, e, jolly);
break;
default:
if (jolly > 0)
return on_sheet_event(o, e, jolly);
break;
}
return true;
}
void TMaskPt00031::update_total()
{
real tot;
TSheet_field& s = sfield(F_SHEET);
const int postot = s.cid2index(F_PAGATO);
FOR_EACH_SHEET_ROW_BACK(s, r, row)
tot += real(row->get(postot));
set(F_TOTPAGATO, tot);
}
bool TMaskPt00031::on_sheet_event(TOperable_field& o, TField_event e, long jolly)
{
TMask& m = o.mask();
switch (o.dlg())
{
case F_PAGATO:
if (e == fe_modify)
update_total();
break;
case F_PAGA:
if (e == fe_button)
{
TMask& m = o.mask();
if (m.get_real(F_PAGATO).is_zero())
m.set(F_PAGATO, m.get(F_DAPAGARE));
else
m.reset(F_PAGATO);
TSheet_field & s = *m.get_sheet();
const int r = s.selected();
s.row(r).add(m.get(F_PAGATO), 0);
s.force_update(r);
update_total();
}
break;
case F_SHEET:
switch(e)
{
case se_query_add:
return false;
case se_notify_modify:
update_total();
break;
default:
break;
}
default:
break;
}
return true;
}
void TMaskPt00031::update_sheet()
{
TSheet_field& sheet = sfield(F_SHEET);
const int olditems = sheet.items();
sheet.destroy();
reset(F_TOTPAGATO);
TRectype from(_cur->relation()->curr());
const long codcli = get_long(F_CODCLI);
from.put(DOC_TIPOCF, "C");
from.put(DOC_CODCF, codcli);
from.put(DOC_ANNO, get(F_ANNO));
from.put(DOC_PROVV, "D");
TRectype to(from);
TString filter;
filter << "(CODNUM==\"" << get(F_NUM) << "\")&&(G1:TOTDOC>IMPPAGATO)";
_cur->setfilter(filter);
_cur->setregion(from, to);
TDocumento & doc = (TDocumento &)_cur->curr();
const long items = _cur->items();
TProgind pi(items, "Caricamento fatture", true, true);
for ((*_cur) = 0L; _cur->pos() < items; ++(*_cur))
{
if (!pi.addstatus(1))
break;
if (sheet.items() > 900) // Anche troppe righe
break;
TToken_string & row = sheet.row(-1);
const real totdoc = doc.totale_doc();
const real acconto = doc.get_real(DOC_IMPPAGATO);
const real da_pagare = totdoc - acconto;
row.cut(0);
row.add("");
row.add(da_pagare.string());
row.add(totdoc.string());
row.add(doc.get(DOC_NDOC));
row.add(doc.get(DOC_DATADOC));
}
if (olditems == 0 && items == 0)
return;
sheet.force_update();
}
void TMaskPt00031::update_pagato(real & totpagato)
{
TSheet_field& sheet = sfield(F_SHEET);
const long items = sheet.items();
int pospagato = sheet.cid2index(F_PAGATO);
int posda_pagare = sheet.cid2index(F_DAPAGARE);
for (int r = 0; r < items; r++)
{
TToken_string & row = sheet.row(r);
const real da_pagare(row.get(posda_pagare));
real pagato;
if (totpagato > ZERO)
{
if (totpagato > da_pagare)
pagato = da_pagare;
else
pagato = totpagato;
totpagato -= pagato;
}
const TString s(pagato.string());
row.add(s, pospagato);
}
sheet.force_update();
}
class TIncassoFatture0003 : public TSkeleton_application
{
virtual bool check_autorization() const { return false; }
virtual const char * extra_modules() const {return "ve";}
protected:
virtual void main_loop();
public:
virtual ~TIncassoFatture0003() {}
};
void TIncassoFatture0003::main_loop()
{
open_files(LF_DOC, LF_RIGHEDOC, 0);
TMaskPt00031 m;
while (m.run() == K_ENTER)
{
TSheet_field & s = m.sfield(F_SHEET);
TCursor & c = m.cursor();
const long items = c.items();
int pospagato = s.cid2index(F_PAGATO);
for (long pos = 0L; pos < items; pos++)
{
TToken_string row = s.row(pos);
real val(row.get(pospagato));
if (val != ZERO)
{
c = pos;
TDocumento doc((TDocumento &)c.curr());
real pagato = doc.get(DOC_IMPPAGATO);
real val(row.get(pospagato));
pagato += val;
doc.put(DOC_IMPPAGATO, pagato);
doc.rewrite();
}
}
}
}
TIncassoFatture0003 & app() { return (TIncassoFatture0003&) main_app();}
int pt0003100(int argc, char* argv[])
{
TIncassoFatture0003 a;
a.run(argc, argv, "Incasso fatture");
return 0;
}
#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <progind.h>
#include "../ve/velib.h"
#include <doc.h>
#include <rdoc.h>
#include "pt0003.h"
#include "pt0003100a.h"
class TMaskPt00031 : public TAutomask
{
TCursor * _cur;
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
bool on_sheet_event(TOperable_field& o, TField_event e, long jolly);
void update_sheet();
void update_pagato(real & totale);
void update_total();
public:
TCursor & cursor() const { return *_cur;}
TMaskPt00031();
virtual ~TMaskPt00031();
};
TMaskPt00031::TMaskPt00031()
: TAutomask("pt0003100a")
{
TRelation * r = new TRelation(LF_DOC);
r->file().set_curr(new TDocumento);
_cur = new TCursor(r, "", 4);
((TButton_field&) field(DLG_SAVEREC)).set_exit_key(K_ENTER);
}
TMaskPt00031::~TMaskPt00031()
{
delete _cur;
}
bool TMaskPt00031::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
const int id = o.dlg();
switch (id)
{
case F_TOTPAGATO:
if (e == fe_modify )
{
real totpagato = o.mask().get_real(F_TOTPAGATO);
update_pagato(totpagato);
}
break;
case F_NUM:
if (e == fe_modify || e == fe_init)
update_sheet();
break;
case F_ANNO:
case F_CODCLI:
if (e == fe_modify)
update_sheet();
break;
case F_SHEET:
return on_sheet_event(o, e, jolly);
break;
default:
if (jolly > 0)
return on_sheet_event(o, e, jolly);
break;
}
return true;
}
void TMaskPt00031::update_total()
{
real tot;
TSheet_field& s = sfield(F_SHEET);
const int postot = s.cid2index(F_PAGATO);
FOR_EACH_SHEET_ROW_BACK(s, r, row)
tot += real(row->get(postot));
set(F_TOTPAGATO, tot);
}
bool TMaskPt00031::on_sheet_event(TOperable_field& o, TField_event e, long jolly)
{
TMask& m = o.mask();
switch (o.dlg())
{
case F_PAGATO:
if (e == fe_modify)
update_total();
break;
case F_PAGA:
if (e == fe_button)
{
TMask& m = o.mask();
if (m.get_real(F_PAGATO).is_zero())
m.set(F_PAGATO, m.get(F_DAPAGARE));
else
m.reset(F_PAGATO);
TSheet_field & s = *m.get_sheet();
const int r = s.selected();
s.row(r).add(m.get(F_PAGATO), 0);
s.force_update(r);
update_total();
}
break;
case F_SHEET:
switch(e)
{
case se_query_add:
return false;
case se_notify_modify:
update_total();
break;
default:
break;
}
default:
break;
}
return true;
}
void TMaskPt00031::update_sheet()
{
TSheet_field& sheet = sfield(F_SHEET);
const int olditems = sheet.items();
sheet.destroy();
reset(F_TOTPAGATO);
TRectype from(_cur->relation()->curr());
const long codcli = get_long(F_CODCLI);
from.put(DOC_TIPOCF, "C");
from.put(DOC_CODCF, codcli);
from.put(DOC_ANNO, get(F_ANNO));
from.put(DOC_PROVV, "D");
from.put(DOC_CODNUM, get(F_NUM));
TRectype to(from);
TString filter;
filter << "(" << DOC_ACCSALDO "!=\"X\")";
_cur->setfilter(filter);
_cur->setregion(from, to);
TDocumento & doc = (TDocumento &)_cur->curr();
const long items = _cur->items();
TProgind pi(items, "Caricamento fatture", true, true);
for ((*_cur) = 0L; _cur->pos() < items; ++(*_cur))
{
if (!pi.addstatus(1))
break;
if (sheet.items() > 900) // Anche troppe righe
break;
TToken_string & row = sheet.row(-1);
const real totdoc = doc.totale_doc();
const real acconto = doc.get_real(DOC_IMPPAGATO);
const real da_pagare = totdoc - acconto;
row.cut(0);
row.add("");
row.add(da_pagare.string());
row.add(totdoc.string());
row.add(doc.get(DOC_NDOC));
row.add(doc.get(DOC_DATADOC));
}
if (olditems == 0 && items == 0)
return;
sheet.force_update();
}
void TMaskPt00031::update_pagato(real & totpagato)
{
TSheet_field& sheet = sfield(F_SHEET);
const long items = sheet.items();
int pospagato = sheet.cid2index(F_PAGATO);
int posda_pagare = sheet.cid2index(F_DAPAGARE);
for (int r = 0; r < items; r++)
{
TToken_string & row = sheet.row(r);
const real da_pagare(row.get(posda_pagare));
real pagato;
if (totpagato > ZERO)
{
if (totpagato > da_pagare)
pagato = da_pagare;
else
pagato = totpagato;
totpagato -= pagato;
}
const TString s(pagato.string());
row.add(s, pospagato);
}
sheet.force_update();
}
class TIncassoFatture0003 : public TSkeleton_application
{
virtual bool check_autorization() const { return false; }
virtual const char * extra_modules() const {return "ve";}
protected:
virtual void main_loop();
public:
virtual ~TIncassoFatture0003() {}
};
void TIncassoFatture0003::main_loop()
{
open_files(LF_DOC, LF_RIGHEDOC, 0);
TMaskPt00031 m;
while (m.run() == K_ENTER)
{
TSheet_field & s = m.sfield(F_SHEET);
TCursor & c = m.cursor();
const long items = c.items();
int pospagato = s.cid2index(F_PAGATO);
for (long pos = 0L; pos < items; pos++)
{
TToken_string row = s.row(pos);
real val(row.get(pospagato));
if (val != ZERO)
{
c = pos;
TDocumento doc((TDocumento &)c.curr());
real pagato = doc.get(DOC_IMPPAGATO);
real val(row.get(pospagato));
pagato += val;
doc.put(DOC_IMPPAGATO, pagato);
doc.put(DOC_ACCSALDO, (bool)(pagato >= doc.totale_doc()));
doc.rewrite();
}
}
}
}
TIncassoFatture0003 & app() { return (TIncassoFatture0003&) main_app();}
int pt0003100(int argc, char* argv[])
{
TIncassoFatture0003 a;
a.run(argc, argv, "Incasso fatture");
return 0;
}

View File

@ -1,14 +1,14 @@
#define F_ANNO 201
#define F_NUM 202
#define F_CODCLI 203
#define F_RAGSOC 204
#define F_TOTPAGATO 205
#define F_SHEET 206
#define F_PAGA 100
#define F_PAGATO 101
#define F_DAPAGARE 102
#define F_TOTDOC 103
#define F_NDOC 104
#define F_DATADOC 105
#define F_ANNO 201
#define F_NUM 202
#define F_CODCLI 203
#define F_RAGSOC 204
#define F_TOTPAGATO 205
#define F_SHEET 206
#define F_PAGA 100
#define F_PAGATO 101
#define F_DAPAGARE 102
#define F_TOTDOC 103
#define F_NDOC 104
#define F_DATADOC 105

View File

@ -1,157 +1,158 @@
#include "pt0003100a.h"
TOOLBAR "Toolbar" 0 0 0 2
BUTTON DLG_SAVEREC 2 2
BEGIN
PROMPT 1 1 "~Registra"
PICTURE TOOL_SAVEREC
END
#include <helpbar.h>
ENDPAGE
PAGE "Incasso fatture" 0 2 0 0
GROUPBOX -1 78 5
BEGIN
PROMPT 2 1 "Selezione Documenti"
FLAGS ""
END
NUMBER F_ANNO 4
BEGIN
PROMPT 4 2 "Anno "
FIELD S_ANNO
KEY 1
USE ESC
CHECKTYPE NORMAL
INPUT CODTAB F_ANNO
DISPLAY "Codice" CODTAB
DISPLAY "Data inizio esercizio" D0
DISPLAY "Data fine esercizio" D1
OUTPUT F_ANNO CODTAB
FLAGS "RZ"
END
STRING F_NUM 4
BEGIN
PROMPT 21 2 "Num. "
FIELDS S_NUM
HELP "Codice numerazione"
USE %NUM
INPUT CODTAB F_NUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_NUM CODTAB
CHECKTYPE REQUIRED
FLAG "UPA"
WARNING "Numerazione assente"
END
STRING F_CODCLI 6
BEGIN
PROMPT 4 3 "Cliente "
WARNING "Cliente assente"
FLAGS "R"
FIELD CODCLI
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF F_CODCLI
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT F_CODCLI CODCF
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
WARNING "Cliente assente"
PROMPT 26 3 ""
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC F_RAGSOC
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Partita IVA@12" PAIV
DISPLAY "Codice" CODCF
OUTPUT F_CODCLI CODCF
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
CURRENCY F_TOTPAGATO
BEGIN
PROMPT 4 4 "Pagato "
END
SPREADSHEET F_SHEET
BEGIN
PROMPT 0 6 ""
ITEM "Pagato@18"
ITEM "Da pagare@18"
ITEM "Totale doc.@18"
ITEM "N.ro Fattura"
ITEM "Data@10"
END
STRING DLG_PROFILE 70 50
BEGIN
PROMPT 8 -1 "Profilo "
PSELECT
END
ENDPAGE
ENDMASK
PAGE "Rate" -1 -1 60 14
CURRENCY F_PAGATO
BEGIN
PROMPT 4 1 "Pagato "
END
CURRENCY F_DAPAGARE
BEGIN
PROMPT 4 3 "Da Pagare "
FLAGS "D"
END
CURRENCY F_TOTDOC
BEGIN
PROMPT 4 5 "Totale fattura "
FLAGS "D"
END
NUMBER F_NDOC 6
BEGIN
PROMPT 4 7 "Numero fattura "
FLAGS "D"
END
DATE F_DATADOC
BEGIN
PROMPT 4 9 "Data fattura "
FLAGS "D"
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON F_PAGA 10 2
BEGIN
PROMPT -33 -1 "~Paga"
END
ENDPAGE
ENDMASK
#include "pt0003100a.h"
TOOLBAR "Toolbar" 0 0 0 2
BUTTON DLG_SAVEREC 2 2
BEGIN
PROMPT 1 1 "~Registra"
PICTURE TOOL_SAVEREC
MESSAGE EXIT,K_ENTER
END
#include <helpbar.h>
ENDPAGE
PAGE "Incasso fatture" 0 2 0 0
GROUPBOX -1 78 5
BEGIN
PROMPT 2 1 "Selezione Documenti"
FLAGS ""
END
NUMBER F_ANNO 4
BEGIN
PROMPT 4 2 "Anno "
FIELD S_ANNO
KEY 1
USE ESC
CHECKTYPE NORMAL
INPUT CODTAB F_ANNO
DISPLAY "Codice" CODTAB
DISPLAY "Data inizio esercizio" D0
DISPLAY "Data fine esercizio" D1
OUTPUT F_ANNO CODTAB
FLAGS "RZ"
END
STRING F_NUM 4
BEGIN
PROMPT 21 2 "Num. "
FIELDS S_NUM
HELP "Codice numerazione"
USE %NUM
INPUT CODTAB F_NUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_NUM CODTAB
CHECKTYPE REQUIRED
FLAG "UPA"
WARNING "Numerazione assente"
END
STRING F_CODCLI 6
BEGIN
PROMPT 4 3 "Cliente "
WARNING "Cliente assente"
FLAGS "R"
FIELD CODCLI
USE LF_CLIFO
INPUT TIPOCF "C"
INPUT CODCF F_CODCLI
DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT F_CODCLI CODCF
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
WARNING "Cliente assente"
PROMPT 26 3 ""
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC F_RAGSOC
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Partita IVA@12" PAIV
DISPLAY "Codice" CODCF
OUTPUT F_CODCLI CODCF
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
CURRENCY F_TOTPAGATO
BEGIN
PROMPT 4 4 "Pagato "
END
SPREADSHEET F_SHEET
BEGIN
PROMPT 0 6 ""
ITEM "Pagato@18"
ITEM "Da pagare@18"
ITEM "Totale doc.@18"
ITEM "N.ro Fattura"
ITEM "Data@10"
END
STRING DLG_PROFILE 70 50
BEGIN
PROMPT 8 -1 "Profilo "
PSELECT
END
ENDPAGE
ENDMASK
PAGE "Rate" -1 -1 60 14
CURRENCY F_PAGATO
BEGIN
PROMPT 4 1 "Pagato "
END
CURRENCY F_DAPAGARE
BEGIN
PROMPT 4 3 "Da Pagare "
FLAGS "D"
END
CURRENCY F_TOTDOC
BEGIN
PROMPT 4 5 "Totale fattura "
FLAGS "D"
END
NUMBER F_NDOC 6
BEGIN
PROMPT 4 7 "Numero fattura "
FLAGS "D"
END
DATE F_DATADOC
BEGIN
PROMPT 4 9 "Data fattura "
FLAGS "D"
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON F_PAGA 10 2
BEGIN
PROMPT -33 -1 "~Paga"
END
ENDPAGE
ENDMASK

View File

@ -1,16 +1,16 @@
#include <xvt.h>
#include "pt0195.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
pt0195100(argc, argv); break;
default:
pt0195100(argc, argv); break; //Importazione documenti Volvo
}
return 0;
#include <xvt.h>
#include "pt0195.h"
int main(int argc, char** argv)
{
int n = argc > 1 ? atoi(argv[1]+1) : 0;
switch(n)
{
case 0:
pt0195100(argc, argv); break;
default:
pt0195100(argc, argv); break; //Importazione documenti Volvo
}
return 0;
}

View File

@ -1 +1 @@
int pt0195100(int argc, char* argv[]);
int pt0195100(int argc, char* argv[]);

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
// campi della maschera principale
#define F_PATH 101
#define F_NAME 102
// campi della maschera principale
#define F_PATH 101
#define F_NAME 102

View File

@ -1,38 +1,38 @@
#include "pt0195100a.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Importazione documenti Volvo" -1 -1 56 14
STRING F_PATH 255 40
BEGIN
PROMPT 1 1 "Percorso file da importare "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella valida!"
FIELD PATH
END
STRING F_NAME 30
BEGIN
PROMPT 1 3 "Nome file da importare "
FLAGS "B"
CHECKTYPE REQUIRED
FIELD NAME
END
ENDPAGE
ENDMASK
#include "pt0195100a.h"
TOOLBAR "" 0 20 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Importazione documenti Volvo" -1 -1 56 14
STRING F_PATH 255 40
BEGIN
PROMPT 1 1 "Percorso file da importare "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella valida!"
FIELD PATH
END
STRING F_NAME 30
BEGIN
PROMPT 1 3 "Nome file da importare "
FLAGS "B"
CHECKTYPE REQUIRED
FIELD NAME
END
ENDPAGE
ENDMASK

View File

@ -1,98 +1,98 @@
[MAIN]
DECSEP =
FIELDSEP =
RECORDSEP =
RECORDSIZE = 0
SKIPLINES = 0
TYPEFIELD = -1
TYPELEN = -1
TYPEPOS = -1
[TYPE FISSO]
ALIGN =
DATA =
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[TYPE DATA]
ALIGN =
DATA = D
DECIMAL = 0
FILLER =
LENGTH = 10
PICTURE =
[TYPE NUMERO]
ALIGN = R
DATA =
DECIMAL = 0
FILLER = '0'
LENGTH = 0
PICTURE =
[TYPE IMPORTO]
ALIGN = R
DATA =
DECIMAL = 2
LENGTH = 11
PICTURE =
[TYPE STRINGA]
ALIGN = L
DATA = S
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[RECORD]
NAME(0) = DORIDOC
TYPE(0) = STRINGA
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = DTIPDOC
TYPE(1) = STRINGA
POSITION(1) = 1
LENGTH(1) = 1
NAME(2) = DNUMDOC
TYPE(2) = STRINGA
POSITION(2) = 2
LENGTH(2) = 7
NAME(3) = DDATDOC
TYPE(3) = DATA
POSITION(3) = 9
NAME(4) = DCLICOD
TYPE(4) = STRINGA
POSITION(4) = 19
LENGTH(4) = 10
NAME(5) = DTIPORIGA
TYPE(5) = STRINGA
POSITION(5) = 29
LENGTH(5) = 10
NAME(6) = DCONTOD
TYPE(6) = STRINGA
POSITION(6) = 39
LENGTH(6) = 40
NAME(7) = DVALORED
TYPE(7) = IMPORTO
POSITION(7) = 79
LENGTH(7) = 11
NAME(8) = DCONTOC
TYPE(8) = STRINGA
POSITION(8) = 90
LENGTH(8) = 40
NAME(9) = DVALOREC
TYPE(9) = IMPORTO
POSITION(9) = 130
LENGTH(9) = 11
[MAIN]
DECSEP =
FIELDSEP =
RECORDSEP =
RECORDSIZE = 0
SKIPLINES = 0
TYPEFIELD = -1
TYPELEN = -1
TYPEPOS = -1
[TYPE FISSO]
ALIGN =
DATA =
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[TYPE DATA]
ALIGN =
DATA = D
DECIMAL = 0
FILLER =
LENGTH = 10
PICTURE =
[TYPE NUMERO]
ALIGN = R
DATA =
DECIMAL = 0
FILLER = '0'
LENGTH = 0
PICTURE =
[TYPE IMPORTO]
ALIGN = R
DATA =
DECIMAL = 2
LENGTH = 11
PICTURE =
[TYPE STRINGA]
ALIGN = L
DATA = S
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[RECORD]
NAME(0) = DORIDOC
TYPE(0) = STRINGA
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = DTIPDOC
TYPE(1) = STRINGA
POSITION(1) = 1
LENGTH(1) = 1
NAME(2) = DNUMDOC
TYPE(2) = STRINGA
POSITION(2) = 2
LENGTH(2) = 7
NAME(3) = DDATDOC
TYPE(3) = DATA
POSITION(3) = 9
NAME(4) = DCLICOD
TYPE(4) = STRINGA
POSITION(4) = 19
LENGTH(4) = 10
NAME(5) = DTIPORIGA
TYPE(5) = STRINGA
POSITION(5) = 29
LENGTH(5) = 10
NAME(6) = DCONTOD
TYPE(6) = STRINGA
POSITION(6) = 39
LENGTH(6) = 40
NAME(7) = DVALORED
TYPE(7) = IMPORTO
POSITION(7) = 79
LENGTH(7) = 11
NAME(8) = DCONTOC
TYPE(8) = STRINGA
POSITION(8) = 90
LENGTH(8) = 40
NAME(9) = DVALOREC
TYPE(9) = IMPORTO
POSITION(9) = 130
LENGTH(9) = 11

View File

@ -1,209 +1,209 @@
[MAIN]
DECSEP =
FIELDSEP =
RECORDSEP =
RECORDSIZE = 0
SKIPLINES = 0
TYPEFIELD = -1
TYPELEN = -1
TYPEPOS = -1
[TYPE FISSO]
ALIGN =
DATA =
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[TYPE DATA]
ALIGN =
DATA = D
DECIMAL = 0
FILLER =
LENGTH = 10
PICTURE =
[TYPE NUMERO]
ALIGN = R
DATA =
DECIMAL = 0
FILLER = '0'
LENGTH = 0
PICTURE =
[TYPE IMPORTO]
ALIGN = R
DATA =
DECIMAL = 0
LENGTH = 11
PICTURE =
[TYPE STRINGA]
ALIGN = L
DATA = S
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[RECORD]
NAME(0) = TORIDOC
TYPE(0) = STRINGA
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = TTIPDOC
TYPE(1) = STRINGA
POSITION(1) = 1
LENGTH(1) = 1
NAME(2) = TNUMDOC
TYPE(2) = STRINGA
POSITION(2) = 2
LENGTH(2) = 7
NAME(3) = TDATDOC
TYPE(3) = DATA
POSITION(3) = 9
NAME(4) = TCLIMAS
TYPE(4) = STRINGA
POSITION(4) = 19
LENGTH(4) = 10
NAME(5) = TCLICOD
TYPE(5) = STRINGA
POSITION(5) = 29
LENGTH(5) = 10
NAME(6) = TCODPAG
TYPE(6) = STRINGA
POSITION(6) = 39
LENGTH(6) = 3
NAME(7) = TCODVAL
TYPE(7) = STRINGA
POSITION(7) = 42
LENGTH(7) = 3
NAME(8) = TTOTIMP
TYPE(8) = IMPORTO
POSITION(8) = 45
NAME(9) = TTOTNIM
TYPE(9) = IMPORTO
POSITION(9) = 56
NAME(10) = TCODIVA
TYPE(10) = STRINGA
POSITION(10) = 67
LENGTH(10) = 2
NAME(11) = TIVA
TYPE(11) = IMPORTO
POSITION(11) = 70
NAME(12) = TTOTDOC
TYPE(12) = IMPORTO
POSITION(12) = 81
NAME(13) = TRAGSOC
TYPE(13) = STRINGA
POSITION(13) = 92
LENGTH(13) = 45
NAME(14) = TINDIR
TYPE(14) = STRINGA
POSITION(14) = 137
LENGTH(14) = 30
NAME(15) = TLOCAL
TYPE(15) = STRINGA
POSITION(15) = 167
LENGTH(15) = 30
NAME(16) = TPROVI
TYPE(16) = STRINGA
POSITION(16) = 197
LENGTH(16) = 30
NAME(17) = TCAP
TYPE(17) = STRINGA
POSITION(17) = 227
LENGTH(17) = 10
NAME(18) = TCITTA2
TYPE(18) = STRINGA
POSITION(18) = 237
LENGTH(18) = 30
NAME(19) = TNAZIO // CODICE FISCALE
TYPE(19) = STRINGA
POSITION(19) = 267
LENGTH(19) = 30
NAME(20) = TPIVA
TYPE(20) = STRINGA
POSITION(20) = 297
LENGTH(20) = 20
NAME(21) = TCODBAN1
TYPE(21) = STRINGA
POSITION(21) = 317
LENGTH(21) = 15
NAME(22) = TCODBAN2
TYPE(22) = STRINGA
POSITION(22) = 332
LENGTH(22) = 15
NAME(23) = TCODCC
TYPE(23) = STRINGA
POSITION(23) = 347
LENGTH(23) = 15
NAME(24) = TDESBAN
TYPE(24) = STRINGA
POSITION(24) = 362
LENGTH(24) = 30
NAME(25) = TTELE1
TYPE(25) = STRINGA
POSITION(25) = 392
LENGTH(25) = 15
NAME(26) = TTELE2
TYPE(26) = STRINGA
POSITION(26) = 407
LENGTH(26) = 15
NAME(27) = TTELE3
TYPE(27) = STRINGA
POSITION(27) = 422
LENGTH(27) = 15
NAME(28) = TTELE4
TYPE(28) = STRINGA
POSITION(28) = 437
LENGTH(28) = 15
NAME(29) = TTELE5
TYPE(29) = STRINGA
POSITION(29) = 452
LENGTH(29) = 15
NAME(30) = TTELE6
TYPE(30) = STRINGA
POSITION(30) = 467
LENGTH(30) = 15
NAME(31) = TEMAIL
TYPE(31) = STRINGA
POSITION(31) = 482
LENGTH(31) = 50
NAME(32) = TWEB
TYPE(32) = STRINGA
POSITION(32) = 532
LENGTH(32) = 60
[MAIN]
DECSEP =
FIELDSEP =
RECORDSEP =
RECORDSIZE = 0
SKIPLINES = 0
TYPEFIELD = -1
TYPELEN = -1
TYPEPOS = -1
[TYPE FISSO]
ALIGN =
DATA =
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[TYPE DATA]
ALIGN =
DATA = D
DECIMAL = 0
FILLER =
LENGTH = 10
PICTURE =
[TYPE NUMERO]
ALIGN = R
DATA =
DECIMAL = 0
FILLER = '0'
LENGTH = 0
PICTURE =
[TYPE IMPORTO]
ALIGN = R
DATA =
DECIMAL = 0
LENGTH = 11
PICTURE =
[TYPE STRINGA]
ALIGN = L
DATA = S
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[RECORD]
NAME(0) = TORIDOC
TYPE(0) = STRINGA
POSITION(0) = 0
LENGTH(0) = 1
NAME(1) = TTIPDOC
TYPE(1) = STRINGA
POSITION(1) = 1
LENGTH(1) = 1
NAME(2) = TNUMDOC
TYPE(2) = STRINGA
POSITION(2) = 2
LENGTH(2) = 7
NAME(3) = TDATDOC
TYPE(3) = DATA
POSITION(3) = 9
NAME(4) = TCLIMAS
TYPE(4) = STRINGA
POSITION(4) = 19
LENGTH(4) = 10
NAME(5) = TCLICOD
TYPE(5) = STRINGA
POSITION(5) = 29
LENGTH(5) = 10
NAME(6) = TCODPAG
TYPE(6) = STRINGA
POSITION(6) = 39
LENGTH(6) = 3
NAME(7) = TCODVAL
TYPE(7) = STRINGA
POSITION(7) = 42
LENGTH(7) = 3
NAME(8) = TTOTIMP
TYPE(8) = IMPORTO
POSITION(8) = 45
NAME(9) = TTOTNIM
TYPE(9) = IMPORTO
POSITION(9) = 56
NAME(10) = TCODIVA
TYPE(10) = STRINGA
POSITION(10) = 67
LENGTH(10) = 2
NAME(11) = TIVA
TYPE(11) = IMPORTO
POSITION(11) = 70
NAME(12) = TTOTDOC
TYPE(12) = IMPORTO
POSITION(12) = 81
NAME(13) = TRAGSOC
TYPE(13) = STRINGA
POSITION(13) = 92
LENGTH(13) = 45
NAME(14) = TINDIR
TYPE(14) = STRINGA
POSITION(14) = 137
LENGTH(14) = 30
NAME(15) = TLOCAL
TYPE(15) = STRINGA
POSITION(15) = 167
LENGTH(15) = 30
NAME(16) = TPROVI
TYPE(16) = STRINGA
POSITION(16) = 197
LENGTH(16) = 30
NAME(17) = TCAP
TYPE(17) = STRINGA
POSITION(17) = 227
LENGTH(17) = 10
NAME(18) = TCITTA2
TYPE(18) = STRINGA
POSITION(18) = 237
LENGTH(18) = 30
NAME(19) = TNAZIO // CODICE FISCALE
TYPE(19) = STRINGA
POSITION(19) = 267
LENGTH(19) = 30
NAME(20) = TPIVA
TYPE(20) = STRINGA
POSITION(20) = 297
LENGTH(20) = 20
NAME(21) = TCODBAN1
TYPE(21) = STRINGA
POSITION(21) = 317
LENGTH(21) = 15
NAME(22) = TCODBAN2
TYPE(22) = STRINGA
POSITION(22) = 332
LENGTH(22) = 15
NAME(23) = TCODCC
TYPE(23) = STRINGA
POSITION(23) = 347
LENGTH(23) = 15
NAME(24) = TDESBAN
TYPE(24) = STRINGA
POSITION(24) = 362
LENGTH(24) = 30
NAME(25) = TTELE1
TYPE(25) = STRINGA
POSITION(25) = 392
LENGTH(25) = 15
NAME(26) = TTELE2
TYPE(26) = STRINGA
POSITION(26) = 407
LENGTH(26) = 15
NAME(27) = TTELE3
TYPE(27) = STRINGA
POSITION(27) = 422
LENGTH(27) = 15
NAME(28) = TTELE4
TYPE(28) = STRINGA
POSITION(28) = 437
LENGTH(28) = 15
NAME(29) = TTELE5
TYPE(29) = STRINGA
POSITION(29) = 452
LENGTH(29) = 15
NAME(30) = TTELE6
TYPE(30) = STRINGA
POSITION(30) = 467
LENGTH(30) = 15
NAME(31) = TEMAIL
TYPE(31) = STRINGA
POSITION(31) = 482
LENGTH(31) = 50
NAME(32) = TWEB
TYPE(32) = STRINGA
POSITION(32) = 532
LENGTH(32) = 60

View File

@ -1,20 +1,20 @@
[MAIN]
PATH =
NAME =
XCL_ART=
[CODNUM]
OF =
RF =
LF =
OC =
RC =
LC =
[HEAD]
RAGGREFF =
ADDBOLLI =
PERCSPINC =
[ROW]
UMQTA =
[MAIN]
PATH =
NAME =
XCL_ART=
[CODNUM]
OF =
RF =
LF =
OC =
RC =
LC =
[HEAD]
RAGGREFF =
ADDBOLLI =
PERCSPINC =
[ROW]
UMQTA =