Vai al contenuto

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

  1. Inizializzazione (apri): apre file, legge azienda, attiva F1/F3/F5, esegue x99-load-config per leggere il delimitatore Excel e il default merce/matricola.
  2. 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.
  3. 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.
  4. Apertura file log: apre filelog in $logcosi85.<operatore> nella cartella temporanea.
  5. Loop di importazione (tratta-file / tratta-file-loop):
  6. Legge una riga da filseq
  7. Esegue b1-carica-delimitato per fare l'unstring controllata (gestisce apici doppi)
  8. Mappa le colonne in w-in-a ... w-in-z (testo) e w-in-a-9 ... w-in-z-9 (numerici via function numval)
  9. Salta la riga di intestazione (primi 3 caratteri di w-in-a = "COD")
  10. 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
  11. Messaggio finale (box-msg): mostra record letti, aggiornati e non trovati. Se w-fl-err = "S" segnala il path del file di log.
  12. 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).