COSI85 - Caricamento causali da fogli Excel
Scopo
Programma di importazione massiva delle causali contabili dell'Unione Soci a partire da file Excel (.xls/.xlsx) o file testo delimitato. Per ogni riga del file, crea o aggiorna un record in COGTABEL con euta-tipo = 65 (tabella causali), agganciando il conto di credito letto dal piano dei conti tramite il sottoconto indicato. Genera un file di log degli errori (sottoconti inesistenti) nella cartella temporanea.
Contabilita' > Unione soci/clienti > Archivi & Tabelle > Carica causali da Excel
File e tabelle
| File |
Tipo |
Descrizione |
| FEURTAB |
Parametri |
File parametri di ambiente |
| COGTABEL (EUTA) |
I-O |
Tabella generica; scrittura record causali tipo 65 |
| COGPNCON |
Input |
Piano dei conti; verifica esistenza sottoconto |
| filseq |
I-O sequenziale |
File temporaneo contenente i dati esportati dall'Excel (delimitato) |
| filelog |
Output sequenziale |
File di log degli errori ($logcosi85.<operatore>) |
Copybook
File e select
feurtab.fd, cosi85.select — SELECT dei file
cosi85.fd — FD specifici del programma
cosi85.wrk — working-storage generata da Screens
Working-storage standard
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, capazien.cpy
k-u10.cpy, UTILu10.CPY — utility formattazione importi
utilncnf.cpy — utility configurazioni RNEWCONF
utilw92.cpy — utility messaggi
utilestrxls.cpy — utility conversione Excel -> testo (ESTRXLS)
l-copiaf.cpy, u-copiaf.cpy — copia file via subroutine COPIAF
opensave.def — interfaccia C$OPENSAVEBOX
Linkage
wcont.cpy, wcont1.cpy — stringhe di comunicazione
Screen
cosi85-01.scr — screen section maschera GUI
Procedure
cosi85.decla, cosi85.prc
getdcont.cpy, grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy, sendw92.cpy
CALL
| Programma |
Descrizione |
| RNEWCONF |
Lettura configurazioni (cogesys/delimitatore-colonne-excel, ass-strum/merce-matricola-default) |
| COPIAF |
Copia file da client a server (gestione thin client) |
| ESTRXLS |
Conversione file Excel in formato testo delimitato |
| C$OPENSAVEBOX |
Finestra nativa di selezione file (F5) |
Logica di elaborazione
- Inizializzazione (
apri): apre file, legge azienda, attiva F1/F3/F5, esegue x99-load-config per leggere il delimitatore Excel e il default merce/matricola.
- Accept file (
a-tm-filein): l'utente digita o seleziona via F5 (C$OPENSAVEBOX) il file da importare. La validazione (x-controlla-tm-filein) verifica l'estensione, risolve il percorso lato client tramite COPIAF.
- Conferma e copia (
a-richiesta-conferma): se thin client, COPIAF copia il file da client a server. Se l'estensione e' xls/xlsx, ESTRXLS converte il file in testo delimitato import.txt nella cartella temporanea.
- Apertura file log: apre
filelog in $logcosi85.<operatore> nella cartella temporanea.
- Loop di importazione (
tratta-file / tratta-file-loop):
- Legge una riga da
filseq
- Esegue
b1-carica-delimitato per fare l'unstring controllata (gestisce apici doppi)
- Mappa le colonne in
w-in-a ... w-in-z (testo) e w-in-a-9 ... w-in-z-9 (numerici via function numval)
- Salta la riga di intestazione (primi 3 caratteri di
w-in-a = "COD")
- Per ogni riga valida:
- Inizializza
euta-rec con euta-tipo = 65 (k-euta-tipo)
- Imposta
euta-cod-to = w-in-a(1:3) (codice causale)
euta-65-desc = w-in-b (descrizione)
- Flag IVA:
euta-65-iva-sino = "SI" se w-in-d numerico non zero, altrimenti "NO"
euta-65-iva-cod = w-in-d
euta-65-inter = "S" (causale intracomunitaria)
- Cerca il sottoconto:
pco-chia = numval(w-in-c) e rd-cogpncon
- Se trovato, salva
pco-chia in euta-65-creddito; altrimenti scrive nel log un messaggio "Correggere causale ... Piano conti sbagliato ..."
euta-65-cpa-cco = 1, euta-65-fl-bilancio = "N"
- Esegue
wr-cogtabel; se gia' presente esegue rwr-cogtabel
- Incrementa
tm-aggiornati
- Messaggio finale (
box-msg): mostra record letti, aggiornati e non trovati. Se w-fl-err = "S" segnala il path del file di log.
- Chiusura (
fine / z-chiudi): chiude i file, esce.
Configurazioni RNEWCONF lette
| Gruppo |
Chiave |
Uso |
| cogesys |
delimitatore-colonne-excel |
Carattere delimitatore colonne (default ;) |
| ass-strum |
merce-matricola-default |
Default merce/matricola (caricato ma non utilizzato direttamente) |
Mapping colonne file
| Colonna |
Variabile |
Significato |
| A |
w-in-a |
Codice causale (primi 3 caratteri usati come euta-cod-to) |
| B |
w-in-b |
Descrizione causale |
| C |
w-in-c |
Codice sottoconto (cercato in COGPNCON via pco-chia) |
| D |
w-in-d |
Codice IVA (se != 0 attiva flag IVA) |
| E, F |
w-in-e, w-in-f |
Letti ma non utilizzati |
Note tecniche
- Il programma e' stato sviluppato per l'ambiente Unione Agricoltori; commenti originari di Mauro.
- La routine
b1-carica-delimitato gestisce campi delimitati con apici doppi (per stringhe contenenti il delimitatore).
- Il file
filseq viene aperto come random con organization line sequential: in caso di Excel, viene rimpiazzato dall'output di ESTRXLS (import.txt).
- Tipo causale fisso a 65 (costante
k-euta-tipo).
- La causale viene sempre marcata come intracomunitaria (
euta-65-inter = "S") e non di bilancio (euta-65-fl-bilancio = "N").
- Il codice contiene blocchi di codice commentati (alternative storiche su colonne D/F per il codice IVA).
- Usa
PERFORM ... THRU su tratta-file, b1-carica-delimitato (codice legacy).