Files
comun/docs/oracle_export.md
Marius Mutu 6de489950c sync SVN r18016: editare articole in factura de vanzare, precizie pret achizitie
ROAFACTURARE 2.11.15 (r18015): programe/ofacturare_editare.prg, programe/ofacturare_stoc.prg.
docs: conventia de encoding .sc2/.vc2 corectata la cp1250; cercetarile trans-proiect mutate
din ROAFACTURARE in docs/cercetare (r18014); actualizari reguli_lucru, oracle_export,
flux-editare-vfp-text, scripturi-migrare-db, flux-modificare-stergere-nota-jurnal, todos.
.gitignore: watchdog_out si PNG-urile din rularile headless (r18008).
Text FoxBin2Prg regenerat: clase/comun.vc2, ferestre/frm_import_note_facturi_clienti.sc2,
ferestre/frm_initializare_facturi_balanta.sc2.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AV7dQbTLAqvrtQbH7zxXxw
2026-08-20 14:07:12 +03:00

4.3 KiB
Raw Blame History

Export surse Oracle (PACK_CONTAFIN & co.) — cum se face

PACK_CONTAFIN.pck din acest folder este exportul sursei pachetului PL/SQL PACK_CONTAFIN. Claude Code își face singur exportul/reîmprospătarea — nu mai e nevoie de export manual din PL/SQL Developer.

Conexiune

  • Client: D:\ROA\instantclient_19_18\sqlplus.exe (TNS_ADMIN deja setat spre același folder).
  • Alias TNS: ROA_CENTRAL10.0.20.121:1521, SERVICE_NAME=ROA (vezi tnsnames.ora).
  • Schema/utilizator: MARIUSM_AUTO (schema de dezvoltare a lui Marius).
  • Schema de lucru pentru verificari: MARIUSM_AUTO pe ROA_CENTRAL - nu ACN sau altele.
  • Parola nu e versionată în git — în COMUN\docs\local\oracle.md (ignorat de git, există în SVN).

PACK_CONTAFIN există în schemele MARIUSM_AUTO (dev) și ACN, plus sinonim PUBLIC. Exportul de referință se face din MARIUSM_AUTO.

Înainte de a lua o sursă de acolo ca referință pentru o modificare, verifică că MARIUSM_AUTO are toate scripturile aplicate — procedura e în scripturi-migrare-db.md, secțiunea "Sursa de referință pentru DDL".

Gotcha sqlplus pe Windows/PowerShell

Nu trimite SQL prin pipe din PowerShell ('select...' | sqlplus) — BOM-ul UTF-16 sparge parserul (SP2-0734: unknown command beginning "select..."). Scrie un fișier .sql cu encoding ASCII și rulează-l cu @fisier.sql.

Comanda de export (re-generare .pck)

linesize prea mic corupe tăcut sursa. SQL*Plus face wrap la coloana linesize, deci o linie de cod mai lungă e ruptă în două — inclusiv prin mijlocul unui identificator. Fișierul pare întreg, diff față de el nu arată nimic, dar recompilarea lui dă erori la linii care n-au nicio legătură cu ce ai modificat (ORA-00920, PLS-*). PACK_FACTURARE are linii de peste 1000 de caractere, iar un export la linesize 400 i-a rupt 8. Folosește linesize 32767 și verifică după export că nicio linie nu atinge exact valoarea linesize.

Exportul e bun pentru CITIT, nu ca bază pentru un script de migrare. Pentru un script de pachet, pleacă de la ultimul script aplicat din SCRIPTURI_CLAR (fișier real, care n-a trecut niciodată printr-un spool) și confirmă că e la zi comparându-l cu exportul ignorând spațiul alb — așa wrap-ul nu mai contează: tr -d ' \t\r\n' < fisier | md5sum pe ambele.

-- export_pack.sql
set pagesize 0 linesize 32767 long 2000000 longchunksize 32767 trimspool on feedback off heading off termout off
spool D:\ROA\ROAGEST\COMUN\docs\PACK_CONTAFIN.pck
select text from all_source where owner='MARIUSM_AUTO' and name='PACK_CONTAFIN' and type='PACKAGE' order by line;
select '/' from dual;
select text from all_source where owner='MARIUSM_AUTO' and name='PACK_CONTAFIN' and type='PACKAGE BODY' order by line;
select '/' from dual;
spool off
exit
& 'D:\ROA\instantclient_19_18\sqlplus.exe' -L -S 'MARIUSM_AUTO/<parola>@ROA_CENTRAL' '@export_pack.sql'

Același tipar merge pentru orice alt pachet/procedură (PACK_SESIUNE, PACK_PRETURI, …) sau pentru DDL de tabele/view-uri (all_tab_columns, dbms_metadata.get_ddl).

Ce e strict necesar de știut despre PACK_CONTAFIN

Pachetul central de scriere a documentelor — clientul VFP populează tabelele temporare ACT_TEMP/RUL_TEMP (prin oscrie_in_fisiere-ul din COMUN), apoi pachetul distribuie:

  • SCRIE_IN_FISIERE — orchestratorul (apelat per document).
  • SCRIE_IN_ACTACT_TEMPACT (notele contabile).
  • SCRIE_IN_RULRUL_TEMPRUL (mișcările de stoc); completează COD, DATAORA, ID_FACT (min. id_fact fără conturi 5xx), ID_SUCURSALA, DATAIN/DATAOUT din dataact, opțional ID_RUL_AUX pe furnizor (opțiunea de firmă RULAJFURNIZOR). Scrie exact ce e în RUL_TEMP — nu derivă rulaje din ACT, deci filtrarea liniilor de rulaj se face în clientul VFP.
  • SCRIE_IN_RUL_OBINV / SCRIE_IN_STOC / SCRIE_IN_STOC_OBINV — variantele pentru obiecte de inventar și actualizarea stocului.
  • VERIFICA_NOTE_CONTABILE, SCRIE_JC_2007/SCRIE_JV_2007 (jurnale TVA), SCRIE_IN_BALANTA(_PARTENERI), sterge_document, finalizeaza_document_*.
  • Stare de sesiune prin settere/gettere (SET_COD/GET_COD, SET_IDFACT, SET_ID_SUCURSALA, …)
    • PACK_SESIUNE (an/lună, opțiuni firmă).