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


Zucchetti S.p.A.  Gestionale 2  versione 2023