Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento : iniziato il programma acquisizione ordini di gianniferrari git-svn-id: svn://10.65.10.50/trunk@20240 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5347a1dd32
commit
f98b9c6182
@ -40,6 +40,9 @@ Stampa bollettini postali Condeco
|
||||
Copia movimenti magazzino AZ
|
||||
Importazione anagrafiche e fatture da paghe
|
||||
|
||||
PG0067 Commercialista (Sicuri)
|
||||
Archiviazione F24 (ricevuti da banca) in formato .pdf. Stampa/estrazione statistiche dei pdf archiviati.
|
||||
|
||||
PG0068 HK (Sicuri)
|
||||
Generazione di movimenti analitici da bolle di vendita in modo da evere costi reali, provvigioni, omaggi
|
||||
|
||||
|
15
ps/ps0398.cpp
Executable file
15
ps/ps0398.cpp
Executable file
@ -0,0 +1,15 @@
|
||||
#include <xvt.h>
|
||||
|
||||
#include "ps0398.h"
|
||||
|
||||
int main( int argc, char** argv )
|
||||
{
|
||||
const int r = (argc > 1) ? argv[1][1]-'0' : -1;
|
||||
|
||||
switch (r)
|
||||
{
|
||||
case 0: ps0398100(argc, argv); break; // trasferimento ordini da sito web a campo (gianni ferrari)
|
||||
default: break;
|
||||
}
|
||||
return 0;
|
||||
}
|
1
ps/ps0398.h
Executable file
1
ps/ps0398.h
Executable file
@ -0,0 +1 @@
|
||||
int ps0398100(int, char**);
|
268
ps/ps0398100.cpp
Executable file
268
ps/ps0398100.cpp
Executable file
@ -0,0 +1,268 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <config.h>
|
||||
#include <defmask.h>
|
||||
#include <modaut.h>
|
||||
#include <progind.h>
|
||||
#include <reputils.h>
|
||||
#include <textset.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "ps0398100a.h"
|
||||
|
||||
///////////////////////////////////////////////
|
||||
// MASCHERA
|
||||
///////////////////////////////////////////////
|
||||
class TTrasferimento_ordini_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TTrasferimento_ordini_mask();
|
||||
};
|
||||
|
||||
TTrasferimento_ordini_mask::TTrasferimento_ordini_mask() : TAutomask("ps0398100a")
|
||||
{
|
||||
}
|
||||
|
||||
bool TTrasferimento_ordini_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
/*switch(o.dlg())
|
||||
{
|
||||
default:
|
||||
break;
|
||||
}*/
|
||||
return true;
|
||||
}
|
||||
|
||||
class TTrasferimento_ordini_recordset : public TCSV_recordset
|
||||
{
|
||||
public:
|
||||
TTrasferimento_ordini_recordset(const char* filename);
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// RECORDSET
|
||||
/////////////////////////////////////////////
|
||||
//creazione del recordset di ogni ordine
|
||||
TTrasferimento_ordini_recordset::TTrasferimento_ordini_recordset(const char* filename) : TCSV_recordset("CSV(\";\")")
|
||||
{
|
||||
load_file(filename);
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// APPLICAZIONE
|
||||
/////////////////////////////////////////////
|
||||
//Ridistributore di F24 per il computer
|
||||
class TTrasferimento_ordini : public TSkeleton_application
|
||||
{
|
||||
TTrasferimento_ordini_mask* _mask;
|
||||
|
||||
virtual bool check_autorization() const {return false;}
|
||||
|
||||
protected:
|
||||
virtual const char * extra_modules() const {return "ve";}
|
||||
virtual bool create();
|
||||
void fill_string(const int curr_nriga, const TString& riga_txt, TString& str);
|
||||
bool elabora();
|
||||
|
||||
public:
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
|
||||
void TTrasferimento_ordini::fill_string(const int curr_nriga, const TString& riga_txt, TString& str)
|
||||
{
|
||||
switch (curr_nriga)
|
||||
{
|
||||
case 3:
|
||||
str = riga_txt; //indirizzo
|
||||
str.trim();
|
||||
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();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool TTrasferimento_ordini::elabora()
|
||||
{
|
||||
TFilename src_files = _mask->get(F_PATH_SRC);
|
||||
src_files.add("*.txt");
|
||||
TString_array src_files_list;
|
||||
//dalla cartella origine prende tutti i files .pdf e crea una simpatica lista
|
||||
const int n_files_txt = list_files(src_files, src_files_list);
|
||||
|
||||
const bool delete_src_files = _mask->get_bool(F_ERASE_TRANSFERRED);
|
||||
//cartella dove saranno creati i .ini
|
||||
TFilename tmp;
|
||||
tmp.tempdir();
|
||||
tmp.add("ps0398");
|
||||
const bool crea_dir = make_dir(tmp);
|
||||
//non riesce a crearla! deve dare errore di grave livello!
|
||||
if (!crea_dir)
|
||||
{
|
||||
TString msg;
|
||||
msg.format("Impossibile creare la cartella %s !", tmp);
|
||||
return error_box(msg);
|
||||
}
|
||||
|
||||
//scansione dello string_array per il trasferimento (con tanto di progind e log)
|
||||
TProgind pi(n_files_txt, TR("Acquisizione ordini in corso..."), true, true);
|
||||
TLog_report log("ERRORI DI TRASFERIMENTO");
|
||||
|
||||
for (int i = 0; i < n_files_txt; i++)
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
//file in formato filename (è l'ordine corrente da elaborare)
|
||||
const TFilename curr_fname = src_files_list.row(i);
|
||||
//creazione del recordset associato al file
|
||||
TTrasferimento_ordini_recordset recset(curr_fname);
|
||||
//avverte sul log quale file sta elaborando
|
||||
TString msg;
|
||||
msg.format("Elaborazione file: %s", curr_fname.name());
|
||||
log.log(0, msg);
|
||||
|
||||
//variabili da riempire ad ogni giro
|
||||
TString4 curr_tiporiga;
|
||||
int curr_nriga = 0;
|
||||
long codcf = 0L;
|
||||
TString ragsoc;
|
||||
TString hd_indsped, ht_indfatt;
|
||||
|
||||
//comincia il giro sulle righe del recordset
|
||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
//riga corrente del file di input
|
||||
const TString& riga_txt = recset.get(0L).as_string();
|
||||
//gestione cambio riga e cambio sezione
|
||||
const TString& tr = riga_txt.left(2);
|
||||
if (tr != curr_tiporiga)
|
||||
{
|
||||
curr_tiporiga = tr;
|
||||
curr_nriga = 1;
|
||||
}
|
||||
else
|
||||
curr_nriga ++;
|
||||
//trattazione delle varie sezioni
|
||||
if (curr_tiporiga == "HF")
|
||||
{
|
||||
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
|
||||
|
||||
if (curr_tiporiga == "HD")
|
||||
fill_string(curr_nriga, riga_txt.mid(5, 100), hd_indsped);
|
||||
if (curr_tiporiga == "HT")
|
||||
fill_string(curr_nriga, riga_txt.mid(5, 100), ht_indfatt);
|
||||
|
||||
//gestione delle righe ordine
|
||||
if (curr_tiporiga == "RA")
|
||||
{
|
||||
}
|
||||
|
||||
} //for(bool ok=recset.move.frst...
|
||||
|
||||
//per prima cosa controlla se è possibile risalire al cliente che ha generato l'ordine..
|
||||
//..no cliente...no party!
|
||||
if (codcf <= 0)
|
||||
{
|
||||
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
|
||||
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","");
|
||||
|
||||
curr_ini.set_paragraph("33"); //setto il paragrafo [33] del file ini (testata)
|
||||
|
||||
//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("Acquisizione ordini completata"));
|
||||
|
||||
const int items = log.recordset()->items();
|
||||
if (items > 0)
|
||||
log.preview();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TTrasferimento_ordini::create()
|
||||
{
|
||||
//se non ha la CG non può proseguire
|
||||
if (!has_module(VEAUT))
|
||||
return error_box(TR("Modulo non autorizzato"));
|
||||
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
void TTrasferimento_ordini::main_loop()
|
||||
{
|
||||
_mask = new TTrasferimento_ordini_mask;
|
||||
if (_mask->run() != K_QUIT)
|
||||
elabora();
|
||||
|
||||
delete _mask;
|
||||
_mask = NULL;
|
||||
}
|
||||
|
||||
int ps0398100 (int argc, char **argv)
|
||||
{
|
||||
TTrasferimento_ordini a;
|
||||
a.run(argc,argv, TR("Trasferimento ordini"));
|
||||
return true;
|
||||
}
|
2
ps/ps0398100a.h
Executable file
2
ps/ps0398100a.h
Executable file
@ -0,0 +1,2 @@
|
||||
#define F_PATH_SRC 101
|
||||
#define F_ERASE_TRANSFERRED 102
|
33
ps/ps0398100a.uml
Executable file
33
ps/ps0398100a.uml
Executable file
@ -0,0 +1,33 @@
|
||||
#include "ps0398100a.h"
|
||||
|
||||
PAGE "Trasferimento Ordini Web->Campo" -1 -1 78 5
|
||||
|
||||
STRING F_PATH_SRC 255 45
|
||||
BEGIN
|
||||
PROMPT 1 1 "Cartella di origine "
|
||||
DSELECT
|
||||
FLAGS "M"
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Selezionare una cartella valida!"
|
||||
END
|
||||
|
||||
BOOLEAN F_ERASE_TRANSFERRED
|
||||
BEGIN
|
||||
PROMPT 1 3 "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
|
||||
|
||||
#include <elabar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user