Trascodifica numero documento
Come
avviene la trascodifica del
numero documento originale
in un numero documento in formato G2:
entry
rp_02feh_fehDocToDatDoc * entry "rp_02feh_fehDocToDatDoc" fa del suo
meglio per popolare dat-numero-documento 9(6) e dat-num-documento
x(6) *
in base al contenuto di 02feh-numeroDoc
x(20) *
riceve lk-02feh-numero-doc
x(k-sizeOf02fehNumeroDoc) * ritorna
lk-dat-numero-documento 9(06) * ritorna
lk-dat-num-documento
x(06) * ritorna
lk-unsigned-int unsigned-int
numero di caratteri diversi tra la sorgente del numero fattura e il
risultato * giving
boolean true se il numero di caratteri diversi tra la sorgente del numero
fattura e il risultato *
è inferiore al massimo consentito
(k-NumDocMaxDiffChars)
l’algoritmo
è piuttosto complesso; l’obbiettivo è quello di riempire al
meglio: - la parte numerica lk-dat-numero-documento
- la parte alfanumerica lk-dat-num-documento
1) makeChunksList: la stringa di input con il numero fattura
ricevuto da file xml viene divisa (split) in pezzi (chunks) spezzandola per i
caratteri: “/” “\” “-“ “_”
“ “ creando due liste una contenente i chunks alfanumerici
(alphaChunksList) e una contenente i chunks numerici
(numericChunksList) 2) check numericChunskList is empty: si verifica se la lista dei
chunks numerici (numericChunksList) è vuota, se sì allora
(ExtractNumCharfromAlphaChunks) si procede con la divisione (split) dei
caratteri numerici dai chunks della lista alphaChunksList correggendo così la
numericChunksList 3) extractNumericChunks {exclude year}: si cicla la
numericChunksList e si estraggono i chunk numerici escludendo i chunk numerici
che possono essere assimilabili all’anno corrente, precedente o successivo (anno
intero o parziale es: 2023 o 23) 3a) se non si è estratto nulla allora si procede con
(ExtractNumCharfromAlphaChunks) ovvero si procede con la divisione (split) dei
caratteri numerici dai chunks della lista alphaChunksList correggendo così la
numericChunksList 3b) extractNumericChunks {exclude year}: si cicla la
numericChunksList e si estraggono i chunk numerici escludendo i chunk numerici
che possono essere assimilabili all’anno corrente, precedente o successivo (anno
intero o parziale es: 2023 o 23) 4) se non si è estratto nulla allora si procede con
(extractNumericChunks {include year}) ovvero si cicla la numericChunksList e si
estraggono i chunk numerici NON escludendo i chunk numerici che possono
essere assimilabili all’anno corrente, precedente o successivo (anno intero o
parziale es: 2023 o 23) [doc number maybe equal current
year] 5) si considera i chunks rimanenti di entrambe le liste come chunks
alfanumerici, quindi si ciclano entrambe le liste è si estraggono i chunks
alfanumerici 6) no more chunks to process: le due liste di chunks sono
vuote e le due parti del numero fattura di G2 (numerica e alfanumerica) sono
state riempite con i relativi chunks durante le varie
estrazioni 7) check results: si verifica se il risultato è soddisfacente,
ovvero si contano i caratteri diversi tra il numero fattura xml e il numero
fattura estratto per G2 escludendo dal conteggio i caratteri “/” “\”
“-“ “_” “ “ “0” Se il numero di caratteri differenti è minore della costante
k-NumDocMaxDiffChars (attualmente a zero) allora il risultato sarà considerato
soddisfacente