Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/branches/R_10_00@20971 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
cb07a3a233
commit
b373c2031e
@ -371,7 +371,6 @@ bool THardy_tied_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -412,7 +411,6 @@ void THardy_tied::main_loop()
|
||||
THardy_tied_mask mask;
|
||||
while (mask.run() == K_ENTER)
|
||||
{
|
||||
//elabora(mask);
|
||||
}
|
||||
}
|
||||
|
||||
|
299
ha/ha1100.cpp
299
ha/ha1100.cpp
@ -2,15 +2,12 @@
|
||||
#include <config.h>
|
||||
#include <dongle.h>
|
||||
#include <recarray.h>
|
||||
#include <textset.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include <cfven.h>
|
||||
#include <clifo.h>
|
||||
#include <comuni.h>
|
||||
#include "../mg/umart.h"
|
||||
|
||||
#include "../ve/condv.h"
|
||||
#include "../ve/velib.h"
|
||||
#include "halib.h"
|
||||
|
||||
|
||||
class THardy_config : public TConfig
|
||||
@ -40,69 +37,6 @@ THardy_config::THardy_config(const char* ini_name)
|
||||
{
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
// Recordset specifici per i dati da trasferire
|
||||
/////////////////////////////////////////////////////////////
|
||||
//classe generica per poter aggiungere pedissequamente i campi seguendo le tracce sulla documentazione
|
||||
#define T_N "N"
|
||||
#define T_2N "2N"
|
||||
#define T_2Nv2N "2N,2N"
|
||||
#define T_X "X"
|
||||
|
||||
class THardy_recordset : public TAS400_recordset
|
||||
{
|
||||
protected:
|
||||
void add_field(const char* name, const char* tipo, int pos, int len);
|
||||
|
||||
public:
|
||||
THardy_recordset(const char* query);
|
||||
};
|
||||
|
||||
//questo è il metodo magico
|
||||
void THardy_recordset::add_field(const char* name, const char* tipo, int pos, int len)
|
||||
{
|
||||
const TFixed_string str_tipo(tipo);
|
||||
if (str_tipo.ends_with("N"))
|
||||
{
|
||||
create_field(name, pos-1, len, _intzerofld);
|
||||
return;
|
||||
}
|
||||
create_field(name, pos-1, len, _alfafld);
|
||||
}
|
||||
|
||||
THardy_recordset::THardy_recordset(const char* query) : TAS400_recordset(query)
|
||||
{}
|
||||
|
||||
|
||||
//Clienti
|
||||
//-------
|
||||
class TEsporta_clienti_recordset : public THardy_recordset
|
||||
{
|
||||
protected:
|
||||
|
||||
public:
|
||||
TEsporta_clienti_recordset();
|
||||
};
|
||||
|
||||
TEsporta_clienti_recordset::TEsporta_clienti_recordset()
|
||||
: THardy_recordset("AS400(248)")
|
||||
{
|
||||
add_field("CodiceTerminale", T_N, 1, 3);
|
||||
add_field("Segno", T_X, 4, 1);
|
||||
add_field(CLI_CODCF, T_X, 5, 6);
|
||||
add_field(CLI_RAGSOC, T_X, 11, 34);
|
||||
add_field(CLI_INDCF, T_X, 45, 34);
|
||||
add_field(CLI_LOCCF, T_X, 79, 20);
|
||||
add_field(CLI_CAPCF, T_X, 99, 5);
|
||||
add_field("Provincia", T_X, 104, 2);
|
||||
add_field(CLI_PAIV, T_X, 106, 11);
|
||||
add_field(CLI_CODPAG, T_X, 117, 1);
|
||||
add_field("CodiceListino", T_X, 118, 3);
|
||||
add_field("CodicePromozione", T_X, 121, 3);
|
||||
add_field("ScontoFineFattura", T_2Nv2N, 124, 4);
|
||||
//ne mancano ancora parecchi
|
||||
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
@ -113,8 +47,17 @@ class TIni2Txt: public TSkeleton_application
|
||||
TFilename _output_dir;
|
||||
|
||||
protected:
|
||||
//metodi di infimo livello
|
||||
TString4 ricava_segno(TConfig& ini);
|
||||
|
||||
//metodi di medio livello
|
||||
void crea_nome_txt(const TString& prefisso, TFilename& output_path);
|
||||
|
||||
//metodi di alto livello
|
||||
void genera_cliente_txt(TConfig& ini);
|
||||
void genera_riga_listino_txt(TConfig& ini);
|
||||
void genera_prodotto_txt(TConfig& ini);
|
||||
|
||||
virtual void main_loop();
|
||||
|
||||
public:
|
||||
@ -159,31 +102,48 @@ void TIni2Txt::crea_nome_txt(const TString& prefisso, TFilename& output_path)
|
||||
}
|
||||
|
||||
|
||||
void TIni2Txt::genera_cliente_txt(TConfig& ini)
|
||||
TString4 TIni2Txt::ricava_segno(TConfig& ini)
|
||||
{
|
||||
//recordset per i clienti
|
||||
TEsporta_clienti_recordset clienti;
|
||||
clienti.new_rec("");
|
||||
|
||||
//controlla il tipo di transazione...
|
||||
TString4 segno = "+";
|
||||
const TString& action = ini.get("Action", "Transaction");
|
||||
if (action == "R")
|
||||
segno = "-";
|
||||
|
||||
return segno;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////
|
||||
// metodi di alto livello
|
||||
///////////////////////////////////////////////
|
||||
void TIni2Txt::genera_cliente_txt(TConfig& ini)
|
||||
{
|
||||
//recordset per i clienti
|
||||
TEsporta_clientiVAR_recordset clienti;
|
||||
clienti.new_rec("");
|
||||
|
||||
//controlla il tipo di transazione...
|
||||
const TString4 segno = ricava_segno(ini);
|
||||
|
||||
//...e poi si lancia a capofitto a riempire il recordset!
|
||||
//campi da clifo (20)
|
||||
//-------------------
|
||||
ini.set_paragraph("20");
|
||||
|
||||
clienti.set("CodiceTerminale", 0L);
|
||||
clienti.set("Segno", segno);
|
||||
clienti.set(CLI_CODCF, ini.get_long(CLI_CODCF));
|
||||
clienti.set(CLI_RAGSOC, ini.get(CLI_RAGSOC));
|
||||
clienti.set(CLI_INDCF, ini.get(CLI_INDCF));
|
||||
clienti.set(CLI_LOCCF, ini.get(CLI_LOCCF));
|
||||
clienti.set(CLI_CAPCF, ini.get(CLI_CAPCF));
|
||||
const long codcf = ini.get_long(CLI_CODCF);
|
||||
//il codice terminale è il codagente legato al cliente
|
||||
clienti.set("CodiceTerminale", find_codag(codcf));
|
||||
|
||||
clienti.set("Segno", segno);
|
||||
clienti.set(CLI_CODCF, codcf);
|
||||
clienti.set(CLI_RAGSOC, ini.get(CLI_RAGSOC));
|
||||
//l'indirizzo va numerato
|
||||
TString80 indcf = ini.get(CLI_INDCF);
|
||||
indcf << " " << ini.get(CLI_CIVCF);
|
||||
clienti.set(CLI_INDCF, indcf);
|
||||
//panegirico per comune e provincia
|
||||
const TString& statocf = ini.get(CLI_STATOCF);
|
||||
if (statocf.blank())
|
||||
{
|
||||
@ -191,18 +151,23 @@ void TIni2Txt::genera_cliente_txt(TConfig& ini)
|
||||
TToken_string key;
|
||||
key.add(statocf);
|
||||
key.add(comcf);
|
||||
const TString& provcf = cache().get(LF_COMUNI, key, COM_PROVCOM);
|
||||
const TRectype& rec_comuni = cache().get(LF_COMUNI, key);
|
||||
TString80 dencom = rec_comuni.get(COM_DENCOM);
|
||||
//dencom.cut(20); //il campo sul .txt è lungo 20!
|
||||
clienti.set("Localita", dencom);
|
||||
const TString& provcf = rec_comuni.get(COM_PROVCOM);
|
||||
clienti.set("Provincia", provcf);
|
||||
}
|
||||
|
||||
clienti.set(CLI_CAPCF, ini.get(CLI_CAPCF));
|
||||
|
||||
clienti.set(CLI_PAIV, ini.get(CLI_PAIV));
|
||||
|
||||
const TString& codpag = ini.get(CLI_CODPAG);
|
||||
if (codpag.full())
|
||||
{
|
||||
const TString& tipo_pag = cache().get("%CPG", codpag, "S4");
|
||||
clienti.set(CLI_CODPAG, tipo_pag == "1" ? "1" : "2");
|
||||
}
|
||||
//attenzione alla lunghezza del codpag
|
||||
TString4 codpag = ini.get(CLI_CODPAG);
|
||||
//codpag.cut(2); //il campo sul .txt è lungo 2!
|
||||
clienti.set(CLI_CODPAG, codpag);
|
||||
|
||||
|
||||
TString query;
|
||||
query << "USE CONDV";
|
||||
@ -217,24 +182,40 @@ void TIni2Txt::genera_cliente_txt(TConfig& ini)
|
||||
clienti.set("CodiceListino", cod_contr);
|
||||
}
|
||||
|
||||
//clienti.set("CodicePromozione", );
|
||||
TString16 ntel = ini.get(CLI_PTEL);
|
||||
ntel << ini.get(CLI_TEL);
|
||||
//ntel.cut(10);
|
||||
clienti.set(CLI_TEL, ntel);
|
||||
|
||||
clienti.set(CLI_CODCFFATT, ini.get(CLI_CODCFFATT));
|
||||
|
||||
//panegirico del fido!
|
||||
//poichè il formato di output prevede comunque 2 decimali -> provvediamo a riempire eventuali buchi
|
||||
real fido = ini.get(CLI_FIDO);
|
||||
fido *= CENTO;
|
||||
fido.round();
|
||||
clienti.set(CLI_FIDO, fido);
|
||||
|
||||
//no consegna = sospeso (forse)
|
||||
const TString& sospeso = ini.get_bool(CLI_SOSPESO) ? "S" : "";
|
||||
clienti.set("NoConsegna", sospeso);
|
||||
|
||||
clienti.set(CLI_COFI, ini.get(CLI_COFI));
|
||||
|
||||
|
||||
//campi da cfven(17)
|
||||
//------------------
|
||||
ini.set_paragraph("17");
|
||||
const TString& str_sconto = ini.get(CFV_SCONTO);
|
||||
TString goodexp;
|
||||
real val_perc;
|
||||
if (scontoexpr2perc(str_sconto, false, goodexp, val_perc))
|
||||
{
|
||||
val_perc = CENTO - (val_perc * CENTO);
|
||||
val_perc *= CENTO;
|
||||
val_perc.round();
|
||||
clienti.set("ScontoFineFattura", val_perc);
|
||||
}
|
||||
clienti.set("ScontoFineFattura", find_sconto(str_sconto));
|
||||
|
||||
|
||||
//prepara il nome corretto del file .txt da generare
|
||||
TString4 assfis = ini.get(CFV_ASSFIS);
|
||||
//assfis.cut(2); //il loro è lungo 2!
|
||||
clienti.set(CFV_ASSFIS, assfis);
|
||||
|
||||
//prepara il nome corretto del file .txt e lo genera
|
||||
//--------------------------------------------------
|
||||
const TString prefisso = "clientivar";
|
||||
TFilename output_path;
|
||||
crea_nome_txt(prefisso, output_path);
|
||||
@ -243,6 +224,118 @@ void TIni2Txt::genera_cliente_txt(TConfig& ini)
|
||||
clienti.save_as(output_path, fmt_text);
|
||||
}
|
||||
|
||||
|
||||
void TIni2Txt::genera_riga_listino_txt(TConfig& ini)
|
||||
{
|
||||
TEsporta_listiniVAR_recordset riga_listino;
|
||||
|
||||
const TString4 segno = ricava_segno(ini);
|
||||
|
||||
//campi da condv (52)
|
||||
//-------------------
|
||||
//ini.set_paragraph("52");
|
||||
|
||||
//campi da rcondv (53)
|
||||
//--------------------
|
||||
//ATTENZIONE!!! Ci sono N righe di tipo 53 per ogni testata, quindi dobbiamo fare il giro
|
||||
for (int r = 1;; r++)
|
||||
{
|
||||
TString8 paragraph;
|
||||
paragraph.format("%d,%d", LF_RCONDV, r);
|
||||
if (!ini.set_paragraph(paragraph))
|
||||
break;
|
||||
|
||||
riga_listino.new_rec("");
|
||||
|
||||
riga_listino.set("CodiceTerminale", 0L); //nel caso del listino non si sa come comportarsi
|
||||
riga_listino.set("Segno", segno);
|
||||
|
||||
riga_listino.set(RCONDV_COD, ini.get(RCONDV_COD));
|
||||
TString80 codart = ini.get(RCONDV_CODRIGA);
|
||||
//codart.cut(5); //il codart è lungo 5 sul txt!
|
||||
riga_listino.set(RCONDV_CODRIGA, codart);
|
||||
|
||||
//prezzo
|
||||
real prezzo = ini.get(RCONDV_PREZZO);
|
||||
if (prezzo.is_zero())
|
||||
{
|
||||
TToken_string key_umart;
|
||||
key_umart.add(codart);
|
||||
key_umart.add(1);
|
||||
const TRectype& rec_umart = cache().get(LF_UMART, key_umart);
|
||||
prezzo = rec_umart.get_real(UMART_PREZZO);
|
||||
}
|
||||
prezzo *= 1000;
|
||||
prezzo.round();
|
||||
riga_listino.set(RCONDV_PREZZO, prezzo.integer());
|
||||
|
||||
//sconto
|
||||
const TString& str_sconto = ini.get(RCONDV_SCONTO);
|
||||
riga_listino.set(RCONDV_SCONTO, find_sconto(str_sconto));
|
||||
|
||||
} //for(int r=1;;...
|
||||
|
||||
//prepara il nome corretto del file .txt e lo genera
|
||||
//--------------------------------------------------
|
||||
const TString prefisso = "listvar";
|
||||
TFilename output_path;
|
||||
crea_nome_txt(prefisso, output_path);
|
||||
|
||||
riga_listino.save_as(output_path, fmt_text);
|
||||
}
|
||||
|
||||
|
||||
void TIni2Txt::genera_prodotto_txt(TConfig& ini)
|
||||
{
|
||||
TEsporta_prodottiVAR_recordset prodotto;
|
||||
prodotto.new_rec("");
|
||||
|
||||
const TString4 segno = ricava_segno(ini);
|
||||
|
||||
//campi da anamag (47)
|
||||
//-------------------
|
||||
ini.set_paragraph("47");
|
||||
|
||||
prodotto.set("Segno", segno);
|
||||
|
||||
TString80 codart = ini.get(ANAMAG_CODART);
|
||||
//codart.cut(5); //solito problema della lunghezza ridotta
|
||||
prodotto.set(ANAMAG_CODART, codart);
|
||||
|
||||
TString80 descr = ini.get(ANAMAG_DESCR);
|
||||
//descr.cut(30);
|
||||
prodotto.set(ANAMAG_DESCR, descr);
|
||||
|
||||
TString4 codiva = ini.get(ANAMAG_CODIVA);
|
||||
//codiva.cut(2); //solito problema della lungh ridotta
|
||||
prodotto.set(ANAMAG_CODIVA, codiva);
|
||||
|
||||
//sconto
|
||||
const TString& str_sconto = ini.get(ANAMAG_SCONTO);
|
||||
prodotto.set(ANAMAG_SCONTO, find_sconto(str_sconto));
|
||||
|
||||
//campi da umart (49) (per ora una sola riga)
|
||||
//-------------------------------------------
|
||||
ini.set_paragraph("49,1");
|
||||
|
||||
real prezzo = ini.get(UMART_PREZZO);
|
||||
prezzo *= 1000;
|
||||
prezzo.round();
|
||||
prodotto.set(UMART_PREZZO, prezzo.integer());
|
||||
|
||||
prodotto.set(UMART_UM, ini.get(UMART_UM));
|
||||
|
||||
|
||||
//prepara il nome corretto del file .txt da generare
|
||||
//--------------------------------------------------
|
||||
const TString prefisso = "prodottivar";
|
||||
TFilename output_path;
|
||||
crea_nome_txt(prefisso, output_path);
|
||||
|
||||
prodotto.save_as(output_path, fmt_text);
|
||||
}
|
||||
|
||||
|
||||
void TIni2Txt::main_loop()
|
||||
{
|
||||
//stabilisce una volta per tutte ad inizio programma quale cavolo è la directory dove sbattere i .txt generati
|
||||
@ -267,16 +360,18 @@ void TIni2Txt::main_loop()
|
||||
//sospesi
|
||||
|
||||
//listino
|
||||
if (ini_paragraphs.find("52") >= 0)
|
||||
genera_riga_listino_txt(input_ini_file);
|
||||
|
||||
//prodotti
|
||||
if (ini_paragraphs.find("47") >= 0)
|
||||
genera_prodotto_txt(input_ini_file);
|
||||
|
||||
//barcode
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main(int argc, char** argv)
|
||||
int ha1100(int argc, char* argv[])
|
||||
{
|
||||
TIni2Txt a;
|
||||
a.run(argc, argv, "Generazione .txt da .ini");
|
||||
|
293
ha/halib.cpp
293
ha/halib.cpp
@ -40,3 +40,296 @@ TContratto_premi::TContratto_premi(char provv, int anno, const char* codnum, lon
|
||||
TContratto_premi::TContratto_premi(const TRectype& rec_doc)
|
||||
: TDocumento(rec_doc)
|
||||
{}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
// Recordset specifici per i dati da trasferire
|
||||
/////////////////////////////////////////////////////////////
|
||||
//questo è il metodo magico che vale per tutti
|
||||
void THardy_recordset::add_field(const char* name, const char* tipo, int pos, int len)
|
||||
{
|
||||
const TFixed_string str_tipo(tipo);
|
||||
if (str_tipo.ends_with("N"))
|
||||
{
|
||||
create_field(name, pos-1, len, _intzerofld);
|
||||
return;
|
||||
}
|
||||
create_field(name, pos-1, len, _alfafld);
|
||||
}
|
||||
|
||||
void THardy_recordset::insert_field(const char* name, const char* tipo, int pos, int len)
|
||||
{
|
||||
if (pos >= 1)
|
||||
{
|
||||
TArray& trc = (TArray&)*_trc.first_item();
|
||||
FOR_EACH_ARRAY_ITEM(trc, r, itm)
|
||||
{
|
||||
TAS400_column_info& fld = (TAS400_column_info&)*itm;
|
||||
if (fld._pos+1 >= pos)
|
||||
{
|
||||
fld._pos += len;
|
||||
}
|
||||
}
|
||||
}
|
||||
add_field(name, tipo, pos, len);
|
||||
}
|
||||
|
||||
//al costruttore viene passato come parametro la lunghezza del tracciato
|
||||
THardy_recordset::THardy_recordset(const int rec_lenght) : TAS400_recordset("AS400()")
|
||||
{
|
||||
TString16 query;
|
||||
query << "AS400(" << rec_lenght << ")";
|
||||
TFilename cazzone;
|
||||
parse_query(query, cazzone);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
//Clienti
|
||||
//-------
|
||||
TEsporta_clienti_recordset::TEsporta_clienti_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field("CodiceTerminale", T_N, 1, 3); //x
|
||||
add_field(CLI_CODCF, T_X, 4, 6); //x
|
||||
add_field(CLI_RAGSOC, T_X, 10, 34); //x
|
||||
add_field(CLI_INDCF, T_X, 44, 34); //x
|
||||
add_field("Localita", T_X, 78, 20); //x
|
||||
add_field(CLI_CAPCF, T_X, 98, 5); //x
|
||||
add_field("Provincia", T_X, 103, 2); //x
|
||||
add_field(CLI_PAIV, T_X, 105, 11); //x
|
||||
add_field(CLI_CODPAG, T_X, 116, 2); //x
|
||||
add_field("CodiceListino", T_X, 118, 3); //x
|
||||
add_field("CodicePromozione", T_X, 121, 3);
|
||||
add_field("ScontoFineFattura", T_2Nv2N,124, 4); //x
|
||||
add_field("Giro01", T_N, 128, 3);
|
||||
add_field("Giro02", T_N, 131, 3);
|
||||
add_field("Giro03", T_N, 134, 3);
|
||||
add_field("Giro04", T_N, 137, 3);
|
||||
add_field("Giro05", T_N, 140, 3);
|
||||
add_field("Giro06", T_N, 143, 3);
|
||||
add_field("TipoControllo", T_X, 146, 1);
|
||||
add_field("FlDecodArt", T_X, 147, 1);
|
||||
add_field("DecodeCodCli", T_X, 148, 6);
|
||||
add_field(CLI_TEL, T_X, 154, 10); //x
|
||||
add_field(CFV_ASSFIS, T_X, 164, 2); //x
|
||||
add_field(CLI_CODCFFATT, T_X, 166, 6); //x
|
||||
add_field("TipoDoc", T_X, 172, 1);
|
||||
add_field("NoConsegna", T_X, 173, 1); //x
|
||||
add_field("ScontoA", T_2N, 174, 2);
|
||||
add_field("ScontoB", T_2N, 176, 2);
|
||||
add_field("ScontoC", T_2N, 178, 2);
|
||||
add_field("ScontoD", T_2N, 180, 2);
|
||||
add_field("ScontoE", T_2N, 182, 2);
|
||||
add_field("ScontoF", T_2N, 184, 2);
|
||||
add_field("ScontoG", T_2N, 186, 2);
|
||||
add_field("ScontoH", T_2N, 188, 2);
|
||||
add_field("ScontoI", T_2N, 190, 2);
|
||||
add_field("ScontoJ", T_2N, 192, 2);
|
||||
add_field("ScontoK", T_2N, 194, 2);
|
||||
add_field("ScontoL", T_2N, 196, 2);
|
||||
add_field("ScontoM", T_2N, 198, 2);
|
||||
add_field("ScontoN", T_2N, 200, 2);
|
||||
add_field("ScontoO", T_2N, 202, 2);
|
||||
add_field("ScontoP", T_2N, 204, 2);
|
||||
add_field("ScontoQ", T_2N, 206, 2);
|
||||
add_field("ScontoR", T_2N, 208, 2);
|
||||
add_field("ScontoS", T_2N, 210, 2);
|
||||
add_field("ScontoT", T_2N, 212, 2);
|
||||
add_field(CLI_FIDO, T_Nv2N, 214, 8); //x
|
||||
add_field("CodcliGiro3", T_X, 222, 6);
|
||||
add_field(CLI_COFI, T_X, 228, 16); //x
|
||||
add_field("Giro4", T_N, 244, 6);
|
||||
add_field("FlPrezzoLibero", T_N, 250, 1);
|
||||
}
|
||||
//..e variazioni clienti
|
||||
TEsporta_clientiVAR_recordset::TEsporta_clientiVAR_recordset()
|
||||
: TEsporta_clienti_recordset(251)
|
||||
{
|
||||
insert_field("Segno", T_X, 4, 1);
|
||||
}
|
||||
|
||||
//Righe Listini
|
||||
//-------------
|
||||
TEsporta_listini_recordset::TEsporta_listini_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field("CodiceTerminale", T_N, 1, 3); //x
|
||||
add_field(RCONDV_COD, T_X, 4, 3); //x
|
||||
add_field(RCONDV_CODRIGA, T_X, 7, 5); //x
|
||||
add_field(RCONDV_PREZZO, T_Nv3N, 12, 7); //x
|
||||
add_field(RCONDV_SCONTO, T_2Nv2N,19, 4); //x
|
||||
add_field("Sconto2", T_2Nv2N,23, 4);
|
||||
add_field("Sconto3", T_2Nv2N,27, 4);
|
||||
add_field("CasaMandante", T_NS, 31, 6);
|
||||
}
|
||||
//..e variazioni listini
|
||||
TEsporta_listiniVAR_recordset::TEsporta_listiniVAR_recordset()
|
||||
: TEsporta_listini_recordset(37)
|
||||
{
|
||||
insert_field("Segno", T_X, 4, 1);
|
||||
}
|
||||
|
||||
//Righe Contratti
|
||||
//---------------
|
||||
TEsporta_contratti_recordset::TEsporta_contratti_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field("CodiceTerminale", T_N, 1, 3);
|
||||
add_field(CONDV_CODCF, T_X, 4, 6);
|
||||
add_field(RCONDV_CODRIGA, T_X, 10, 5);
|
||||
add_field(RCONDV_PREZZO, T_Nv3N, 15, 7);
|
||||
add_field(RCONDV_SCONTO, T_2Nv2N,22, 4);
|
||||
add_field("Sconto2", T_2Nv2N,26, 4);
|
||||
add_field("Sconto3", T_2Nv2N,30, 4);
|
||||
add_field(CONDV_VALIN, T_X, 34, 8);
|
||||
add_field(CONDV_VALFIN, T_X, 42, 8);
|
||||
}
|
||||
|
||||
//Offerte
|
||||
//-------
|
||||
TEsporta_offerte_recordset::TEsporta_offerte_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field(CONDV_COD, T_X, 1, 3);
|
||||
add_field(CONDV_COD, T_X, 4, 3);
|
||||
add_field(CONDV_VALIN, T_X, 7, 8);
|
||||
add_field(CONDV_VALFIN, T_X, 15, 8);
|
||||
}
|
||||
|
||||
//Prodotti
|
||||
//--------
|
||||
TEsporta_prodotti_recordset::TEsporta_prodotti_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field(ANAMAG_CODART, T_X, 1, 5); //x
|
||||
add_field(ANAMAG_DESCR, T_X, 6, 30); //x
|
||||
add_field(UMART_PREZZO, T_Nv3N, 36, 7); //x
|
||||
add_field(ANAMAG_CODIVA, T_N, 43, 2); //x
|
||||
add_field(UMART_UM, T_X, 45, 2); //x
|
||||
add_field("NONusato", T_X, 47, 1);
|
||||
add_field(ANAMAG_SCONTO, T_2Nv2N,48, 4); //x
|
||||
add_field("ScontoArt2", T_2Nv2N,52, 4);
|
||||
add_field("Fascia", T_X, 56, 1);
|
||||
add_field("PrezzoMinimo", T_Nv3N, 57, 7);
|
||||
}
|
||||
//..e variazioni prodottii
|
||||
TEsporta_prodottiVAR_recordset::TEsporta_prodottiVAR_recordset()
|
||||
: TEsporta_prodotti_recordset(64)
|
||||
{
|
||||
insert_field("Segno", T_X, 1, 1);
|
||||
}
|
||||
|
||||
|
||||
//Agenti
|
||||
//-------
|
||||
TEsporta_agenti_recordset::TEsporta_agenti_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field("CodiceTerminale", T_N, 1, 3); //x
|
||||
add_field(AGE_CODAGE, T_N, 4, 3); //x
|
||||
add_field("Data", T_X, 7, 6);
|
||||
add_field("Targa", T_X, 13, 8);
|
||||
add_field("nDDT", T_N, 21, 5);
|
||||
add_field("nFATT", T_N, 26, 5);
|
||||
add_field("nBOLLA", T_N, 31, 5);
|
||||
add_field(AGE_RAGSOC, T_X, 36, 30); //x
|
||||
add_field("nORD", T_N, 66, 5);
|
||||
add_field("nSAGIT", T_N, 71, 5);
|
||||
}
|
||||
|
||||
|
||||
//Linee
|
||||
//-----
|
||||
TEsporta_linee_recordset::TEsporta_linee_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field("Fascia", T_X, 1, 1);
|
||||
add_field("Descrizione", T_X, 2, 50);
|
||||
}
|
||||
|
||||
//Rdoc (Carico) è una riga di un documento
|
||||
//----------------
|
||||
TEsporta_rmovmag_recordset::TEsporta_rmovmag_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field("CodiceTerminale", T_N, 1, 3); //x agente
|
||||
add_field(RDOC_CODART, T_X, 4, 5);
|
||||
add_field(RDOC_QTA, T_Nv2N,9, 7);
|
||||
add_field(RDOC_LIVELLO, T_X, 16, 10);
|
||||
}
|
||||
|
||||
|
||||
//Decodart (????)
|
||||
//---------------
|
||||
TEsporta_decodart_recordset::TEsporta_decodart_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field("CodiceArticolo", T_X, 1, 5); //codart
|
||||
add_field("CodiceCliente", T_NS, 6, 6); //clifo
|
||||
add_field("CodiceArticolo2", T_X, 12, 6); //codcorr
|
||||
}
|
||||
|
||||
|
||||
//Barcode
|
||||
//---------------
|
||||
TEsporta_barcode_recordset::TEsporta_barcode_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field("CodiceBarcode", T_X, 1, 20); //codcorr
|
||||
add_field("CodiceArticolo", T_X, 21, 5); //codart
|
||||
}
|
||||
|
||||
|
||||
//Attrezzature
|
||||
//---------------
|
||||
TEsporta_attrezzature_recordset::TEsporta_attrezzature_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field("CodiceTerminale", T_N, 1, 3);
|
||||
add_field("CodiceCliente", T_X, 4, 6);
|
||||
add_field("CodiceArticolo", T_X, 10, 5);
|
||||
add_field("MatricolaAttrezz", T_X, 15, 12);
|
||||
add_field("DescrAttrezz", T_X, 27, 30);
|
||||
add_field("DataConsegna", T_X, 57, 6);
|
||||
add_field("Quantita", T_N, 63, 7);
|
||||
}
|
||||
|
||||
|
||||
//Pagamenti
|
||||
//---------------
|
||||
TEsporta_pagamenti_recordset::TEsporta_pagamenti_recordset(int rec_length)
|
||||
: THardy_recordset(rec_length)
|
||||
{
|
||||
add_field("CodicePagamento", T_X, 1, 2);
|
||||
add_field("DescrPagamento", T_X, 3, 20);
|
||||
add_field("GiorniScadenza", T_N, 23, 3);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
// Metodi di utility
|
||||
/////////////////////////////////////////////////////////////
|
||||
real find_sconto(const TString& str_sconto)
|
||||
{
|
||||
TString goodexp;
|
||||
real val_perc;
|
||||
if (scontoexpr2perc(str_sconto, false, goodexp, val_perc))
|
||||
{
|
||||
val_perc = CENTO - (val_perc * CENTO);
|
||||
val_perc *= CENTO;
|
||||
val_perc.round();
|
||||
}
|
||||
return val_perc;
|
||||
}
|
||||
|
||||
|
||||
const TString& find_codag(const long codcf)
|
||||
{
|
||||
TToken_string key_cfven;
|
||||
key_cfven.add("C");
|
||||
key_cfven.add(codcf);
|
||||
const TRectype& rec_cfven = cache().get(LF_CFVEN, key_cfven);
|
||||
TString8 codag = rec_cfven.get(CFV_CODAG);
|
||||
return codag.right(3); //il loro codagente è lungo 3!!!
|
||||
}
|
161
ha/halib.h
161
ha/halib.h
@ -1,7 +1,16 @@
|
||||
#ifndef __TEXTSET_H
|
||||
#include <textset.h>
|
||||
#endif __TEXTSET_H
|
||||
|
||||
#ifndef __VELIB_H
|
||||
#include "../ve/velib.h"
|
||||
#endif
|
||||
|
||||
#include "../mg/rmovmag.h"
|
||||
#include "../pr/agenti.h"
|
||||
#include "../ve/condv.h"
|
||||
#include "../ve/rcondv.h"
|
||||
|
||||
//definizioni delle righe dei contratti premio Hardy (da includere nei .cpp)
|
||||
#define HARDY_TIPORIGA_MERCE "H01"
|
||||
#define HARDY_TIPORIGA_SOMMA "H02"
|
||||
@ -31,4 +40,154 @@ public:
|
||||
|
||||
TContratto_premi(char provv, int anno, const char* codnum, long ndoc);
|
||||
TContratto_premi(const TRectype& rec_doc);
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
// Recordset specifici per i dati da trasferire
|
||||
/////////////////////////////////////////////////////////////
|
||||
//classe generica per poter aggiungere pedissequamente i campi seguendo le tracce sulla documentazione
|
||||
//tipologie di campo secondo il ricevente
|
||||
#define T_N "N"
|
||||
#define T_2N "2N"
|
||||
#define T_Nv2N "N,2N"
|
||||
#define T_Nv3N "N,3N"
|
||||
#define T_2Nv2N "2N,2N"
|
||||
#define T_X "X"
|
||||
#define T_NS "NS"
|
||||
|
||||
class THardy_recordset : public TAS400_recordset
|
||||
{
|
||||
protected:
|
||||
void add_field(const char* name, const char* tipo, int pos, int len);
|
||||
void insert_field(const char* name, const char* tipo, int pos, int len);
|
||||
|
||||
public:
|
||||
THardy_recordset(const int rec_length);
|
||||
};
|
||||
|
||||
|
||||
//Agenti
|
||||
//-------
|
||||
class TEsporta_agenti_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_agenti_recordset(int rec_length = 75);
|
||||
};
|
||||
|
||||
|
||||
//Clienti (clifo + cfven)
|
||||
//-----------------------
|
||||
class TEsporta_clienti_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_clienti_recordset(int rec_length = 250);
|
||||
};
|
||||
//..e variazioni clienti!
|
||||
class TEsporta_clientiVAR_recordset : public TEsporta_clienti_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_clientiVAR_recordset();
|
||||
};
|
||||
|
||||
//Listini (condv + rcondv)
|
||||
//------------------------
|
||||
class TEsporta_listini_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_listini_recordset(int rec_length = 36);
|
||||
};
|
||||
//..e variazioni listini
|
||||
class TEsporta_listiniVAR_recordset : public TEsporta_listini_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_listiniVAR_recordset();
|
||||
};
|
||||
|
||||
//Contratti (Particolari) (condv + rcondv)
|
||||
//----------------------------------------
|
||||
class TEsporta_contratti_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_contratti_recordset(int rec_length = 49);
|
||||
};
|
||||
|
||||
//Offerte (Promo) (condv + rcondv)
|
||||
//----------------------------------------
|
||||
class TEsporta_offerte_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_offerte_recordset(int rec_length = 22);
|
||||
};
|
||||
|
||||
//Prodotti (anamag + umart)
|
||||
//-------------------------
|
||||
class TEsporta_prodotti_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_prodotti_recordset(int rec_length = 63);
|
||||
};
|
||||
//..e variazioni prodotti
|
||||
class TEsporta_prodottiVAR_recordset : public TEsporta_prodotti_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_prodottiVAR_recordset();
|
||||
};
|
||||
|
||||
|
||||
//Linee
|
||||
//-----
|
||||
class TEsporta_linee_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_linee_recordset(int rec_length = 51);
|
||||
};
|
||||
|
||||
|
||||
//Rmovmag (Carico)
|
||||
//----------------
|
||||
class TEsporta_rmovmag_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_rmovmag_recordset(int rec_length = 25);
|
||||
};
|
||||
|
||||
|
||||
//Decodart (?????)
|
||||
//----------------
|
||||
class TEsporta_decodart_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_decodart_recordset(int rec_length = 17);
|
||||
};
|
||||
|
||||
//Barcode (?????)
|
||||
//---------------
|
||||
class TEsporta_barcode_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_barcode_recordset(int rec_length = 25);
|
||||
};
|
||||
|
||||
//Attrezzature ()
|
||||
//----------------
|
||||
class TEsporta_attrezzature_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_attrezzature_recordset(int rec_length = 69);
|
||||
};
|
||||
|
||||
//Pagamenti ()
|
||||
//-----------------
|
||||
class TEsporta_pagamenti_recordset : public THardy_recordset
|
||||
{
|
||||
public:
|
||||
TEsporta_pagamenti_recordset(int rec_length = 25);
|
||||
};
|
||||
|
||||
//----------------------------------------------------------
|
||||
//metodi di utility
|
||||
//----------------------------------------------------------
|
||||
real find_sconto(const TString& str_sconto);
|
||||
const TString& find_codag(const long codcf);
|
@ -10,3 +10,4 @@ Item_04 = "Generazione NAC", "ha0 -4", ""
|
||||
Item_05 = "Elaborazione contratti premio pareggiati", "ha0 -3", "F"
|
||||
Item_06 = "Gestione listini", "ve2 -4", ""
|
||||
Item_07 = "Stampa listini", "ve3 -4 L", ""
|
||||
Item_08 = "Esportazione archivi formato txt", "ha1 -0", "F"
|
Loading…
x
Reference in New Issue
Block a user