Patch level :10.0 830
Files correlati : Ricompilazione Demo : [ ] Commento : riporto hardy da 11.0 git-svn-id: svn://10.65.10.50/branches/R_10_00@21075 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
a4205561da
commit
5ddf528044
62
ha/ha0200a.h
62
ha/ha0200a.h
@ -1,38 +1,44 @@
|
|||||||
#define F_CODTIPO_FAT 201
|
#define F_CODTIPO_FAT 201
|
||||||
#define F_DESCRTIPO_FAT 202
|
#define F_DESCRTIPO_FAT 202
|
||||||
#define F_STATO_INI_FAT 203
|
#define F_STATO_INI_FAT 203
|
||||||
#define F_STATO_FIN_FAT 204
|
#define F_STATO_FIN_FAT 204
|
||||||
//------------------------------
|
//------------------------------
|
||||||
#define F_CO_ANT_NUM 205 //COntratti ANTicipo: NUMerazione
|
#define F_CO_ANT_NUM 205 //COntratti ANTicipo: NUMerazione
|
||||||
#define F_CO_ANT_TIP 207 //COntratti ANTicipo: TIPo
|
#define F_CO_ANT_TIP 207 //COntratti ANTicipo: TIPo
|
||||||
#define F_CO_ANT_SPE 208 //COntratti ANTicipo: codice SPEsa (è il codart della riga di tipo spesa, verigh02)
|
#define F_CO_ANT_SPE 208 //COntratti ANTicipo: codice SPEsa (è il codart della riga di tipo spesa, verigh02)
|
||||||
|
|
||||||
#define F_NA_ANT_NUM 210 //Note Accredito ANTicipo: NUMerazione
|
#define F_NA_ANT_NUM 210 //Note Accredito ANTicipo: NUMerazione
|
||||||
#define F_NA_ANT_TIP 212 //Note Accredito ANTicipo: TIPo
|
#define F_NA_ANT_TIP 212 //Note Accredito ANTicipo: TIPo
|
||||||
#define F_NA_ANT_SPE 213 //Note Accredito ANTicipo: codice SPEsa (è il codart delle righe delle note di accredito)
|
#define F_NA_ANT_SPE 213 //Note Accredito ANTicipo: codice SPEsa (è il codart delle righe delle note di accredito)
|
||||||
//------------------------------
|
//------------------------------
|
||||||
#define F_CO_POST_NUM 215
|
#define F_CO_POST_NUM 215
|
||||||
#define F_CO_POST_TIP 217
|
#define F_CO_POST_TIP 217
|
||||||
//#define F_CO_POST_SPE 218 in teoria questo non potrebbe esistere!
|
//#define F_CO_POST_SPE 218 in teoria questo non potrebbe esistere!
|
||||||
|
|
||||||
#define F_NA_POST_NUM 220
|
#define F_NA_POST_NUM 220
|
||||||
#define F_NA_POST_TIP 222
|
#define F_NA_POST_TIP 222
|
||||||
#define F_NA_POST_SPE 223
|
#define F_NA_POST_SPE 223
|
||||||
//------------------------------
|
//------------------------------
|
||||||
#define F_CO_RIFA_NUM 225
|
#define F_CO_RIFA_NUM 225
|
||||||
#define F_CO_RIFA_TIP 227
|
#define F_CO_RIFA_TIP 227
|
||||||
#define F_CO_RIFA_SPE 228
|
#define F_CO_RIFA_SPE 228
|
||||||
|
|
||||||
#define F_NA_RIFA_NUM 230
|
#define F_NA_RIFA_NUM 230
|
||||||
#define F_NA_RIFA_TIP 232
|
#define F_NA_RIFA_TIP 232
|
||||||
#define F_NA_RIFA_SPE 233
|
#define F_NA_RIFA_SPE 233
|
||||||
|
|
||||||
//==============================
|
//==============================
|
||||||
//pagina 2
|
//pagina 2
|
||||||
#define F_OUTPUT_PATH 250
|
//esportazione dati
|
||||||
#define F_CARDOC_NUM 251
|
#define F_OUTPUT_PATH 250
|
||||||
#define F_CARDOC_TIP 252
|
#define F_CARDOC_NUM 251
|
||||||
#define F_CARDOC_STA 253
|
#define F_CARDOC_TIP 252
|
||||||
#define F_BARCODE_TIP 254
|
#define F_CARDOC_STA 253
|
||||||
|
#define F_BARCODE_TIP 254
|
||||||
|
|
||||||
#define F_INPUT_PATH 255
|
//importazione dati
|
||||||
|
#define F_INPUT_PATH 260
|
||||||
|
#define F_IN_TIPODOC_F 261
|
||||||
|
#define F_IN_TIPODOC_B 262
|
||||||
|
#define F_IN_TIPODOC_O 263
|
||||||
|
#define F_IN_TIPODOC_V 264
|
||||||
|
@ -406,6 +406,69 @@ BEGIN
|
|||||||
FIELD InputPath
|
FIELD InputPath
|
||||||
END
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "@bTipi documento generati in importazione"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_IN_TIPODOC_F 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 11 "Fatture "
|
||||||
|
USE %TIP
|
||||||
|
INPUT CODTAB F_IN_TIPODOC_F
|
||||||
|
DISPLAY "Codice@8" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_IN_TIPODOC_F CODTAB
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FIELD InpFatTip
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_IN_TIPODOC_B 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 18 11 "Bolle "
|
||||||
|
USE %TIP
|
||||||
|
INPUT CODTAB F_IN_TIPODOC_B
|
||||||
|
DISPLAY "Codice@8" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_IN_TIPODOC_B CODTAB
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FIELD InpBolTip
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_IN_TIPODOC_O 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 34 11 "Ordini "
|
||||||
|
USE %TIP
|
||||||
|
INPUT CODTAB F_IN_TIPODOC_O
|
||||||
|
DISPLAY "Codice@8" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_IN_TIPODOC_O CODTAB
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FIELD InpOrdTip
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_IN_TIPODOC_V 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 50 11 "Bolle valorizz. "
|
||||||
|
USE %TIP
|
||||||
|
INPUT CODTAB F_IN_TIPODOC_V
|
||||||
|
DISPLAY "Codice@8" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_IN_TIPODOC_V CODTAB
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FIELD InpValTip
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 13 "Le numerazioni sono generate automaticamente in base al tipo documento ricevuto"
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "ed al codice terminale, secondo la regola: 'TipoDocumento'+'CodiceTerminale. Es. 'F'+'001' -> F001"
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
424
ha/ha1300.cpp
424
ha/ha1300.cpp
@ -9,6 +9,215 @@
|
|||||||
|
|
||||||
#define UPLOAD_FILE "upload.d"
|
#define UPLOAD_FILE "upload.d"
|
||||||
|
|
||||||
|
|
||||||
|
//funzione di ordinamento del file di upload una volta caricato in memoria
|
||||||
|
int ordina_upload(const TObject** o1, const TObject** o2)
|
||||||
|
{
|
||||||
|
const TString& s1 = *(TString*)*o1;
|
||||||
|
const TString& s2 = *(TString*)*o2;
|
||||||
|
|
||||||
|
if (s1[1] == 'F' && s2[1] == 'F')
|
||||||
|
{
|
||||||
|
TToken_string k[2];
|
||||||
|
for (int i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
const TString& rec = i == 0 ? s1 : s2;
|
||||||
|
TToken_string& key = k[i];
|
||||||
|
if (rec[0] == 'T')
|
||||||
|
{
|
||||||
|
key.add(rec.mid(14,2)); //anno
|
||||||
|
key.add(rec.mid(16,1)); //tipodoc
|
||||||
|
key.add(rec.mid(5,5)); //numdoc
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
key.add(rec.mid(14,2)); //anno
|
||||||
|
key.add(rec.mid(28,1)); //tipodoc
|
||||||
|
key.add(rec.mid(5,5)); //numdoc
|
||||||
|
key.add(rec.mid(29,5)); //codart
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return k[0].compare(k[1]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (s1[1] == 'F')
|
||||||
|
return +1;
|
||||||
|
if (s2[1] == 'F')
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return s1.compare(s2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//------------------------------------------------------------
|
||||||
|
// Hardy_upload_recordset: serve per l'INPUT
|
||||||
|
//------------------------------------------------------------
|
||||||
|
class THardy_upload_recordset : public THardy_recordset
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual TRecnotype new_rec(const char* trc);
|
||||||
|
|
||||||
|
public:
|
||||||
|
THardy_upload_recordset(const TFilename& filename);
|
||||||
|
};
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////
|
||||||
|
// Recordset specifici per i dati da trasferire INPUT
|
||||||
|
/////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
TRecnotype THardy_upload_recordset::new_rec(const char* trc)
|
||||||
|
{
|
||||||
|
if (trc && *trc > ' ')
|
||||||
|
{
|
||||||
|
TString rec; rec << trc << "\r\n";
|
||||||
|
return TText_recordset::new_rec(rec);
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//questo invece è il metodo magico che vale per il caricamento da file esterno
|
||||||
|
THardy_upload_recordset::THardy_upload_recordset(const TFilename& filename)
|
||||||
|
: THardy_recordset(256)
|
||||||
|
{
|
||||||
|
TFilename cazzone;
|
||||||
|
//as400 con lunghezza 256 e chiave lunga 2 (a partire dall'inizio): è il tipo record
|
||||||
|
parse_query("AS400(256,2)", cazzone);
|
||||||
|
|
||||||
|
//Tipo record SU
|
||||||
|
//--------------
|
||||||
|
add_trc_field("SU", "TipoRecord", T_X, 1, 2); //x
|
||||||
|
add_trc_field("SU", "CodiceTerminale", T_N, 3, 3); //x
|
||||||
|
add_trc_field("SU", AGE_CODAGE, T_N, 6, 3); //x
|
||||||
|
add_trc_field("SU", "NonUsato", T_X, 9, 6);
|
||||||
|
add_trc_field("SU", "Targa", T_X, 15, 8);
|
||||||
|
add_trc_field("SU", "nDDT", T_N, 23, 5);
|
||||||
|
add_trc_field("SU", "nFATT", T_N, 28, 5);
|
||||||
|
add_trc_field("SU", "nBOLLA", T_N, 33, 5);
|
||||||
|
add_trc_field("SU", AGE_RAGSOC, T_X, 38, 30); //x
|
||||||
|
|
||||||
|
//Tipo record TF
|
||||||
|
//--------------
|
||||||
|
add_trc_field("TF", "TipoRecord", T_X, 1, 2); //x
|
||||||
|
add_trc_field("TF", "CodiceTerminale", T_N, 3, 3); //x
|
||||||
|
add_trc_field("TF", DOC_NDOC, T_N, 6, 5); //x
|
||||||
|
add_trc_field("TF", DOC_DATADOC, T_X, 11, 6); //x
|
||||||
|
add_trc_field("TF", DOC_TIPODOC, T_X, 17, 1); //x
|
||||||
|
add_trc_field("TF", DOC_CODCF, T_X, 18, 6); //x
|
||||||
|
add_trc_field("TF", DOC_CODCFFATT, T_X, 24, 6); //x
|
||||||
|
add_trc_field("TF", "ImponibileLordo", T_Nv2N, 30, 8); // campi seguenti da righe doc
|
||||||
|
add_trc_field("TF", "ScontoFattura", T_2Nv2N,38, 4);
|
||||||
|
add_trc_field("TF", "ImponibileDoc", T_Nv2N, 42, 8);
|
||||||
|
add_trc_field("TF", "TotaleDoc", T_Nv2N, 50, 8);
|
||||||
|
add_trc_field("TF", "ScontoTotale", T_Nv2N, 58, 8);
|
||||||
|
add_trc_field("TF", "ImponibileOmaggi", T_Nv2N, 66, 8);
|
||||||
|
add_trc_field("TF", "ImponibileSost", T_Nv2N, 74, 8);
|
||||||
|
add_trc_field("TF", "Incasso", T_Nv2N, 82, 8); //forse IMPPAGATO ?
|
||||||
|
add_trc_field("TF", DOC_CODPAG, T_X, 90, 2); //x
|
||||||
|
add_trc_field("TF", DOC_DATAPART, T_X, 92, 6); //x
|
||||||
|
add_trc_field("TF", "Iva1", T_N, 98, 2); //anche questi da righe doc
|
||||||
|
add_trc_field("TF", "Imponibile1", T_Nv2N, 100,8);
|
||||||
|
add_trc_field("TF", "Imposta1", T_Nv2N, 108,7);
|
||||||
|
add_trc_field("TF", "Iva2", T_N, 115,2);
|
||||||
|
add_trc_field("TF", "Imponibile2", T_Nv2N, 117,8);
|
||||||
|
add_trc_field("TF", "Imposta2", T_Nv2N, 125,7);
|
||||||
|
add_trc_field("TF", "Iva3", T_N, 132,2);
|
||||||
|
add_trc_field("TF", "Imponibile3", T_Nv2N, 134,8);
|
||||||
|
add_trc_field("TF", "Imposta3", T_Nv2N, 142,7);
|
||||||
|
add_trc_field("TF", "Iva4", T_N, 149,2);
|
||||||
|
add_trc_field("TF", "Imponibile4", T_Nv2N, 151,8);
|
||||||
|
add_trc_field("TF", "Imposta4", T_Nv2N, 159,7);
|
||||||
|
add_trc_field("TF", "CodcliGiro3", T_X, 166,6);
|
||||||
|
add_trc_field("TF", "IvaOmag1", T_N, 172,2);
|
||||||
|
add_trc_field("TF", "ImponibileOmag1", T_Nv2N, 174,6);
|
||||||
|
add_trc_field("TF", "ImpostaOmag1", T_Nv2N, 180,5);
|
||||||
|
add_trc_field("TF", "IvaOmag2", T_N, 185,2);
|
||||||
|
add_trc_field("TF", "ImponibileOmag2", T_Nv2N, 187,6);
|
||||||
|
add_trc_field("TF", "ImpostaOmag2", T_Nv2N, 193,5);
|
||||||
|
add_trc_field("TF", "DataEmissione", T_X, 198,6);
|
||||||
|
add_trc_field("TF", "PagamentoCarta", T_X, 204,1);
|
||||||
|
|
||||||
|
//Tipo record RF
|
||||||
|
//--------------
|
||||||
|
add_trc_field("RF", "TipoRecord", T_X, 1, 2); //x
|
||||||
|
add_trc_field("RF", "CodiceTerminale", T_N, 3, 3); //x
|
||||||
|
add_trc_field("RF", RDOC_NDOC, T_N, 6, 5); //x
|
||||||
|
add_trc_field("RF", DOC_DATADOC, T_X, 11, 6); //x testata
|
||||||
|
add_trc_field("RF", DOC_CODCF, T_X, 17, 6); //x testata
|
||||||
|
add_trc_field("RF", DOC_CODCFFATT, T_X, 23, 6); //x testata
|
||||||
|
add_trc_field("RF", DOC_TIPODOC, T_X, 29, 1); //x testata
|
||||||
|
add_trc_field("RF", RDOC_CODART, T_X, 30, 5); //x
|
||||||
|
add_trc_field("RF", "TipoCessione", T_X, 35, 1);
|
||||||
|
add_trc_field("RF", "Qta[int]", T_N, 36, 5); //x
|
||||||
|
add_trc_field("RF", "Qta[dec]", T_N, 41, 2); //x
|
||||||
|
add_trc_field("RF", "Sconto1", T_2Nv2N,43, 4);
|
||||||
|
add_trc_field("RF", "Sconto2", T_2Nv2N,47, 4);
|
||||||
|
add_trc_field("RF", "Sconto3", T_2Nv2N,51, 4);
|
||||||
|
add_trc_field("RF", "ScontoLibero", T_2Nv2N,55, 4);
|
||||||
|
add_trc_field("RF", RDOC_PREZZO, T_Nv3N, 59, 7); //x forse PREZZOL ?
|
||||||
|
add_trc_field("RF", "TotaleRiga", T_Nv3N, 66, 8);
|
||||||
|
add_trc_field("RF", "TotaleSconto", T_Nv3N, 74, 8);
|
||||||
|
add_trc_field("RF", "AliquotaIva", T_N, 82, 2); //noi abbiamo il codice
|
||||||
|
add_trc_field("RF", RDOC_UMQTA, T_X, 84, 2); //x
|
||||||
|
add_trc_field("RF", "PrezzoScontato", T_Nv3N, 86, 7);
|
||||||
|
add_trc_field("RF", "Fascia", T_X, 93, 1);
|
||||||
|
add_trc_field("RF", "ScontoFascia", T_2N, 94, 2);
|
||||||
|
add_trc_field("RF", "NonUsato", T_N, 96, 2);
|
||||||
|
add_trc_field("RF", "CodcliGiro3", T_X, 98, 6);
|
||||||
|
add_trc_field("RF", "CodiceLotto", T_X, 104,10); //noi lo leghiamo all'articolo
|
||||||
|
|
||||||
|
//Tipo record SI
|
||||||
|
//--------------
|
||||||
|
add_trc_field("SI", "TipoRecord", T_X, 1, 2); //x
|
||||||
|
add_trc_field("SI", "CodiceTerminale", T_N, 3, 3); //x
|
||||||
|
add_trc_field("SI", "CodiceCliente", T_X, 6, 6);
|
||||||
|
add_trc_field("SI", "NumeroFattura", T_X, 12, 12);
|
||||||
|
add_trc_field("SI", "DataFattura", T_X, 24, 6);
|
||||||
|
add_trc_field("SI", "NonUsato", T_N, 30, 9);
|
||||||
|
add_trc_field("SI", "ImportoIncassato", T_Nv2N, 39, 9);
|
||||||
|
add_trc_field("SI", "DataIncasso", T_X, 48, 6);
|
||||||
|
add_trc_field("SI", "Partita", T_X, 54, 15);
|
||||||
|
add_trc_field("SI", "TipoDocumento", T_X, 69, 1);
|
||||||
|
add_trc_field("SI", "DataEmissione", T_X, 70, 6);
|
||||||
|
add_trc_field("SI", "PagamentoCarta", T_X, 76, 1);
|
||||||
|
|
||||||
|
//Tipo record BR
|
||||||
|
//--------------
|
||||||
|
add_trc_field("BR", "TipoRecord", T_X, 1, 2); //x
|
||||||
|
add_trc_field("BR", "CodiceTerminale", T_N, 3, 3); //x
|
||||||
|
add_trc_field("BR", "NumeroRiga", T_N, 6, 3);
|
||||||
|
add_trc_field("BR", "NumeroDoc", T_N, 9, 5);
|
||||||
|
add_trc_field("BR", "DataMov", T_X, 14, 6);
|
||||||
|
add_trc_field("BR", "CodiceArticolo", T_X, 20, 5);
|
||||||
|
add_trc_field("BR", "Qta[int]", T_N, 25, 5);
|
||||||
|
add_trc_field("BR", "Qta[dec]", T_N, 30, 2);
|
||||||
|
add_trc_field("BR", "Mittente", T_N, 32, 3);
|
||||||
|
add_trc_field("BR", "Destinatario", T_N, 35, 3);
|
||||||
|
add_trc_field("BR", "CausaleMov", T_N, 38, 2);
|
||||||
|
add_trc_field("BR", "CodiceLotto", T_X, 40, 10);
|
||||||
|
|
||||||
|
//Tipo record VC
|
||||||
|
//--------------
|
||||||
|
add_trc_field("VC", "TipoRecord", T_X, 1, 2); //x
|
||||||
|
add_trc_field("VC", "CodiceTerminale", T_N, 3, 3); //x
|
||||||
|
add_trc_field("VC", CLI_CODCF, T_X, 6, 6); //x
|
||||||
|
add_trc_field("VC", CLI_RAGSOC, T_X, 12, 34); //x
|
||||||
|
add_trc_field("VC", CLI_INDCF, T_X, 46, 34); //x
|
||||||
|
add_trc_field("VC", "Localita", T_X, 80, 20); //x attenzione che potrebbe essere il com_dencom
|
||||||
|
add_trc_field("VC", CLI_CAPCF, T_X, 100, 5); //x
|
||||||
|
add_trc_field("VC", "Provincia", T_X, 105, 2); //x da questo e da dencom ricaviamo il codcom
|
||||||
|
add_trc_field("VC", CLI_PAIV, T_X, 107, 16); //x
|
||||||
|
add_trc_field("VC", CLI_CODPAG, T_X, 123, 1); //x
|
||||||
|
add_trc_field("VC", "CodiceListino", T_X, 124, 3);
|
||||||
|
add_trc_field("VC", "TipoDocumento", T_X, 127, 1);
|
||||||
|
add_trc_field("VC", CLI_COFI, T_X, 128, 16); //x
|
||||||
|
|
||||||
|
|
||||||
|
TText_recordset::load_file(filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TAutomask
|
// TAutomask
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -39,11 +248,13 @@ TUpload2Campo_mask::TUpload2Campo_mask() : TAutomask ("ha1300a")
|
|||||||
class TUpload2Campo : public TSkeleton_application
|
class TUpload2Campo : public TSkeleton_application
|
||||||
{
|
{
|
||||||
TFilename _intput_dir;
|
TFilename _intput_dir;
|
||||||
|
bool _can_write;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void elabora_SU(THardy_upload_recordset& recset, TLog_report& log);
|
void elabora_SU(THardy_upload_recordset& recset, TLog_report& log);
|
||||||
void elabora_BR(THardy_upload_recordset& recset, TLog_report& log);
|
void elabora_BR(THardy_upload_recordset& recset, TLog_report& log);
|
||||||
void elabora_VC(THardy_upload_recordset& recset, TLog_report& log);
|
void elabora_VC(THardy_upload_recordset& recset, TLog_report& log);
|
||||||
|
void elabora_TF(THardy_upload_recordset& recset, TLog_report& log);
|
||||||
|
|
||||||
void elabora(const TMask& mask);
|
void elabora(const TMask& mask);
|
||||||
|
|
||||||
@ -84,6 +295,192 @@ void TUpload2Campo::elabora_VC(THardy_upload_recordset& recset, TLog_report& log
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TUpload2Campo::elabora_TF(THardy_upload_recordset& recset, TLog_report& log)
|
||||||
|
{
|
||||||
|
//1) codice terminale
|
||||||
|
const TString4 codice_terminale = recset.get("CodiceTerminale").as_string();
|
||||||
|
const TString& codage = cache().get(LF_AGENTI, codice_terminale, AGE_CODAGE);
|
||||||
|
if (codage != codice_terminale)
|
||||||
|
{
|
||||||
|
_can_write = false;
|
||||||
|
TString msg;
|
||||||
|
msg << "Codice terminale " << codice_terminale << "- codice agente" << codage << " non corrispondenti";
|
||||||
|
log.log(2, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//2) Testata documento
|
||||||
|
//genera una simpatico documento di cui raccatta la chiave
|
||||||
|
const TString& rec_anno = recset.get(DOC_DATADOC).as_string().right(2);
|
||||||
|
int anno = 2000 + atoi(rec_anno);
|
||||||
|
const char rec_tipodoc = recset.get(DOC_TIPODOC).as_string()[0];
|
||||||
|
//2a) tipo documento
|
||||||
|
TString4 tipodoc;
|
||||||
|
TConfig hardy(CONFIG_DITTA, "ha");
|
||||||
|
switch (rec_tipodoc)
|
||||||
|
{
|
||||||
|
case 'F': tipodoc = hardy.get("InpFatTip"); break;
|
||||||
|
case 'B': tipodoc = hardy.get("InpBolTip"); break;
|
||||||
|
case 'V': tipodoc = hardy.get("InpValTip"); break;
|
||||||
|
case 'O': tipodoc = hardy.get("InpOrdTip"); break;
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
_can_write = false;
|
||||||
|
TString msg;
|
||||||
|
msg << "Tipo documento in input " << rec_tipodoc << " sconosciuto";
|
||||||
|
log.log(2, msg);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//2b) numerazione documento
|
||||||
|
//il codnum dipende dal tipo documento del terminale (F,B,O...) e dal codice del terminale
|
||||||
|
TString4 codnum;
|
||||||
|
codnum << rec_tipodoc << codice_terminale;
|
||||||
|
const TString& numerazione = cache().get("%NUM", codnum, "CODTAB");
|
||||||
|
if (numerazione != codnum)
|
||||||
|
{
|
||||||
|
_can_write = false;
|
||||||
|
TString msg;
|
||||||
|
msg << "Codice numerazione " << codnum << " sconosciuto";
|
||||||
|
log.log(2, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
const long ndoc = recset.get(DOC_NDOC).as_int();
|
||||||
|
|
||||||
|
TDocumento doc('D', anno, codnum, ndoc);
|
||||||
|
|
||||||
|
doc.put(DOC_TIPODOC, tipodoc);
|
||||||
|
doc.put(DOC_TIPOCF, "C");
|
||||||
|
|
||||||
|
//2c) cliente
|
||||||
|
const long codcf = recset.get(DOC_CODCF).as_int();
|
||||||
|
TToken_string key_clifo;
|
||||||
|
key_clifo.add("C");
|
||||||
|
key_clifo.add(codcf);
|
||||||
|
const long cliente = atol(cache().get(LF_CLIFO, key_clifo, CLI_CODCF));
|
||||||
|
if (cliente != codcf)
|
||||||
|
{
|
||||||
|
_can_write = false;
|
||||||
|
TString msg;
|
||||||
|
msg << "Codice cliente " << codcf << " sconosciuto";
|
||||||
|
log.log(2, msg);
|
||||||
|
}
|
||||||
|
doc.put(DOC_CODCF, codcf);
|
||||||
|
doc.put(DOC_CODCFFATT, recset.get(DOC_CODCFFATT).as_int());
|
||||||
|
//sconto in fattura, sconto totale, incasso ecc.... che cazzo sono?
|
||||||
|
//TString8 scontone = recset.get();
|
||||||
|
doc.put(DOC_CODPAG, recset.get(DOC_CODPAG).as_string());
|
||||||
|
//data spedizione...datapart o datacons? (solo per ordini)
|
||||||
|
|
||||||
|
//al simpatico documento appiccia tutte le righe RF che seguono il record TF..
|
||||||
|
//..dopo il magico ordinamento iniziale del recordset
|
||||||
|
//intanto azzera le righe eventualmente già presenti (riscrittura)
|
||||||
|
doc.destroy_rows();
|
||||||
|
|
||||||
|
|
||||||
|
//3) righe documento
|
||||||
|
//scansione delle righe documento su record RF
|
||||||
|
while (recset.move_next())
|
||||||
|
{
|
||||||
|
if (recset.get("TipoRecord").as_string() != "RF") //quando non trova un RF significa che le righe della testata sono finite!
|
||||||
|
{
|
||||||
|
recset.move_prev(); //allora torna indietro di un record per riposizionarsi sull'ultimo non letto
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//agginunge una nuova riga (solo merce, per quanto ne sappiamo)
|
||||||
|
TRiga_documento& rigadoc = doc.new_row("01");
|
||||||
|
|
||||||
|
//serie delle put sulla riga documento; ricordiamo che la chiave della riga viene riempita dalla new_row
|
||||||
|
//3a) articolo
|
||||||
|
const TString& codart = recset.get(RDOC_CODART).as_string();
|
||||||
|
const TString& articolo = cache().get(LF_ANAMAG, codart, ANAMAG_CODART);
|
||||||
|
if (articolo != codart)
|
||||||
|
{
|
||||||
|
_can_write = false;
|
||||||
|
TString msg;
|
||||||
|
msg << "Codice articolo " << codart << " sconosciuto";
|
||||||
|
log.log(2, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
rigadoc.put(RDOC_CODART, codart);
|
||||||
|
rigadoc.put(RDOC_CODARTMAG, codart);
|
||||||
|
rigadoc.put(RDOC_CHECKED, "X");
|
||||||
|
//3b) umart
|
||||||
|
const TString& umqta = recset.get(RDOC_UMQTA).as_string();
|
||||||
|
TToken_string key_um;
|
||||||
|
key_um.add(codart);
|
||||||
|
key_um.add(umqta);
|
||||||
|
const TString& umart = cache().get(LF_UMART, key_um, UMART_UM);
|
||||||
|
if (umart != umqta)
|
||||||
|
{
|
||||||
|
_can_write = false;
|
||||||
|
TString msg;
|
||||||
|
msg << "U.m. " << umqta << " dell'articolo " << codart << " sconosciuta";
|
||||||
|
log.log(2, msg);
|
||||||
|
}
|
||||||
|
rigadoc.put(RDOC_UMQTA, umqta);
|
||||||
|
|
||||||
|
|
||||||
|
real qta = recset.get("Qta[int]").as_real();
|
||||||
|
qta += recset.get("Qta[dec]").as_real() / CENTO;
|
||||||
|
rigadoc.put(RDOC_QTA, qta);
|
||||||
|
|
||||||
|
//panegirico sugli sconti
|
||||||
|
TString str_sconto;
|
||||||
|
real sconto[4];
|
||||||
|
sconto[0] = recset.get("Sconto1").as_real();
|
||||||
|
sconto[1] = recset.get("Sconto2").as_real() / CENTO;
|
||||||
|
sconto[2] = recset.get("Sconto3").as_real() / CENTO;
|
||||||
|
sconto[3] = recset.get("ScontoLibero").as_real() / CENTO;
|
||||||
|
for (int s = 0; s < 4; s++)
|
||||||
|
{
|
||||||
|
if (!sconto[s].is_zero())
|
||||||
|
str_sconto << (sconto[s] / CENTO) << '+';
|
||||||
|
}
|
||||||
|
str_sconto.rtrim(1);
|
||||||
|
|
||||||
|
rigadoc.put(RDOC_SCONTO, str_sconto);
|
||||||
|
|
||||||
|
|
||||||
|
real prezzo_lordo = recset.get(RDOC_PREZZO).as_real();
|
||||||
|
prezzo_lordo /= 1000;
|
||||||
|
rigadoc.put(RDOC_PREZZO, "");
|
||||||
|
rigadoc.put(RDOC_PREZZOL, prezzo_lordo);
|
||||||
|
|
||||||
|
//3x) iva
|
||||||
|
const int aliquota_iva = recset.get("AliquotaIva").as_int();
|
||||||
|
//rigadoc.put(RDOC_CODIVA, codiva);
|
||||||
|
|
||||||
|
rigadoc.put(RDOC_LIVELLO, recset.get("CodiceLotto").as_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
//incredibilmente arriva in fondo
|
||||||
|
TString msg;
|
||||||
|
msg << anno << "-" << codnum << "-" << ndoc << " Terminale: " << codice_terminale << " Cliente: " << codcf;
|
||||||
|
//se può scrivere...
|
||||||
|
if (_can_write)
|
||||||
|
{
|
||||||
|
int err = doc.write();
|
||||||
|
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
msg.insert("Registrato documento: ", 0);
|
||||||
|
log.log(0, msg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg.insert("Impossibile registrare documento: ", 0);
|
||||||
|
log.log(2, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else //..sennò avverte e basta
|
||||||
|
{
|
||||||
|
msg.insert("Controllato documento: ", 0);
|
||||||
|
log.log(0, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TUpload2Campo::elabora(const TMask& mask)
|
void TUpload2Campo::elabora(const TMask& mask)
|
||||||
{
|
{
|
||||||
TToken_string tipi_record("SU|TF|RF|SI|BR|VC");
|
TToken_string tipi_record("SU|TF|RF|SI|BR|VC");
|
||||||
@ -94,11 +491,23 @@ void TUpload2Campo::elabora(const TMask& mask)
|
|||||||
|
|
||||||
THardy_upload_recordset recset(src_file);
|
THardy_upload_recordset recset(src_file);
|
||||||
const long items = recset.items();
|
const long items = recset.items();
|
||||||
|
//ordinamento del file in memoria; sotto ogni TF (testata) mette le sue righe (RF)...MAGIA!!!
|
||||||
|
recset.sort(ordina_upload);
|
||||||
|
|
||||||
|
#ifdef DBG
|
||||||
|
recset.save_as("c:/temp/hardy/cazzone.txt");
|
||||||
|
#endif
|
||||||
|
|
||||||
//creazione progind e log
|
//creazione progind e log
|
||||||
TProgind pi(items, TR("Acquisizione dati in corso..."), true, true);
|
TProgind pi(items, TR("Acquisizione dati in corso..."), true, true);
|
||||||
TLog_report log("Segnalazioni su acquisizione");
|
TLog_report log("Segnalazioni su acquisizione");
|
||||||
|
log.kill_duplicates();
|
||||||
|
//parametro di controllo; solo se resta true fino alla fine il documento viene writato
|
||||||
|
//solo in caso di elaborazione definitiva può diventare true
|
||||||
|
_can_write = false;
|
||||||
|
if (mask.get_bool(F_DEFINITIVO))
|
||||||
|
_can_write = true;
|
||||||
|
|
||||||
//giro su tutti i record del terribile recordset per l'acquisizione dei dati
|
//giro su tutti i record del terribile recordset per l'acquisizione dei dati
|
||||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||||
{
|
{
|
||||||
@ -106,7 +515,8 @@ void TUpload2Campo::elabora(const TMask& mask)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
//acquisizione tipo record da riga corrente del file di input
|
//acquisizione tipo record da riga corrente del file di input
|
||||||
const TString& tipo_record = recset.get(0u).as_string();
|
TString4 tipo_record = recset.rec_type();
|
||||||
|
tipo_record.trim();
|
||||||
|
|
||||||
const int pos = tipi_record.get_pos(tipo_record);
|
const int pos = tipi_record.get_pos(tipo_record);
|
||||||
|
|
||||||
@ -117,9 +527,9 @@ void TUpload2Campo::elabora(const TMask& mask)
|
|||||||
elabora_SU(recset, log);
|
elabora_SU(recset, log);
|
||||||
break;
|
break;
|
||||||
case 1: //tipo record: TF (Testata Fattura)
|
case 1: //tipo record: TF (Testata Fattura)
|
||||||
//elabora_TF(recset, log);
|
elabora_TF(recset, log);
|
||||||
break;
|
break;
|
||||||
case 2: //tipo record: RF (Riga Fattura)
|
case 2: //tipo record: RF (Riga Fattura) //non serve! lo fa l'elaborazione di testata
|
||||||
//elabora_RF(recset, log);
|
//elabora_RF(recset, log);
|
||||||
break;
|
break;
|
||||||
case 3: //tipo record: SI (incasso documenti)
|
case 3: //tipo record: SI (incasso documenti)
|
||||||
@ -134,8 +544,8 @@ void TUpload2Campo::elabora(const TMask& mask)
|
|||||||
default: //se il tipo record non esiste nella lista dei tipi record si incazza e lo scrive!
|
default: //se il tipo record non esiste nella lista dei tipi record si incazza e lo scrive!
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg << "Tipo record non riconosciuto " << tipo_record;
|
msg << "Tipo record non riconosciuto '" << tipo_record << "' alla riga " << (recset.current_row() + 1);
|
||||||
log.log_error(msg);
|
log.log(2, msg);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
} //switch(pos)..
|
} //switch(pos)..
|
||||||
@ -143,6 +553,8 @@ void TUpload2Campo::elabora(const TMask& mask)
|
|||||||
|
|
||||||
|
|
||||||
} //for (bool ok...
|
} //for (bool ok...
|
||||||
|
|
||||||
|
log.preview();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1 +1,2 @@
|
|||||||
#define F_PATH 201
|
#define F_PATH 201
|
||||||
|
#define F_DEFINITIVO 202
|
@ -8,6 +8,11 @@ BEGIN
|
|||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_DEFINITIVO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "Elaborazione definitiva (scrittura sul database)"
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
TOOLBAR "topbar" 0 0 0 2
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
|
137
ha/halib.cpp
137
ha/halib.cpp
@ -94,144 +94,7 @@ THardy_recordset::THardy_recordset(const int rec_lenght) : TAS400_recordset("AS4
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////
|
|
||||||
// Recordset specifici per i dati da trasferire INPUT
|
|
||||||
/////////////////////////////////////////////////////////////
|
|
||||||
//questo invece è il metodo magico che vale per il caricamento da file esterno
|
|
||||||
THardy_upload_recordset::THardy_upload_recordset(const TFilename& filename)
|
|
||||||
: THardy_recordset(256)
|
|
||||||
{
|
|
||||||
//Tipo record SU
|
|
||||||
//--------------
|
|
||||||
add_trc_field("SU", "TipoRecord", T_X, 1, 2); //x
|
|
||||||
add_trc_field("SU", "CodiceTerminale", T_N, 3, 3); //x
|
|
||||||
add_trc_field("SU", AGE_CODAGE, T_N, 6, 3); //x
|
|
||||||
add_trc_field("SU", "NonUsato", T_X, 9, 6);
|
|
||||||
add_trc_field("SU", "Targa", T_X, 15, 8);
|
|
||||||
add_trc_field("SU", "nDDT", T_N, 23, 5);
|
|
||||||
add_trc_field("SU", "nFATT", T_N, 28, 5);
|
|
||||||
add_trc_field("SU", "nBOLLA", T_N, 33, 5);
|
|
||||||
add_trc_field("SU", AGE_RAGSOC, T_X, 38, 30); //x
|
|
||||||
|
|
||||||
//Tipo record TF
|
|
||||||
//--------------
|
|
||||||
add_trc_field("TF", "TipoRecord", T_X, 1, 2); //x
|
|
||||||
add_trc_field("TF", "CodiceTerminale", T_N, 3, 3); //x
|
|
||||||
add_trc_field("TF", DOC_NDOC, T_N, 6, 5); //x
|
|
||||||
add_trc_field("TF", DOC_DATADOC, T_X, 11, 6); //x
|
|
||||||
add_trc_field("TF", DOC_TIPODOC, T_X, 17, 1); //x
|
|
||||||
add_trc_field("TF", DOC_CODCF, T_X, 18, 6); //x
|
|
||||||
add_trc_field("TF", DOC_CODCFFATT, T_X, 24, 6); //x
|
|
||||||
add_trc_field("TF", "ImponibileLordo", T_Nv2N, 30, 8); // campi seguenti da righe doc
|
|
||||||
add_trc_field("TF", "ScontoFattura", T_2Nv2N,38, 4);
|
|
||||||
add_trc_field("TF", "ImponibileDoc", T_Nv2N, 42, 8);
|
|
||||||
add_trc_field("TF", "TotaleDoc", T_Nv2N, 50, 8);
|
|
||||||
add_trc_field("TF", "ScontoTotale", T_Nv2N, 58, 8);
|
|
||||||
add_trc_field("TF", "ImponibileOmaggi", T_Nv2N, 66, 8);
|
|
||||||
add_trc_field("TF", "ImponibileSost", T_Nv2N, 74, 8);
|
|
||||||
add_trc_field("TF", "Incasso", T_Nv2N, 82, 8); //forse IMPPAGATO ?
|
|
||||||
add_trc_field("TF", DOC_CODPAG, T_X, 90, 2); //x
|
|
||||||
add_trc_field("TF", DOC_DATAPART, T_X, 92, 6); //x
|
|
||||||
add_trc_field("TF", "Iva1", T_N, 98, 2); //anche questi da righe doc
|
|
||||||
add_trc_field("TF", "Imponibile1", T_Nv2N, 100,8);
|
|
||||||
add_trc_field("TF", "Imposta1", T_Nv2N, 108,7);
|
|
||||||
add_trc_field("TF", "Iva2", T_N, 115,2);
|
|
||||||
add_trc_field("TF", "Imponibile2", T_Nv2N, 117,8);
|
|
||||||
add_trc_field("TF", "Imposta2", T_Nv2N, 125,7);
|
|
||||||
add_trc_field("TF", "Iva3", T_N, 132,2);
|
|
||||||
add_trc_field("TF", "Imponibile3", T_Nv2N, 134,8);
|
|
||||||
add_trc_field("TF", "Imposta3", T_Nv2N, 142,7);
|
|
||||||
add_trc_field("TF", "Iva4", T_N, 149,2);
|
|
||||||
add_trc_field("TF", "Imponibile4", T_Nv2N, 151,8);
|
|
||||||
add_trc_field("TF", "Imposta4", T_Nv2N, 159,7);
|
|
||||||
add_trc_field("TF", "CodcliGiro3", T_X, 166,6);
|
|
||||||
add_trc_field("TF", "IvaOmag1", T_N, 172,2);
|
|
||||||
add_trc_field("TF", "ImponibileOmag1", T_Nv2N, 174,6);
|
|
||||||
add_trc_field("TF", "ImpostaOmag1", T_Nv2N, 180,5);
|
|
||||||
add_trc_field("TF", "IvaOmag2", T_N, 185,2);
|
|
||||||
add_trc_field("TF", "ImponibileOmag2", T_Nv2N, 187,6);
|
|
||||||
add_trc_field("TF", "ImpostaOmag2", T_Nv2N, 193,5);
|
|
||||||
add_trc_field("TF", "DataEmissione", T_X, 198,6);
|
|
||||||
add_trc_field("TF", "PagamentoCarta", T_X, 204,1);
|
|
||||||
|
|
||||||
//Tipo record RF
|
|
||||||
//--------------
|
|
||||||
add_trc_field("RF", "TipoRecord", T_X, 1, 2); //x
|
|
||||||
add_trc_field("RF", "CodiceTerminale", T_N, 3, 3); //x
|
|
||||||
add_trc_field("RF", RDOC_NDOC, T_N, 6, 5); //x
|
|
||||||
add_trc_field("RF", DOC_DATADOC, T_X, 11, 6); //x testata
|
|
||||||
add_trc_field("RF", DOC_CODCF, T_X, 17, 6); //x testata
|
|
||||||
add_trc_field("RF", DOC_CODCFFATT, T_X, 23, 6); //x testata
|
|
||||||
add_trc_field("RF", DOC_TIPODOC, T_X, 29, 1); //x testata
|
|
||||||
add_trc_field("RF", RDOC_CODART, T_X, 30, 5); //x
|
|
||||||
add_trc_field("RF", "TipoCessione", T_X, 35, 1);
|
|
||||||
add_trc_field("RF", "Qta[int]", T_N, 36, 5); //x
|
|
||||||
add_trc_field("RF", "Qta[dec]", T_N, 41, 2); //x
|
|
||||||
add_trc_field("RF", "Sconto1", T_2Nv2N,43, 4);
|
|
||||||
add_trc_field("RF", "Sconto2", T_2Nv2N,47, 4);
|
|
||||||
add_trc_field("RF", "Sconto3", T_2Nv2N,51, 4);
|
|
||||||
add_trc_field("RF", "ScontoLibero", T_2Nv2N,55, 4);
|
|
||||||
add_trc_field("RF", RDOC_PREZZO, T_Nv3N, 59, 7); //x forse PREZZOL ?
|
|
||||||
add_trc_field("RF", "TotaleRiga", T_Nv3N, 66, 8);
|
|
||||||
add_trc_field("RF", "TotaleSconto", T_Nv3N, 74, 8);
|
|
||||||
add_trc_field("RF", "AliquotaIva", T_N, 82, 2); //noi abbiamo il codice
|
|
||||||
add_trc_field("RF", RDOC_UMQTA, T_X, 84, 2); //x
|
|
||||||
add_trc_field("RF", "PrezzoScontato", T_Nv3N, 86, 7);
|
|
||||||
add_trc_field("RF", "Fascia", T_X, 93, 1);
|
|
||||||
add_trc_field("RF", "ScontoFascia", T_2N, 94, 2);
|
|
||||||
add_trc_field("RF", "NonUsato", T_N, 96, 2);
|
|
||||||
add_trc_field("RF", "CodcliGiro3", T_X, 98, 6);
|
|
||||||
add_trc_field("RF", "CodiceLotto", T_X, 104,10); //noi lo leghiamo all'articolo
|
|
||||||
|
|
||||||
//Tipo record SI
|
|
||||||
//--------------
|
|
||||||
add_trc_field("SI", "TipoRecord", T_X, 1, 2); //x
|
|
||||||
add_trc_field("SI", "CodiceTerminale", T_N, 3, 3); //x
|
|
||||||
add_trc_field("SI", "CodiceCliente", T_X, 6, 6);
|
|
||||||
add_trc_field("SI", "NumeroFattura", T_X, 12, 12);
|
|
||||||
add_trc_field("SI", "DataFattura", T_X, 24, 6);
|
|
||||||
add_trc_field("SI", "NonUsato", T_N, 30, 9);
|
|
||||||
add_trc_field("SI", "ImportoIncassato", T_Nv2N, 39, 9);
|
|
||||||
add_trc_field("SI", "DataIncasso", T_X, 48, 6);
|
|
||||||
add_trc_field("SI", "Partita", T_X, 54, 15);
|
|
||||||
add_trc_field("SI", "TipoDocumento", T_X, 69, 1);
|
|
||||||
add_trc_field("SI", "DataEmissione", T_X, 70, 6);
|
|
||||||
add_trc_field("SI", "PagamentoCarta", T_X, 76, 1);
|
|
||||||
|
|
||||||
//Tipo record BR
|
|
||||||
//--------------
|
|
||||||
add_trc_field("BR", "TipoRecord", T_X, 1, 2); //x
|
|
||||||
add_trc_field("BR", "CodiceTerminale", T_N, 3, 3); //x
|
|
||||||
add_trc_field("BR", "NumeroRiga", T_N, 6, 3);
|
|
||||||
add_trc_field("BR", "NumeroDoc", T_N, 9, 5);
|
|
||||||
add_trc_field("BR", "DataMov", T_X, 14, 6);
|
|
||||||
add_trc_field("BR", "CodiceArticolo", T_X, 20, 5);
|
|
||||||
add_trc_field("BR", "Qta[int]", T_N, 25, 5);
|
|
||||||
add_trc_field("BR", "Qta[dec]", T_N, 30, 2);
|
|
||||||
add_trc_field("BR", "Mittente", T_N, 32, 3);
|
|
||||||
add_trc_field("BR", "Destinatario", T_N, 35, 3);
|
|
||||||
add_trc_field("BR", "CausaleMov", T_N, 38, 2);
|
|
||||||
add_trc_field("BR", "CodiceLotto", T_X, 40, 10);
|
|
||||||
|
|
||||||
//Tipo record VC
|
|
||||||
//--------------
|
|
||||||
add_trc_field("VC", "TipoRecord", T_X, 1, 2); //x
|
|
||||||
add_trc_field("VC", "CodiceTerminale", T_N, 3, 3); //x
|
|
||||||
add_trc_field("VC", CLI_CODCF, T_X, 6, 6); //x
|
|
||||||
add_trc_field("VC", CLI_RAGSOC, T_X, 12, 34); //x
|
|
||||||
add_trc_field("VC", CLI_INDCF, T_X, 46, 34); //x
|
|
||||||
add_trc_field("VC", "Localita", T_X, 80, 20); //x attenzione che potrebbe essere il com_dencom
|
|
||||||
add_trc_field("VC", CLI_CAPCF, T_X, 100, 5); //x
|
|
||||||
add_trc_field("VC", "Provincia", T_X, 105, 2); //x da questo e da dencom ricaviamo il codcom
|
|
||||||
add_trc_field("VC", CLI_PAIV, T_X, 107, 16); //x
|
|
||||||
add_trc_field("VC", CLI_CODPAG, T_X, 123, 1); //x
|
|
||||||
add_trc_field("VC", "CodiceListino", T_X, 124, 3);
|
|
||||||
add_trc_field("VC", "TipoDocumento", T_X, 127, 1);
|
|
||||||
add_trc_field("VC", CLI_COFI, T_X, 128, 16); //x
|
|
||||||
|
|
||||||
|
|
||||||
load_file(filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
//Clienti
|
//Clienti
|
||||||
|
12
ha/halib.h
12
ha/halib.h
@ -210,18 +210,6 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------
|
|
||||||
// Hardy_upload_recordset: serve per l'INPUT
|
|
||||||
//------------------------------------------------------------
|
|
||||||
class THardy_upload_recordset : public THardy_recordset
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
THardy_upload_recordset(const TFilename& filename);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------
|
//----------------------------------------------------------
|
||||||
|
@ -7,11 +7,12 @@ Item_01 = "Gestione contratti premio", "ha0 -2", ""
|
|||||||
Item_02 = "Contabilizzazione contratti premio", "ve6 -1", "F"
|
Item_02 = "Contabilizzazione contratti premio", "ve6 -1", "F"
|
||||||
Item_03 = "Generazione NAC", "ha0 -4", ""
|
Item_03 = "Generazione NAC", "ha0 -4", ""
|
||||||
Item_04 = "Elaborazione contratti premio pareggiati", "ha0 -3", "F"
|
Item_04 = "Elaborazione contratti premio pareggiati", "ha0 -3", "F"
|
||||||
Item_05 = "Gestione listini", "ve2 -4", ""
|
Item_05 = "Listini", "ve2 -4 L", ""
|
||||||
Item_06 = "Stampa listini", "ve3 -4 L", ""
|
Item_06 = "Listini cliente", "ve2 -4 C", ""
|
||||||
Item_07 = "Esportazione archivi formato txt", "ha1 -1", "F"
|
Item_07 = "Stampa listini", "ve3 -4 L", ""
|
||||||
Item_08 = "Importazione dati da file", "ha1 -2", "F"
|
Item_08 = "Esportazione archivi formato txt", "ha1 -1", "F"
|
||||||
Item_09 = "Servizi", [HAMENU_002]
|
Item_09 = "Importazione dati da file", "ha1 -2", "F"
|
||||||
|
Item_10 = "Servizi", [HAMENU_002]
|
||||||
|
|
||||||
[HAMENU_002]
|
[HAMENU_002]
|
||||||
Caption = "Servizi"
|
Caption = "Servizi"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user