Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@22223 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2011-06-07 10:04:39 +00:00
parent 5ea1fa9367
commit 9fb2626891
14 changed files with 398 additions and 237 deletions

View File

@ -56,7 +56,7 @@ bool THA_table_app::get_next_key(TToken_string& key)
const TString& codart = curr_mask().get(F_CODART); const TString& codart = curr_mask().get(F_CODART);
if (codart.full()) if (codart.full())
{ {
const TString& codtab = get_next_att_key(codart); const TString& codtab = hd_get_next_att_key(codart);
//riempie la token_string con i dati richiesti //riempie la token_string con i dati richiesti
key.add(F_CODART); key.add(F_CODART);

View File

@ -31,10 +31,12 @@
//pagina 2 //pagina 2
//esportazione dati //esportazione dati
#define F_OUTPUT_PATH 250 #define F_OUTPUT_PATH 250
#define F_OU_CARDOC_NUM 251 #define F_CONCENTRATORE_PATH 251
#define F_OU_CARDOC_TIP 252 #define F_TRANSACTION_PATH 252
#define F_OU_CARDOC_STA 253 #define F_OU_CARDOC_NUM 253
#define F_OU_BARCODE_TIP 254 #define F_OU_CARDOC_TIP 254
#define F_OU_CARDOC_STA 255
#define F_OU_BARCODE_TIP 256
//importazione dati //importazione dati
#define F_INPUT_PATH 260 #define F_INPUT_PATH 260

View File

@ -327,12 +327,12 @@ PAGE "Trasferimenti" 0 2 0 0
GROUPBOX DLG_NULL 76 7 GROUPBOX DLG_NULL 76 7
BEGIN BEGIN
PROMPT 1 1 "@bEsportazione" PROMPT 1 0 "@bEsportazione"
END END
STRING F_OUTPUT_PATH 255 39 STRING F_OUTPUT_PATH 255 40
BEGIN BEGIN
PROMPT 2 2 "Percorso files .txt da esportare " PROMPT 2 1 "Server: percorso files .txt "
DSELECT DSELECT
FLAGS "M" FLAGS "M"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
@ -340,14 +340,34 @@ BEGIN
FIELD OutputPath FIELD OutputPath
END END
GROUPBOX DLG_NULL 74 3 STRING F_CONCENTRATORE_PATH 255 40
BEGIN BEGIN
PROMPT 2 3 "@bDocumenti di carico" PROMPT 2 2 "Server: Percorso concentratore "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella valida!"
FIELD ConcentratorePath
END
STRING F_TRANSACTION_PATH 255 40
BEGIN
PROMPT 2 3 "Client: Percorso .ini transaz. "
DSELECT
FLAGS "M"
CHECKTYPE REQUIRED
WARNING "Selezionare una cartella valida!"
FIELD TransactionPath
END
GROUPBOX DLG_NULL 44 3
BEGIN
PROMPT 2 4 "@bDocumenti di carico"
END END
STRING F_OU_CARDOC_NUM 4 STRING F_OU_CARDOC_NUM 4
BEGIN BEGIN
PROMPT 3 4 "Numerazione " PROMPT 3 5 "Numerazione "
USE %NUM USE %NUM
INPUT CODTAB F_OU_CARDOC_NUM INPUT CODTAB F_OU_CARDOC_NUM
DISPLAY "Codice@8" CODTAB DISPLAY "Codice@8" CODTAB
@ -359,7 +379,7 @@ END
STRING F_OU_CARDOC_TIP 4 STRING F_OU_CARDOC_TIP 4
BEGIN BEGIN
PROMPT 23 4 "Tipo " PROMPT 23 5 "Tipo "
USE %TIP USE %TIP
INPUT CODTAB F_OU_CARDOC_TIP INPUT CODTAB F_OU_CARDOC_TIP
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
@ -372,7 +392,7 @@ END
STRING F_OU_CARDOC_STA 1 STRING F_OU_CARDOC_STA 1
BEGIN BEGIN
PROMPT 36 4 "Stato " PROMPT 36 5 "Stato "
USE %STD USE %STD
INPUT CODTAB F_OU_CARDOC_STA INPUT CODTAB F_OU_CARDOC_STA
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
@ -385,7 +405,7 @@ END
LISTBOX F_OU_BARCODE_TIP 10 LISTBOX F_OU_BARCODE_TIP 10
BEGIN BEGIN
PROMPT 2 6 "Tipo di barcode " PROMPT 47 5 "Tipo di barcode "
ITEM "N|Normale" ITEM "N|Normale"
ITEM "8|EAN8 " ITEM "8|EAN8 "
ITEM "1|EA13 " ITEM "1|EA13 "

View File

@ -1,5 +1,6 @@
#include <applicat.h> #include <applicat.h>
#include <automask.h> #include <automask.h>
#include <execp.h>
#include <progind.h> #include <progind.h>
#include <comuni.h> #include <comuni.h>
@ -8,7 +9,7 @@
#include "../ve/condv.h" #include "../ve/condv.h"
#include "halib.h" #include "halib.h"
#include "ha1250.h"
#include "ha1200a.h" #include "ha1200a.h"
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -59,20 +60,18 @@ bool TFile2Txt_mask::on_field_event(TOperable_field& o, TField_event e, long jol
TFile2Txt_mask::TFile2Txt_mask() : TAutomask ("ha1200a") TFile2Txt_mask::TFile2Txt_mask() : TAutomask ("ha1200a")
{ {
TConfig config(CONFIG_DITTA, "ha");
const TString& path = config.get("OutputPath");
set(F_PATH, path);
} }
/////////////////////////////////////// ///////////////////////////////////////
// TSkeleton_application // TSkeleton_application
/////////////////////////////////////// ///////////////////////////////////////
class TFile2Txt : public TSkeleton_application class TFile2Txt : public THardy_transaction
{ {
TFilename _output_dir;
protected: protected:
void elabora(const TMask& mask); virtual void elabora(const TMask& mask);
virtual TMask* create_mask() const;
virtual const char* fake_trans_file() const;
bool genera_agenti_txt(); bool genera_agenti_txt();
bool genera_clienti_txt(const long da_codcli); bool genera_clienti_txt(const long da_codcli);
@ -93,15 +92,14 @@ protected:
TFilename genera_path(const TString& prefisso); TFilename genera_path(const TString& prefisso);
public: public:
virtual void main_loop();
virtual bool create();
}; };
TFilename TFile2Txt::genera_path(const TString& prefisso) TFilename TFile2Txt::genera_path(const TString& prefisso)
{ {
TFilename output_path; TFilename output_path;
output_path = _output_dir; output_path = _output_path;
output_path.add(prefisso); output_path.add(prefisso);
output_path.ext(".txt"); output_path.ext(".txt");
return output_path; return output_path;
@ -858,6 +856,11 @@ bool TFile2Txt::genera_ripristino_txt(const TMask& mask)
//metodo di alto livello per la gestione delle chiamate //metodo di alto livello per la gestione delle chiamate
void TFile2Txt::elabora(const TMask& mask) void TFile2Txt::elabora(const TMask& mask)
{ {
// a) stoppa il concentratore
chiudi_concentratore();
//b) esegue le vere elaborazioni
//------------------------------
bool go_on = true; bool go_on = true;
if (mask.get_bool(F_AGENTI)) if (mask.get_bool(F_AGENTI))
@ -904,26 +907,31 @@ void TFile2Txt::elabora(const TMask& mask)
if (mask.get_bool(F_INIMAG) && go_on) if (mask.get_bool(F_INIMAG) && go_on)
go_on = genera_ripristino_txt(mask); go_on = genera_ripristino_txt(mask);
//c) lancia il concentratore in modalità di carico
carica_concentratore();
//d) rilancia il concentratore in modalità di trasmissione
trasmetti_concentratore();
} }
void TFile2Txt::main_loop() TMask* TFile2Txt::create_mask() const
{ {
TFile2Txt_mask mask; TMask* mask = new TFile2Txt_mask;
_output_dir = mask.get(F_PATH); mask->set(F_OUTPUT_PATH, _output_path);
if (!_output_dir.exist()) mask->set(F_CONC_PATH, _conc_path);
error_box("Non esiste la cartella di destinazione indicata!"); mask->set(F_TRANS_PATH, _trans_path);
while (mask.run() == K_ENTER) return mask;
{
elabora(mask);
}
} }
bool TFile2Txt::create()
const char* TFile2Txt::fake_trans_file() const
{ {
return TSkeleton_application::create(); return "157";
} }
int ha1200(int argc, char* argv[]) int ha1200(int argc, char* argv[])
{ {
TFile2Txt a; TFile2Txt a;

View File

@ -1,26 +1,28 @@
#define F_PATH 200 #define F_OUTPUT_PATH 200
#define F_AGENTI 201 #define F_CONC_PATH 201
#define F_CLIENTI 202 #define F_TRANS_PATH 202
#define F_SOSPESI 203 #define F_AGENTI 212
#define F_LISTINI 204 #define F_CLIENTI 213
#define F_CONTRATTI 205 #define F_SOSPESI 214
#define F_PROMOZIONI 206 #define F_LISTINI 215
#define F_PRODOTTI 207 #define F_CONTRATTI 216
#define F_LINEE 208 #define F_PROMOZIONI 217
#define F_BARCODE 209 #define F_PRODOTTI 218
#define F_DECODART 210 #define F_LINEE 219
#define F_ATTREZZA 211 #define F_BARCODE 220
#define F_TABPAG 212 #define F_DECODART 221
#define F_CARICO 213 #define F_ATTREZZA 222
#define F_INIMAG 214 #define F_TABPAG 223
#define F_CARICO 224
#define F_INIMAG 225
#define F_DA_CODCLI 220 #define F_DA_CODCLI 230
#define F_DA_SOSP_CODCLI 221 #define F_DA_SOSP_CODCLI 231
#define F_CODNUM 222 #define F_CODNUM 232
#define F_ANNO 223 #define F_ANNO 233
#define F_PROVV 224 #define F_PROVV 234
#define F_STATO 225 #define F_STATO 235
#define F_DA_CARDOC 226 #define F_DA_CARDOC 236
#define F_A_CARDOC 227 #define F_A_CARDOC 237
#define F_ANNOES 230 #define F_ANNOES 240
#define F_CODMAG 231 #define F_CODMAG 241

View File

@ -1,31 +1,45 @@
#include "ha1200a.h" #include "ha1200a.h"
PAGE "Esportazione archivi in formato .txt" -1 -1 78 13 PAGE "Esportazione archivi in formato .txt" -1 -1 78 15
STRING F_PATH 256 50 STRING F_OUTPUT_PATH 256 49
BEGIN BEGIN
PROMPT 1 1 "Cartella creazione files " PROMPT 1 0 "Cartella creazione files "
FLAGS "D"
END
STRING F_CONC_PATH 256 49
BEGIN
PROMPT 1 1 "Cartella concentratore "
FLAGS "D"
END
STRING F_TRANS_PATH 256 49
BEGIN
PROMPT 1 2 "Cartella file transazione "
FLAGS "D" FLAGS "D"
END END
GROUPBOX DLG_NULL 76 11 GROUPBOX DLG_NULL 76 11
BEGIN BEGIN
PROMPT 1 2 "@bArchivi da trasferire" PROMPT 1 3 "@bArchivi da trasferire"
END END
BOOLEAN F_AGENTI BOOLEAN F_AGENTI
BEGIN BEGIN
PROMPT 2 3 "Agenti" PROMPT 2 4 "Agenti"
FIELD Agenti
END END
BOOLEAN F_CLIENTI BOOLEAN F_CLIENTI
BEGIN BEGIN
PROMPT 2 4 "Clienti" PROMPT 2 5 "Clienti"
FIELD Clienti
END END
NUMBER F_DA_CODCLI 6 NUMBER F_DA_CODCLI 6
BEGIN BEGIN
PROMPT 12 4 "Dal cli: " PROMPT 12 5 "Dal cli: "
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "C" INPUT TIPOCF "C"
INPUT CODCF F_DA_CODCLI INPUT CODCF F_DA_CODCLI
@ -33,16 +47,18 @@ BEGIN
DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT F_DA_CODCLI CODCF OUTPUT F_DA_CODCLI CODCF
CHECKTYPE NORMAL CHECKTYPE NORMAL
FIELD Dacliente
END END
BOOLEAN F_SOSPESI BOOLEAN F_SOSPESI
BEGIN BEGIN
PROMPT 2 5 "Sospesi" PROMPT 2 6 "Sospesi"
FIELD Sospesi
END END
NUMBER F_DA_SOSP_CODCLI 6 NUMBER F_DA_SOSP_CODCLI 6
BEGIN BEGIN
PROMPT 12 5 "Dal cli: " PROMPT 12 6 "Dal cli: "
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF "C" INPUT TIPOCF "C"
INPUT CODCF F_DA_SOSP_CODCLI INPUT CODCF F_DA_SOSP_CODCLI
@ -50,63 +66,74 @@ BEGIN
DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT F_DA_SOSP_CODCLI CODCF OUTPUT F_DA_SOSP_CODCLI CODCF
CHECKTYPE NORMAL CHECKTYPE NORMAL
FIELD Dasospeso
END END
BOOLEAN F_LISTINI BOOLEAN F_LISTINI
BEGIN BEGIN
PROMPT 2 6 "Listini" PROMPT 2 7 "Listini"
FIELD Listini
END END
BOOLEAN F_CONTRATTI BOOLEAN F_CONTRATTI
BEGIN BEGIN
PROMPT 2 7 "Contratti" PROMPT 2 8 "Contratti"
FIELD Contratti
END END
BOOLEAN F_PROMOZIONI BOOLEAN F_PROMOZIONI
BEGIN BEGIN
PROMPT 2 8 "Promozioni" PROMPT 2 9 "Promozioni"
FIELD Promozioni
END END
BOOLEAN F_DECODART BOOLEAN F_DECODART
BEGIN BEGIN
PROMPT 2 9 "Codici articolo alternativi" PROMPT 2 10 "Codici articolo alternativi"
FIELD Codartalt
END END
BOOLEAN F_PRODOTTI BOOLEAN F_PRODOTTI
BEGIN BEGIN
PROMPT 32 3 "Prodotti" PROMPT 32 4 "Prodotti"
FIELD Prodotti
END END
BOOLEAN F_LINEE BOOLEAN F_LINEE
BEGIN BEGIN
PROMPT 32 4 "Linee" PROMPT 32 5 "Linee"
FIELD Linee
END END
BOOLEAN F_BARCODE BOOLEAN F_BARCODE
BEGIN BEGIN
PROMPT 32 5 "Barcode" PROMPT 32 6 "Barcode"
FIELD Barcode
END END
BOOLEAN F_ATTREZZA BOOLEAN F_ATTREZZA
BEGIN BEGIN
PROMPT 53 3 "Attrezzature" PROMPT 53 4 "Attrezzature"
FIELD Attrezzature
END END
BOOLEAN F_TABPAG BOOLEAN F_TABPAG
BEGIN BEGIN
PROMPT 53 4 "Condizioni pagamento" PROMPT 53 5 "Condizioni pagamento"
FIELD Condpag
END END
BOOLEAN F_CARICO BOOLEAN F_CARICO
BEGIN BEGIN
PROMPT 53 5 "Documenti di carico" PROMPT 53 6 "Documenti di carico"
MESSAGE FALSE HIDE,2@ MESSAGE FALSE HIDE,2@
MESSAGE TRUE SHOW,2@ MESSAGE TRUE SHOW,2@
FIELD Carico
END END
NUMBER F_DA_CARDOC 7 NUMBER F_DA_CARDOC 7
BEGIN BEGIN
PROMPT 53 6 "Dal doc. n. " PROMPT 53 7 "Dal doc. n. "
USE DOC SELECT (STATO=#F_STATO) USE DOC SELECT (STATO=#F_STATO)
INPUT PROVV "D" INPUT PROVV "D"
INPUT ANNO F_ANNO SELECT INPUT ANNO F_ANNO SELECT
@ -122,11 +149,12 @@ BEGIN
OUTPUT F_DA_CARDOC NDOC OUTPUT F_DA_CARDOC NDOC
CHECKTYPE NORMAL CHECKTYPE NORMAL
GROUP 2 GROUP 2
FIELD Dacardoc
END END
NUMBER F_A_CARDOC 7 NUMBER F_A_CARDOC 7
BEGIN BEGIN
PROMPT 53 7 "Al doc n. " PROMPT 53 8 "Al doc n. "
COPY USE F_DA_CARDOC COPY USE F_DA_CARDOC
INPUT PROVV "D" INPUT PROVV "D"
INPUT ANNO F_ANNO SELECT INPUT ANNO F_ANNO SELECT
@ -138,40 +166,43 @@ BEGIN
NUM_EXPR (#F_A_CARDOC>=#F_DA_CARDOC)||(#F_A_CARDOC==0) NUM_EXPR (#F_A_CARDOC>=#F_DA_CARDOC)||(#F_A_CARDOC==0)
WARNING "Il numero documento finale deve essere > di quello iniziale oppure lasciato vuoto" WARNING "Il numero documento finale deve essere > di quello iniziale oppure lasciato vuoto"
GROUP 2 GROUP 2
FIELD Acardoc
END END
STRING F_CODNUM 4 STRING F_CODNUM 4
BEGIN BEGIN
PROMPT 53 8 "Num. " PROMPT 53 9 "Num. "
FLAGS "D" FLAGS "D"
GROUP 2 GROUP 2
END END
NUMBER F_ANNO 4 NUMBER F_ANNO 4
BEGIN BEGIN
PROMPT 63 8 "Anno " PROMPT 63 9 "Anno "
FLAGS "A" FLAGS "A"
MESSAGE K_SPACE,F_CARICO MESSAGE K_SPACE,F_CARICO
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
GROUP 2 GROUP 2
FIELD Anno
END END
STRING F_STATO 1 STRING F_STATO 1
BEGIN BEGIN
PROMPT 77 8 "" PROMPT 77 9 ""
FLAGS "H" FLAGS "H"
END END
BOOLEAN F_INIMAG BOOLEAN F_INIMAG
BEGIN BEGIN
PROMPT 53 9 "Ripristina magazzino" PROMPT 53 10 "Ripristina magazzino"
MESSAGE FALSE HIDE,3@ MESSAGE FALSE HIDE,3@
MESSAGE TRUE SHOW,3@ MESSAGE TRUE SHOW,3@
FIELD Ripmag
END END
STRING F_CODMAG 3 STRING F_CODMAG 3
BEGIN BEGIN
PROMPT 53 10 "Mag. " PROMPT 53 11 "Mag. "
USE MAG SELECT CODTAB[4,5]=="" USE MAG SELECT CODTAB[4,5]==""
FLAGS "U" FLAGS "U"
INPUT CODTAB F_CODMAG INPUT CODTAB F_CODMAG
@ -180,15 +211,17 @@ BEGIN
OUTPUT F_CODMAG CODTAB[1,3] OUTPUT F_CODMAG CODTAB[1,3]
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
GROUP 3 GROUP 3
FIELD Codmag
END END
NUMBER F_ANNOES 4 NUMBER F_ANNOES 4
BEGIN BEGIN
PROMPT 64 10 "Anno " PROMPT 64 11 "Anno "
FLAGS "A" FLAGS "A"
MESSAGE K_SPACE,F_INIMAG MESSAGE K_SPACE,F_INIMAG
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
GROUP 3 GROUP 3
FIELD Annomag
END END
ENDPAGE ENDPAGE

View File

@ -1,6 +1,8 @@
#include <automask.h> #include <automask.h>
#include <config.h> #include <config.h>
#include <execp.h>
#include <relation.h> #include <relation.h>
#include <utility.h>
#include "ha1250.h" #include "ha1250.h"
@ -19,6 +21,68 @@ bool THardy_transaction::is_server() const
return i_am_server; return i_am_server;
} }
bool THardy_transaction::is_by_postino() const
{
TFilename trans = argv(2);
return (trans.starts_with("/i") || trans.starts_with("-i"));
}
void THardy_transaction::chiudi_concentratore()
{
TFilename bat_chiudi = _conc_path;
bat_chiudi.add("chiudi.bat");
TExternal_app app_chiudi(bat_chiudi);
app_chiudi.run();
//sara' meglio aspettare qualche secondo
xvt_sys_sleep(3000);
}
void THardy_transaction::carica_concentratore()
{
TFilename bat_carica = _conc_path;
bat_carica.add("car.bat");
TExternal_app app_carica(bat_carica);
app_carica.run();
//sara' meglio aspettare qualche secondo
xvt_sys_sleep(1000);
}
bool THardy_transaction::scarica_concentratore()
{
TFilename bat_scarica = _conc_path;
bat_scarica.add("descar.bat");
TExternal_app app_scarica(bat_scarica);
app_scarica.run();
//deve assicurarsi che il file upload.d sia completato; usa un test sulle dimensioni
//aspetta qualche secondo per permettere al concentratore di iniziare a generare il file
TFilename upload = _input_path;
upload.add("upload.d");
//se trova il file upload.d comincia a fare i test
long last_size = 0L;
for (int s = 0; s < 60; s++)
{
xvt_sys_sleep(3000);
long size = fsize(upload);
if (size == last_size && size > 0)
break;
last_size = size;
}
if (last_size == 0L)
return cantread_box(upload);
return true;
}
void THardy_transaction::trasmetti_concentratore()
{
TFilename bat_trasm = _conc_path;
bat_trasm.add("trasmissione.bat");
TExternal_app app_trasm(bat_trasm);
app_trasm.run();
}
void THardy_transaction::main_loop() void THardy_transaction::main_loop()
{ {
@ -27,13 +91,14 @@ void THardy_transaction::main_loop()
//sono il server? //sono il server?
bool i_am_server = is_server(); bool i_am_server = is_server();
TFilename trans = argv(2); //sono lanciato dal postino?
if (trans.starts_with("/i") || trans.starts_with("-i")) if (is_by_postino())
{ {
//se sono il server eseguo subito l'elaborazione //se sono il server eseguo subito l'elaborazione
if (i_am_server) if (i_am_server)
{ {
//legge i files da trasferire //legge i files da trasferire
TFilename trans = argv(2);
trans.ltrim(2); trans.ltrim(2);
TConfig ini(trans, fake_trans_file()); TConfig ini(trans, fake_trans_file());
FOR_EACH_MASK_FIELD(*mask, i, f) FOR_EACH_MASK_FIELD(*mask, i, f)
@ -59,7 +124,8 @@ void THardy_transaction::main_loop()
else else
error_box(TR("Le transazioni possono essere eseguite solo dal server!")); error_box(TR("Le transazioni possono essere eseguite solo dal server!"));
} }
else //sono lanciato in modo interattivo
{
while (mask->run() == K_ENTER) while (mask->run() == K_ENTER)
{ {
//se è il server -> esegue le operazioni di elaborazione //se è il server -> esegue le operazioni di elaborazione
@ -83,6 +149,8 @@ void THardy_transaction::main_loop()
message_box(TR("Transazione di scarico inviata al server")); message_box(TR("Transazione di scarico inviata al server"));
} }
} }
} //if(by_postino(...
delete mask; delete mask;
} }

View File

@ -10,7 +10,12 @@ protected:
virtual void elabora(const TMask& mask) pure; virtual void elabora(const TMask& mask) pure;
virtual TMask* create_mask() const pure; virtual TMask* create_mask() const pure;
bool is_server() const; bool is_server() const;
bool is_by_postino() const;
virtual const char* fake_trans_file() const pure; virtual const char* fake_trans_file() const pure;
void chiudi_concentratore();
void carica_concentratore();
bool scarica_concentratore();
void trasmetti_concentratore();
public: public:
virtual void main_loop(); virtual void main_loop();

View File

@ -11,10 +11,10 @@
#include "../mg/rmovmag.h" #include "../mg/rmovmag.h"
#include "halib.h" #include "halib.h"
#include "ha1250.h"
#include "ha1300a.h" #include "ha1300a.h"
#include "ha1301a.h" #include "ha1301a.h"
//funzione di ordinamento del file di upload una volta caricato in memoria //funzione di ordinamento del file di upload una volta caricato in memoria
static TToken_string tipi_record("SU|VC|TF|RF|SI|BR|RC"); static TToken_string tipi_record("SU|VC|TF|RF|SI|BR|RC");
@ -252,11 +252,6 @@ bool TUpload2Campo_mask::on_field_event(TOperable_field& o, TField_event e, long
TUpload2Campo_mask::TUpload2Campo_mask() : TAutomask ("ha1300a") TUpload2Campo_mask::TUpload2Campo_mask() : TAutomask ("ha1300a")
{ {
TConfig config(CONFIG_DITTA, "ha");
const TString& input_path = config.get("InputPath");
set(F_INPUT_PATH, input_path);
const TString& archive_path = config.get("ArchivePath");
set(F_ARCHIVE_PATH, archive_path);
} }
@ -284,12 +279,16 @@ TUpload2Campo_newcli_mask::TUpload2Campo_newcli_mask() : TAutomask ("ha1301a")
/////////////////////////////////////// ///////////////////////////////////////
// TSkeleton_application // TSkeleton_application
/////////////////////////////////////// ///////////////////////////////////////
class TUpload2Campo : public TSkeleton_application class TUpload2Campo : public THardy_transaction
{ {
bool _can_write; bool _can_write;
TAssoc_array _nuovi_clienti; TAssoc_array _nuovi_clienti;
protected: protected:
virtual void elabora(const TMask& mask);
virtual TMask* create_mask() const;
const char* fake_trans_file() const;
//metodi di basso livello //metodi di basso livello
const TString& check_agente(TString& codice_terminale, TLog_report& log); const TString& check_agente(TString& codice_terminale, TLog_report& log);
const TString& check_articolo(TString& codart, TLog_report& log); const TString& check_articolo(TString& codart, TLog_report& log);
@ -307,11 +306,8 @@ protected:
void elabora_SI(THardy_upload_recordset& recset, TLog_report& log); void elabora_SI(THardy_upload_recordset& recset, TLog_report& log);
void elabora_RC(THardy_upload_recordset& recset, TLog_report& log); void elabora_RC(THardy_upload_recordset& recset, TLog_report& log);
void elabora(const TMask& mask);
public: public:
virtual void main_loop();
virtual bool create();
}; };
///////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////
@ -1321,11 +1317,20 @@ void TUpload2Campo::elabora_RC(THardy_upload_recordset& recset, TLog_report& log
void TUpload2Campo::elabora(const TMask& mask) void TUpload2Campo::elabora(const TMask& mask)
{ {
//prende la directory di archiviazione // a) stoppa il concentratore
const TString archive_path = mask.get(F_ARCHIVE_PATH); chiudi_concentratore();
// b) scarica il concentratore per generare il file upload.d
bool carica = scarica_concentratore();
// c) rilancia il concentratore in modalità trasmissione
trasmetti_concentratore();
// d) esegue le elaborazioni
if (carica)
{
//creazione del filename dei files da importare //creazione del filename dei files da importare
TFilename src_files = mask.get(F_INPUT_PATH); TFilename src_files = _input_path;
//una volta si importavano tutti i files di tipo upload*.d; poi si è passati ad importare solo upload.d e basta! //una volta si importavano tutti i files di tipo upload*.d; poi si è passati ad importare solo upload.d e basta!
//src_files.add("upload*.d"); //src_files.add("upload*.d");
src_files.add("upload.d"); src_files.add("upload.d");
@ -1429,7 +1434,7 @@ void TUpload2Campo::elabora(const TMask& mask)
//sequenza di archiviazione del file di upload se elaborato con successo in via definitiva //sequenza di archiviazione del file di upload se elaborato con successo in via definitiva
if (_can_write) if (_can_write)
{ {
if (archivia_file_importato(archive_path, curr_fname, terminalino, log)) if (archivia_file_importato(_archive_path, curr_fname, terminalino, log))
{ {
msg.cut(0); msg.cut(0);
msg << "Archiviato file " << curr_fname.name_only(); msg << "Archiviato file " << curr_fname.name_only();
@ -1440,21 +1445,24 @@ void TUpload2Campo::elabora(const TMask& mask)
} //for (int i = 0; i < n_files_d;... (giro su tutti i files tipo upload*.d) } //for (int i = 0; i < n_files_d;... (giro su tutti i files tipo upload*.d)
log.preview(); log.preview();
} //if (carica)
}
TMask* TUpload2Campo::create_mask() const
{
TMask* mask = new TUpload2Campo_mask;
mask->set(F_INPUT_PATH, _input_path);
mask->set(F_ARCHIVE_PATH, _archive_path);
mask->set(F_CONC_PATH, _conc_path);
mask->set(F_TRANS_PATH, _trans_path);
return mask;
} }
void TUpload2Campo::main_loop() const char* TUpload2Campo::fake_trans_file() const
{ {
TUpload2Campo_mask mask; return "164";
while (mask.run() == K_ENTER)
{
elabora(mask);
}
}
bool TUpload2Campo::create()
{
return TSkeleton_application::create();
} }
int ha1300(int argc, char* argv[]) int ha1300(int argc, char* argv[])

View File

@ -1,3 +1,5 @@
#define F_INPUT_PATH 201 #define F_INPUT_PATH 201
#define F_ARCHIVE_PATH 202 #define F_ARCHIVE_PATH 202
#define F_DEFINITIVO 203 #define F_CONC_PATH 203
#define F_TRANS_PATH 204
#define F_DEFINITIVO 205

View File

@ -1,6 +1,6 @@
#include "ha1300a.h" #include "ha1300a.h"
PAGE "Importazione dati da file upload" -1 -1 78 6 PAGE "Importazione dati da file upload" -1 -1 78 7
STRING F_INPUT_PATH 256 45 STRING F_INPUT_PATH 256 45
BEGIN BEGIN
@ -14,9 +14,22 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
STRING F_CONC_PATH 256 45
BEGIN
PROMPT 1 3 "Cartella concentratore "
FLAGS "D"
END
STRING F_TRANS_PATH 256 45
BEGIN
PROMPT 1 4 "Cartella file transazione "
FLAGS "D"
END
BOOLEAN F_DEFINITIVO BOOLEAN F_DEFINITIVO
BEGIN BEGIN
PROMPT 1 4 "Elaborazione definitiva (scrittura sul database)" PROMPT 1 6 "Elaborazione definitiva (scrittura sul database)"
FIELD Definitiva
END END
ENDPAGE ENDPAGE

View File

@ -164,7 +164,7 @@ void TInserimento_storico::elabora(const TMask& mask)
//..per quanto riguarda il progressivo) //..per quanto riguarda il progressivo)
if (err != NOERR) if (err != NOERR)
{ {
codtab = get_next_att_key(codart); codtab = hd_get_next_att_key(codart);
tab_att.put("CODTAB", codtab); tab_att.put("CODTAB", codtab);
tab_att.put("S0", str_s0); tab_att.put("S0", str_s0);
} }

View File

@ -516,7 +516,7 @@ void hd_key2conto(const TString& key, int& gr, int& co, long& so)
so = atoi(key.mid(5,3)); so = atoi(key.mid(5,3));
} }
const TString& get_next_att_key(const TString& codart) const TString& hd_get_next_att_key(const TString& codart)
{ {
if (codart.full()) if (codart.full())
{ {

View File

@ -244,4 +244,4 @@ const TDate upload_format_date6(const TString& str_data);
long hd_key2cli(const TString& key); long hd_key2cli(const TString& key);
long hd_key2forn(const TString& key); long hd_key2forn(const TString& key);
void hd_key2conto(const TString& key, int& gr, int& co, long& so); void hd_key2conto(const TString& key, int& gr, int& co, long& so);
const TString& get_next_att_key(const TString& codart); const TString& hd_get_next_att_key(const TString& codart);