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
4.3 KiB
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_ADMINdeja setat spre același folder). - Alias TNS:
ROA_CENTRAL→10.0.20.121:1521,SERVICE_NAME=ROA(vezitnsnames.ora). - Schema/utilizator:
MARIUSM_AUTO(schema de dezvoltare a lui Marius). - Schema de lucru pentru verificari:
MARIUSM_AUTOpeROA_CENTRAL- nuACNsau 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)
linesizeprea mic corupe tăcut sursa. SQL*Plus face wrap la coloanalinesize, deci o linie de cod mai lungă e ruptă în două — inclusiv prin mijlocul unui identificator. Fișierul pare întreg,difffață 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_FACTURAREare linii de peste 1000 de caractere, iar un export lalinesize 400i-a rupt 8. Foloseștelinesize 32767și verifică după export că nicio linie nu atinge exact valoarealinesize.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 | md5sumpe 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_ACT—ACT_TEMP→ACT(notele contabile).SCRIE_IN_RUL—RUL_TEMP→RUL(mișcările de stoc); completeazăCOD,DATAORA,ID_FACT(min.id_factfără conturi 5xx),ID_SUCURSALA,DATAIN/DATAOUTdindataact, opționalID_RUL_AUXpe 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ă).