Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento : iniziata la personalizzazione GF git-svn-id: svn://10.65.10.50/trunk@20429 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
bbd2c042d6
commit
3174ec531b
342
ps/ps0398100.cpp
342
ps/ps0398100.cpp
@ -2,12 +2,20 @@
|
|||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <defmask.h>
|
#include <defmask.h>
|
||||||
|
#include <dongle.h>
|
||||||
|
#include <lffiles.h>
|
||||||
#include <modaut.h>
|
#include <modaut.h>
|
||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
|
#include <recarray.h>
|
||||||
#include <reputils.h>
|
#include <reputils.h>
|
||||||
#include <textset.h>
|
#include <textset.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include <doc.h>
|
||||||
|
#include <rdoc.h>
|
||||||
|
#include "../mg/anamag.h"
|
||||||
|
#include "../mg/umart.h"
|
||||||
|
|
||||||
#include "ps0398100a.h"
|
#include "ps0398100a.h"
|
||||||
|
|
||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
@ -47,7 +55,7 @@ public:
|
|||||||
// RECORDSET
|
// RECORDSET
|
||||||
/////////////////////////////////////////////
|
/////////////////////////////////////////////
|
||||||
//creazione del recordset di ogni ordine
|
//creazione del recordset di ogni ordine
|
||||||
TTrasferimento_ordini_recordset::TTrasferimento_ordini_recordset(const char* filename) : TCSV_recordset("CSV(\";\")")
|
TTrasferimento_ordini_recordset::TTrasferimento_ordini_recordset(const char* filename) : TCSV_recordset("CSV(\"\t\")")
|
||||||
{
|
{
|
||||||
load_file(filename);
|
load_file(filename);
|
||||||
};
|
};
|
||||||
@ -66,7 +74,12 @@ class TTrasferimento_ordini : public TSkeleton_application
|
|||||||
protected:
|
protected:
|
||||||
virtual const char * extra_modules() const {return "ve";}
|
virtual const char * extra_modules() const {return "ve";}
|
||||||
virtual bool create();
|
virtual bool create();
|
||||||
void fill_string(const int curr_nriga, const TString& riga_txt, TString& str);
|
|
||||||
|
bool ordine_gf(TTrasferimento_ordini_recordset& recset);
|
||||||
|
void elab_hd_ht(const TString& riga_txt, const int curr_nriga, TString& str);
|
||||||
|
void elab_hf(const TString& riga_txt, TConfig& curr_ini, const int curr_nriga, TLog_report& log, TString& ragsoc);
|
||||||
|
void elab_ro(const TString& riga_txt, TConfig& curr_ini, const int curr_nriga, TLog_report& log, TString& ho_note_generali);
|
||||||
|
void elab_ra(const TString& riga_txt, TConfig& curr_ini, const int curr_nriga, TLog_report& log);
|
||||||
bool elabora();
|
bool elabora();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -74,40 +87,201 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void TTrasferimento_ordini::fill_string(const int curr_nriga, const TString& riga_txt, TString& str)
|
//metodo per scoprire se l'ordine è di GF o no
|
||||||
|
bool TTrasferimento_ordini::ordine_gf(TTrasferimento_ordini_recordset& recset)
|
||||||
|
{
|
||||||
|
//le righe articolo o sono tutte di GF o non lo sono (nessuna situazione mista)
|
||||||
|
bool is_ordine_gf = false;
|
||||||
|
|
||||||
|
for (bool ok = recset.move_last(); ok; ok = recset.move_prev())
|
||||||
|
{
|
||||||
|
const TString& riga_txt = recset.get(0L).as_string();
|
||||||
|
const TString& tr = riga_txt.left(2);
|
||||||
|
if (tr == "RA")
|
||||||
|
{
|
||||||
|
TToken_string riga_ord(riga_txt.mid(5), ';');
|
||||||
|
const TString& codart = riga_ord.get();
|
||||||
|
//se il codice articolo non contiene il carattere '.' -> non è di GF -> scartato
|
||||||
|
const int dot_pos = codart.find('.');
|
||||||
|
if (dot_pos >= 0)
|
||||||
|
{
|
||||||
|
is_ordine_gf = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return is_ordine_gf;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TTrasferimento_ordini::elab_hf(const TString& riga_txt, TConfig& curr_ini, const int curr_nriga, TLog_report& log, TString& ragsoc)
|
||||||
{
|
{
|
||||||
switch (curr_nriga)
|
switch (curr_nriga)
|
||||||
{
|
{
|
||||||
case 3:
|
case 1:
|
||||||
str = riga_txt; //indirizzo
|
{
|
||||||
str.trim();
|
ragsoc = riga_txt.mid(5);
|
||||||
|
ragsoc.trim();
|
||||||
|
ragsoc.cut(50);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 6:
|
||||||
str << " " << riga_txt.mid(5, 10); //cap
|
{
|
||||||
str.trim();
|
const long codcf = atol(riga_txt.mid(14,6));
|
||||||
str << " " << riga_txt.mid(15, 30); //città
|
//per prima cosa controlla se è possibile risalire al cliente che ha generato l'ordine..
|
||||||
str.trim();
|
//..no cliente...no party!
|
||||||
str << " " << riga_txt.mid(45, 30); //provincia
|
if (codcf <= 0)
|
||||||
str.trim();
|
{
|
||||||
str << " " << riga_txt.mid(75, 30); //nazione
|
TString msg;
|
||||||
str.trim();
|
msg.format("Il cliente %s ha codice nullo!", (const char*)ragsoc);
|
||||||
|
log.log(2, msg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
curr_ini.set(DOC_TIPOCF, "C");
|
||||||
|
curr_ini.set(DOC_CODCF, codcf);
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TTrasferimento_ordini::elab_hd_ht(const TString& riga_txt, const int curr_nriga, TString& str)
|
||||||
|
{
|
||||||
|
if (riga_txt.full())
|
||||||
|
{
|
||||||
|
switch (curr_nriga)
|
||||||
|
{
|
||||||
|
case 3:
|
||||||
|
str << riga_txt; //indirizzo
|
||||||
|
str.trim();
|
||||||
|
str << "\\n";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
str << " " << riga_txt.mid(5, 10); //cap
|
||||||
|
str.trim();
|
||||||
|
str << " " << riga_txt.mid(15, 30); //città
|
||||||
|
str.trim();
|
||||||
|
str << " " << riga_txt.mid(45, 30); //provincia
|
||||||
|
str.trim();
|
||||||
|
str << " " << riga_txt.mid(75, 30); //nazione
|
||||||
|
str.trim();
|
||||||
|
str << "\\n";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TTrasferimento_ordini::elab_ro(const TString& riga_txt, TConfig& curr_ini, const int curr_nriga, TLog_report& log, TString& ho_note_generali)
|
||||||
|
{
|
||||||
|
switch (curr_nriga)
|
||||||
|
{
|
||||||
|
case 1: //numero ordine del sito web (per ora non serve, ma poi si vedrà...)
|
||||||
|
{
|
||||||
|
const long num_ord_web = atol(riga_txt.mid(5));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3: //datadoc (scritta alla cazzo)
|
||||||
|
{
|
||||||
|
TToken_string str_data(riga_txt.mid(5, 100).before(' '), '/');
|
||||||
|
const TDate datadoc(str_data.get_int(0), str_data.get_int(1), str_data.get_int(2));
|
||||||
|
if (!datadoc.ok())
|
||||||
|
{
|
||||||
|
TString msg;
|
||||||
|
msg.format("Data documento non valida: %s", (const char*)str_data);
|
||||||
|
log.log(2, msg);
|
||||||
|
}
|
||||||
|
curr_ini.set(DOC_DATADOC, datadoc);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4: //altre note ordine (da mettere in DOC_NOTE)
|
||||||
|
{
|
||||||
|
ho_note_generali = riga_txt.mid(5);
|
||||||
|
ho_note_generali.trim();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5: //codice condizione pagamento (anche questo x ora non serve, ma sempre si vedrà...)
|
||||||
|
{
|
||||||
|
const int cod_pag = atoi(riga_txt.mid(5));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
} //switch(curr_nriga)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TTrasferimento_ordini::elab_ra(const TString& riga_txt, TConfig& curr_ini, const int curr_nriga, TLog_report& log)
|
||||||
|
{
|
||||||
|
TToken_string riga_ord(riga_txt.mid(5), ';');
|
||||||
|
const TString codart = riga_ord.get();
|
||||||
|
TString16 str_qta = riga_ord.get();
|
||||||
|
str_qta.strip(". ");
|
||||||
|
str_qta.replace(',', '.');
|
||||||
|
|
||||||
|
//set_paragraph sulle righe (file 34, righedoc)
|
||||||
|
TString8 row_paragrafo;
|
||||||
|
row_paragrafo << LF_RIGHEDOC << ',' << curr_nriga;
|
||||||
|
curr_ini.set_paragraph(row_paragrafo);
|
||||||
|
|
||||||
|
//l'articolo deve esistere per stare in codartmag e codart;
|
||||||
|
//se non esiste in anagrafica -> solo in codart con segnalazione
|
||||||
|
//la desc riga sarà la desc articolo
|
||||||
|
const TRectype& rec_anamag = cache().get(LF_ANAMAG, codart);
|
||||||
|
//se il record è vuoto l'articolo non è in anagrafica
|
||||||
|
if (rec_anamag.empty())
|
||||||
|
{
|
||||||
|
TString msg;
|
||||||
|
msg.format("Articolo non in anagrafica: %s", (const char*)codart);
|
||||||
|
log.log(2, msg);
|
||||||
|
curr_ini.set(RDOC_DESCR, "Articolo non in anagrafica");
|
||||||
|
}
|
||||||
|
else //sennò va tranquillo
|
||||||
|
{
|
||||||
|
curr_ini.set(RDOC_CODARTMAG, codart);
|
||||||
|
curr_ini.set(RDOC_DESCR, rec_anamag.get(ANAMAG_DESCR));
|
||||||
|
curr_ini.set(RDOC_CHECKED, "X");
|
||||||
|
|
||||||
|
//alla qta associa la prima unità di misura
|
||||||
|
TToken_string key_umart;
|
||||||
|
key_umart.add(codart);
|
||||||
|
key_umart.add(1);
|
||||||
|
const TRectype& rec_umart = cache().get(LF_UMART, key_umart);
|
||||||
|
const TString& umqta = rec_umart.get(UMART_UM);
|
||||||
|
curr_ini.set(RDOC_UMQTA, umqta);
|
||||||
|
}
|
||||||
|
//queste le fa in ogni modo (forse rischiando)
|
||||||
|
curr_ini.set(RDOC_CODART, codart);
|
||||||
|
curr_ini.set(RDOC_QTA, str_qta);
|
||||||
|
|
||||||
|
|
||||||
|
const real prezzo = riga_ord.get(); //per adesso non ci va?
|
||||||
|
//e per ultime le eventuali note
|
||||||
|
const TString nota = riga_ord.get();
|
||||||
|
if (nota.full())
|
||||||
|
{
|
||||||
|
curr_ini.set(RDOC_DESCLUNGA, "X");
|
||||||
|
curr_ini.set(RDOC_DESCEST, nota);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool TTrasferimento_ordini::elabora()
|
bool TTrasferimento_ordini::elabora()
|
||||||
{
|
{
|
||||||
TFilename src_files = _mask->get(F_PATH_SRC);
|
TFilename src_files = _mask->get(F_PATH_SRC);
|
||||||
src_files.add("*.txt");
|
src_files.add("*header.txt");
|
||||||
TString_array src_files_list;
|
TString_array src_files_list;
|
||||||
//dalla cartella origine prende tutti i files .pdf e crea una simpatica lista
|
//dalla cartella origine prende tutti i files *HEADER.txt e crea una simpatica lista
|
||||||
const int n_files_txt = list_files(src_files, src_files_list);
|
const int n_files_txt = list_files(src_files, src_files_list);
|
||||||
|
|
||||||
const bool delete_src_files = _mask->get_bool(F_ERASE_TRANSFERRED);
|
//già che c'è prende pure gli altri dati dalla maschera che gli servono poi
|
||||||
|
TFilename dst_path = _mask->get(F_PATH_DST);
|
||||||
|
|
||||||
//cartella dove saranno creati i .ini
|
//cartella dove saranno creati i .ini
|
||||||
TFilename tmp;
|
TFilename tmp;
|
||||||
tmp.tempdir();
|
tmp.tempdir();
|
||||||
@ -117,7 +291,7 @@ bool TTrasferimento_ordini::elabora()
|
|||||||
if (!crea_dir)
|
if (!crea_dir)
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg.format("Impossibile creare la cartella %s !", tmp);
|
msg.format("Impossibile creare la cartella di lavoro %s !", tmp);
|
||||||
return error_box(msg);
|
return error_box(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,6 +299,7 @@ bool TTrasferimento_ordini::elabora()
|
|||||||
TProgind pi(n_files_txt, TR("Acquisizione ordini in corso..."), true, true);
|
TProgind pi(n_files_txt, TR("Acquisizione ordini in corso..."), true, true);
|
||||||
TLog_report log("ERRORI DI TRASFERIMENTO");
|
TLog_report log("ERRORI DI TRASFERIMENTO");
|
||||||
|
|
||||||
|
//ciclo su tutti i files .txt da esaminare
|
||||||
for (int i = 0; i < n_files_txt; i++)
|
for (int i = 0; i < n_files_txt; i++)
|
||||||
{
|
{
|
||||||
if (!pi.addstatus(1))
|
if (!pi.addstatus(1))
|
||||||
@ -134,19 +309,45 @@ bool TTrasferimento_ordini::elabora()
|
|||||||
const TFilename curr_fname = src_files_list.row(i);
|
const TFilename curr_fname = src_files_list.row(i);
|
||||||
//creazione del recordset associato al file
|
//creazione del recordset associato al file
|
||||||
TTrasferimento_ordini_recordset recset(curr_fname);
|
TTrasferimento_ordini_recordset recset(curr_fname);
|
||||||
|
//se il file non è di GF (si vede dal codart) viene saltato! ohp!
|
||||||
|
if (!ordine_gf(recset))
|
||||||
|
{
|
||||||
|
TString msg;
|
||||||
|
msg.format("Scartato file: %s ", (const char*)curr_fname.name());
|
||||||
|
log.log(1, msg);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
//avverte sul log quale file sta elaborando
|
//avverte sul log quale file sta elaborando
|
||||||
TString msg;
|
TString msg;
|
||||||
msg.format("Elaborazione file: %s", curr_fname.name());
|
msg.format("Elaborazione file: %s", (const char*)curr_fname.name());
|
||||||
log.log(0, msg);
|
log.log(0, msg);
|
||||||
|
|
||||||
//variabili da riempire ad ogni giro
|
//variabili da riempire ad ogni giro
|
||||||
TString4 curr_tiporiga;
|
TString4 curr_tiporiga; //tipo riga in esame (HT...RA), ovvero sezione del file
|
||||||
int curr_nriga = 0;
|
int curr_nriga = 0; //n riga della sezione in esame
|
||||||
long codcf = 0L;
|
TString ragsoc, piva;
|
||||||
TString ragsoc;
|
TString hd_spedizione; //questi stanno qui perchè valgono una volta per file .txt
|
||||||
TString hd_indsped, ht_indfatt;
|
TString ht_fatturazione;
|
||||||
|
TString ho_note_generali;
|
||||||
|
|
||||||
|
//per ogni ordine in formato .txt genera un file.ini che andrà poi documentizzato
|
||||||
|
TFilename ini_fname = tmp;
|
||||||
|
ini_fname.add(format("ORD%05ld.ini", i));
|
||||||
|
TConfig curr_ini(ini_fname);
|
||||||
|
|
||||||
|
curr_ini.set_paragraph("Transaction"); //setto il paragrafo [Transaction] del file ini
|
||||||
|
|
||||||
|
curr_ini.set("Action","INSERT");
|
||||||
|
curr_ini.set("Mode","");
|
||||||
|
|
||||||
|
//set_paragraph sulle testate (file 33, doc)
|
||||||
|
TString8 head_paragrafo;
|
||||||
|
head_paragrafo << LF_DOC;
|
||||||
|
curr_ini.set_paragraph(head_paragrafo);
|
||||||
|
|
||||||
//comincia il giro sulle righe del recordset
|
//comincia il giro sulle righe del recordset
|
||||||
|
//va al contrario perchè se le righe non hanno articoli di GF -> salta il tutto
|
||||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||||
{
|
{
|
||||||
//riga corrente del file di input
|
//riga corrente del file di input
|
||||||
@ -160,76 +361,49 @@ bool TTrasferimento_ordini::elabora()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
curr_nriga ++;
|
curr_nriga ++;
|
||||||
|
|
||||||
//trattazione delle varie sezioni
|
//trattazione delle varie sezioni
|
||||||
|
// HF
|
||||||
if (curr_tiporiga == "HF")
|
if (curr_tiporiga == "HF")
|
||||||
{
|
elab_hf(riga_txt, curr_ini, curr_nriga, log, ragsoc);
|
||||||
switch (curr_nriga)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
ragsoc = riga_txt.mid(5, 100);
|
|
||||||
ragsoc.trim();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
{
|
|
||||||
const long cc = atol(riga_txt.mid(14,6));
|
|
||||||
if (cc > 0)
|
|
||||||
codcf = cc;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
} //if(curr_tiporiga=HF
|
|
||||||
|
|
||||||
|
// HD
|
||||||
if (curr_tiporiga == "HD")
|
if (curr_tiporiga == "HD")
|
||||||
fill_string(curr_nriga, riga_txt.mid(5, 100), hd_indsped);
|
elab_hd_ht(riga_txt.mid(5, 100), curr_nriga, hd_spedizione); //(note spedizione)
|
||||||
if (curr_tiporiga == "HT")
|
|
||||||
fill_string(curr_nriga, riga_txt.mid(5, 100), ht_indfatt);
|
|
||||||
|
|
||||||
|
// HT
|
||||||
|
if (curr_tiporiga == "HT")
|
||||||
|
elab_hd_ht(riga_txt.mid(5, 100), curr_nriga, ht_fatturazione); //(note fatturazione)
|
||||||
|
|
||||||
|
// HO
|
||||||
|
if (curr_tiporiga == "HO")
|
||||||
|
elab_ro(riga_txt, curr_ini, curr_nriga, log, ho_note_generali);
|
||||||
|
|
||||||
|
// RA
|
||||||
//gestione delle righe ordine
|
//gestione delle righe ordine
|
||||||
if (curr_tiporiga == "RA")
|
if (curr_tiporiga == "RA")
|
||||||
{
|
elab_ra(riga_txt, curr_ini, curr_nriga, log);
|
||||||
}
|
|
||||||
|
|
||||||
} //for(bool ok=recset.move.frst...
|
} //for(bool ok=recset.move.frst...
|
||||||
|
|
||||||
//per prima cosa controlla se è possibile risalire al cliente che ha generato l'ordine..
|
//scrive sul campo NOTE della testata quello che sa delle note spedizione e fatturazione
|
||||||
//..no cliente...no party!
|
TString note;
|
||||||
if (codcf <= 0)
|
note << '"';
|
||||||
{
|
|
||||||
TString msg;
|
|
||||||
msg.format("Il cliente %s ha codice nullo!", (const char*)ragsoc);
|
|
||||||
log.log(1, msg);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//per ogni ordine in formato .txt genera un file.ini che andrà poi documentizzato
|
if (hd_spedizione.full())
|
||||||
TFilename ini_fname = tmp;
|
note << "Note Spedizione: " << hd_spedizione << "\\n";
|
||||||
ini_fname.add(format("ORD%05ld.ini", i));
|
if (ht_fatturazione.full())
|
||||||
TConfig curr_ini(ini_fname);
|
note << "Note Fatturazione: " << ht_fatturazione << "\\n";
|
||||||
|
if (ho_note_generali.full())
|
||||||
|
note << "Note generali: " << ho_note_generali;
|
||||||
|
|
||||||
curr_ini.set_paragraph("Transaction"); //setto il paragrafo [Transaction] del file ini
|
note << '"';
|
||||||
|
curr_ini.set(DOC_NOTE, note, head_paragrafo);
|
||||||
curr_ini.set("Action","INSERT");
|
|
||||||
curr_ini.set("Mode","");
|
|
||||||
|
|
||||||
curr_ini.set_paragraph("33"); //setto il paragrafo [33] del file ini (testata)
|
//qui ci va il lancio di ve0 con l'ini generato
|
||||||
|
|
||||||
//eliminazione del file sorgente
|
//qui ci va lo spostamento del file elaborato se ve0 ha funzionato correttamente
|
||||||
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...
|
} //for(int i...
|
||||||
|
|
||||||
message_box(TR("Acquisizione ordini completata"));
|
message_box(TR("Acquisizione ordini completata"));
|
||||||
@ -246,7 +420,9 @@ bool TTrasferimento_ordini::create()
|
|||||||
//se non ha la VE non può proseguire
|
//se non ha la VE non può proseguire
|
||||||
if (!has_module(VEAUT))
|
if (!has_module(VEAUT))
|
||||||
return error_box(TR("Modulo non autorizzato"));
|
return error_box(TR("Modulo non autorizzato"));
|
||||||
|
Tdninst dninst;
|
||||||
|
if (!dninst.can_I_run(true))
|
||||||
|
return error_box(TR("Programma non autorizzato!"));
|
||||||
return TSkeleton_application::create();
|
return TSkeleton_application::create();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
#define F_PATH_SRC 101
|
#define F_PATH_SRC 101
|
||||||
#define F_ERASE_TRANSFERRED 102
|
#define F_PATH_DST 102
|
||||||
|
@ -2,20 +2,25 @@
|
|||||||
|
|
||||||
PAGE "Trasferimento Ordini Web->Campo" -1 -1 78 5
|
PAGE "Trasferimento Ordini Web->Campo" -1 -1 78 5
|
||||||
|
|
||||||
STRING F_PATH_SRC 255 45
|
STRING F_PATH_SRC 255 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Cartella di origine "
|
PROMPT 1 1 "Cartella origine "
|
||||||
DSELECT
|
DSELECT
|
||||||
FLAGS "M"
|
FLAGS "M"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
WARNING "Selezionare una cartella valida!"
|
WARNING "Selezionare una cartella valida!"
|
||||||
END
|
END
|
||||||
|
|
||||||
BOOLEAN F_ERASE_TRANSFERRED
|
STRING F_PATH_DST 255 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 3 "Eliminare i file di origine dopo la copia"
|
PROMPT 1 2 "Cartella destinazione "
|
||||||
|
DSELECT
|
||||||
|
FLAGS "M"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Selezionare una cartella valida!"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
STRING DLG_PROFILE 50
|
STRING DLG_PROFILE 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 -1 "Profilo "
|
PROMPT 1 -1 "Profilo "
|
||||||
|
@ -253,7 +253,7 @@ BEGIN
|
|||||||
DISPLAY "Descrizione@50" DESCRIZ
|
DISPLAY "Descrizione@50" DESCRIZ
|
||||||
OUTPUT S_CDC CODCOSTO
|
OUTPUT S_CDC CODCOSTO
|
||||||
OUTPUT S_CDC_DESCR DESCRIZ
|
OUTPUT S_CDC_DESCR DESCRIZ
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE NORMAL
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
GROUP 1
|
GROUP 1
|
||||||
END
|
END
|
||||||
|
Loading…
x
Reference in New Issue
Block a user