feat(vadeco): script bat copiere lunara date contabilitate
Script Windows interactiv pentru client VADECO_20240227: - verificare TCP port 1521 (fail-fast fara tunel SSH) - verificare calendar Oracle: deschidere luna noua (tnDeschidere=1) sau redeschidere cu avertisment stergere date (tnDeschidere=0) - apel ACOPIE_BAZA_DATE + pack_deschidere_luna.deschidere_luna - mod Dry Run (afiseaza SQL fara executie) si suport argumente CLI - valori implicite: anul si luna anterioara curenta Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
386
proxmox/lxc108-oracle/clienti/vadeco/copiere_luna_vadeco.bat
Normal file
386
proxmox/lxc108-oracle/clienti/vadeco/copiere_luna_vadeco.bat
Normal file
@@ -0,0 +1,386 @@
|
||||
@echo off
|
||||
setlocal EnableDelayedExpansion
|
||||
chcp 1250 >nul
|
||||
|
||||
REM ============================================================
|
||||
REM CONFIGURARE - completati parola inainte de a da clientului
|
||||
REM ============================================================
|
||||
set DB_USER=VADECO_20240227
|
||||
set DB_PASS=ROMFASTSOFT
|
||||
set DB_SERVICE=ROA_ROMFAST
|
||||
REM ============================================================
|
||||
REM
|
||||
REM UTILIZARE INTERACTIVA:
|
||||
REM copiere_luna_vadeco.bat
|
||||
REM
|
||||
REM UTILIZARE CLI (pentru testare):
|
||||
REM copiere_luna_vadeco.bat <mod> <an> <luna> <confirmare>
|
||||
REM mod: 1=Normal 2=Dry Run
|
||||
REM an: ex: 2026
|
||||
REM luna: 1-12
|
||||
REM confirmare: D=Da N=Nu
|
||||
REM Exemplu dry run: copiere_luna_vadeco.bat 2 2026 4 D
|
||||
REM ============================================================
|
||||
|
||||
echo.
|
||||
echo ============================================================
|
||||
echo COPIERE DATE CONTABILITATE - VADECO
|
||||
echo Conectare: %DB_USER%@%DB_SERVICE%
|
||||
echo ============================================================
|
||||
echo.
|
||||
|
||||
REM ------------------------------------------------------------
|
||||
REM Calcul valori implicite: luna anterioara
|
||||
REM ------------------------------------------------------------
|
||||
for /f %%a in ('powershell -noprofile -command "(Get-Date).AddMonths(-1).Year"') do set "DEFAULT_AN=%%a"
|
||||
for /f %%a in ('powershell -noprofile -command "(Get-Date).AddMonths(-1).Month"') do set "DEFAULT_LUNA=%%a"
|
||||
|
||||
REM ------------------------------------------------------------
|
||||
REM Detectare mod CLI vs interactiv
|
||||
REM ------------------------------------------------------------
|
||||
if not "%~1"=="" goto :cli_mode
|
||||
|
||||
REM ============================================================
|
||||
REM MOD INTERACTIV
|
||||
REM ============================================================
|
||||
|
||||
:input_mod
|
||||
echo Mod executie:
|
||||
echo 1. Normal - executa modificarile in baza de date
|
||||
echo 2. Dry Run - simulare, fara modificari (pentru testare)
|
||||
echo.
|
||||
set "MOD="
|
||||
set /p "MOD=Alegeti modul (1/2): "
|
||||
if "%MOD%"=="1" goto :input_an
|
||||
if "%MOD%"=="2" goto :input_an
|
||||
echo EROARE: Introduceti 1 sau 2.
|
||||
echo.
|
||||
goto :input_mod
|
||||
|
||||
:input_an
|
||||
set "v_an="
|
||||
set /p "v_an=Introduceti ANUL [%DEFAULT_AN%]: "
|
||||
if "%v_an%"=="" set "v_an=%DEFAULT_AN%"
|
||||
echo %v_an%| findstr /r "^[0-9][0-9][0-9][0-9]$" >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo EROARE: Anul trebuie sa fie exact 4 cifre.
|
||||
goto :input_an
|
||||
)
|
||||
|
||||
:input_luna
|
||||
set "v_luna="
|
||||
set /p "v_luna=Introduceti LUNA [%DEFAULT_LUNA%]: "
|
||||
if "%v_luna%"=="" set "v_luna=%DEFAULT_LUNA%"
|
||||
echo %v_luna%| findstr /r "^[0-9][0-9]*$" >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo EROARE: Luna trebuie sa fie un numar.
|
||||
goto :input_luna
|
||||
)
|
||||
if %v_luna% lss 1 (
|
||||
echo EROARE: Luna trebuie sa fie intre 1 si 12.
|
||||
goto :input_luna
|
||||
)
|
||||
if %v_luna% gtr 12 (
|
||||
echo EROARE: Luna trebuie sa fie intre 1 si 12.
|
||||
goto :input_luna
|
||||
)
|
||||
goto :validate_ok
|
||||
|
||||
REM ============================================================
|
||||
REM MOD CLI (pentru testare)
|
||||
REM ============================================================
|
||||
:cli_mode
|
||||
set "MOD=%~1"
|
||||
set "v_an=%~2"
|
||||
set "v_luna=%~3"
|
||||
if "%v_an%"=="" set "v_an=%DEFAULT_AN%"
|
||||
if "%v_luna%"=="" set "v_luna=%DEFAULT_LUNA%"
|
||||
echo %v_an%| findstr /r "^[0-9][0-9][0-9][0-9]$" >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo EROARE: Anul trebuie sa fie exact 4 cifre ^(primit: %v_an%^).
|
||||
exit /b 1
|
||||
)
|
||||
echo %v_luna%| findstr /r "^[0-9][0-9]*$" >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo EROARE: Luna trebuie sa fie un numar ^(primit: %v_luna%^).
|
||||
exit /b 1
|
||||
)
|
||||
if %v_luna% lss 1 ( echo EROARE: Luna ^< 1. & exit /b 1 )
|
||||
if %v_luna% gtr 12 ( echo EROARE: Luna ^> 12. & exit /b 1 )
|
||||
|
||||
REM ============================================================
|
||||
REM VALIDARE COMUNA
|
||||
REM ============================================================
|
||||
:validate_ok
|
||||
:mod_ok
|
||||
|
||||
if "%MOD%"=="1" (
|
||||
set "DRY_RUN=0"
|
||||
echo Mod: NORMAL
|
||||
) else if "%MOD%"=="2" (
|
||||
set "DRY_RUN=1"
|
||||
echo Mod: DRY RUN ^(simulare^)
|
||||
) else (
|
||||
echo EROARE: Mod invalid ^(primit: %MOD%^). Folositi 1 sau 2.
|
||||
exit /b 1
|
||||
)
|
||||
echo.
|
||||
|
||||
echo ------------------------------------------------------------
|
||||
echo AN: %v_an% LUNA: %v_luna%
|
||||
if "%DRY_RUN%"=="1" echo MOD: DRY RUN - nu se vor face modificari
|
||||
echo ------------------------------------------------------------
|
||||
echo.
|
||||
|
||||
REM ------------------------------------------------------------
|
||||
REM Pas 4: Test conectivitate Oracle (rulat si in dry run)
|
||||
REM ------------------------------------------------------------
|
||||
echo Se verifica conexiunea la Oracle...
|
||||
|
||||
REM Test TCP rapid pe port 1521 (fail fast daca tunelul SSH nu e activ)
|
||||
powershell -noprofile -command "try{$t=New-Object System.Net.Sockets.TcpClient;$t.Connect('127.0.0.1',1521);$t.Close();exit 0}catch{exit 1}" >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo.
|
||||
echo ============================================================
|
||||
echo EROARE: Nu ma pot conecta la baza de date Oracle!
|
||||
echo.
|
||||
echo Cauze posibile si solutii:
|
||||
echo.
|
||||
echo 1. Tunelul SSH nu este activ
|
||||
echo -^> Porniti conexiunea SSH/PuTTY catre serverul ROMFAST
|
||||
echo.
|
||||
echo 2. Configurare tnsnames.ora lipsa sau incorecta
|
||||
echo -^> Verificati ca exista intrarea ROA_ROMFAST in:
|
||||
echo %%ORACLE_HOME%%\network\admin\tnsnames.ora
|
||||
echo sau in directorul Oracle Instant Client
|
||||
echo.
|
||||
echo 3. sqlplus nu este instalat sau nu este in PATH
|
||||
echo -^> Verificati ca Oracle Instant Client este instalat
|
||||
echo si calea catre sqlplus este in variabila PATH
|
||||
echo.
|
||||
echo 4. User/parola incorect
|
||||
echo -^> Contactati ROMFAST pentru resetare parola
|
||||
echo ============================================================
|
||||
echo.
|
||||
if "%~1"=="" pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
set "TMP_SQL=%TEMP%\vadeco_test_%RANDOM%.sql"
|
||||
set "TMP_LOG=%TEMP%\vadeco_test_%RANDOM%.log"
|
||||
|
||||
echo WHENEVER SQLERROR EXIT 1 > "%TMP_SQL%"
|
||||
echo SET FEEDBACK OFF >> "%TMP_SQL%"
|
||||
echo SET HEADING OFF >> "%TMP_SQL%"
|
||||
echo SET PAGESIZE 0 >> "%TMP_SQL%"
|
||||
echo SELECT 1 FROM DUAL; >> "%TMP_SQL%"
|
||||
echo EXIT; >> "%TMP_SQL%"
|
||||
|
||||
sqlplus -s %DB_USER%/%DB_PASS%@%DB_SERVICE% @"%TMP_SQL%" > "%TMP_LOG%" 2>&1
|
||||
set CONN_ERR=%errorlevel%
|
||||
del "%TMP_SQL%" "%TMP_LOG%" 2>nul
|
||||
|
||||
if %CONN_ERR% neq 0 (
|
||||
echo.
|
||||
echo EROARE: Autentificare Oracle esuata ^(user/parola incorecte^).
|
||||
echo Contactati ROMFAST pentru resetare parola.
|
||||
echo.
|
||||
if "%~1"=="" pause
|
||||
exit /b 1
|
||||
)
|
||||
echo Conexiune Oracle: OK
|
||||
echo.
|
||||
|
||||
REM ------------------------------------------------------------
|
||||
REM Pas 5: Verificare calendar (rulat si in dry run)
|
||||
REM ------------------------------------------------------------
|
||||
echo Se verifica calendarul pentru luna %v_luna%/%v_an%...
|
||||
|
||||
set "TMP_SQL=%TEMP%\vadeco_cal_%RANDOM%.sql"
|
||||
set "TMP_LOG=%TEMP%\vadeco_cal_%RANDOM%.log"
|
||||
|
||||
echo WHENEVER SQLERROR EXIT 1 > "%TMP_SQL%"
|
||||
echo SET FEEDBACK OFF >> "%TMP_SQL%"
|
||||
echo SET HEADING OFF >> "%TMP_SQL%"
|
||||
echo SET PAGESIZE 0 >> "%TMP_SQL%"
|
||||
echo SELECT COUNT^(*^) FROM CALENDAR WHERE AN = %v_an% AND LUNA = %v_luna%; >> "%TMP_SQL%"
|
||||
echo EXIT; >> "%TMP_SQL%"
|
||||
|
||||
sqlplus -s %DB_USER%/%DB_PASS%@%DB_SERVICE% @"%TMP_SQL%" > "%TMP_LOG%" 2>&1
|
||||
set SQL_ERR=%errorlevel%
|
||||
|
||||
if %SQL_ERR% neq 0 (
|
||||
echo.
|
||||
echo EROARE la verificarea calendarului:
|
||||
type "%TMP_LOG%"
|
||||
del "%TMP_SQL%" "%TMP_LOG%" 2>nul
|
||||
echo.
|
||||
if "%~1"=="" pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
set /p CAL_COUNT= < "%TMP_LOG%"
|
||||
del "%TMP_SQL%" "%TMP_LOG%" 2>nul
|
||||
set "CAL_COUNT=%CAL_COUNT: =%"
|
||||
|
||||
if "%CAL_COUNT%"=="0" (
|
||||
set TN_DESCHIDERE=1
|
||||
echo Luna %v_luna%/%v_an% nu exista in calendar.
|
||||
echo Operatie: DESCHIDERE DE LUNA NOUA ^(tnDeschidere=1^)
|
||||
echo.
|
||||
) else (
|
||||
set TN_DESCHIDERE=0
|
||||
echo Luna %v_luna%/%v_an% este deja deschisa in calendar.
|
||||
echo Operatie: REDESCHIDERE DE LUNA ^(tnDeschidere=0^)
|
||||
echo.
|
||||
echo ============================================================
|
||||
echo ATENTIE: Daca continuati:
|
||||
echo - datele existente pentru luna %v_luna%/%v_an% vor fi STERSE
|
||||
echo - datele vor fi reimportate din sursa VADECO
|
||||
echo - aceasta operatie NU poate fi anulata
|
||||
echo ============================================================
|
||||
echo.
|
||||
)
|
||||
|
||||
if not "%~1"=="" goto :skip_confirm
|
||||
if "!TN_DESCHIDERE!"=="0" (
|
||||
set /p "CONFIRM=Doriti sa reimportati luna %v_luna%/%v_an%? (D/N): "
|
||||
) else (
|
||||
set /p "CONFIRM=Continuati? (D/N): "
|
||||
)
|
||||
if /i not "!CONFIRM!"=="D" (
|
||||
echo.
|
||||
echo Operatie anulata.
|
||||
echo.
|
||||
pause
|
||||
exit /b 0
|
||||
)
|
||||
goto :proceed
|
||||
|
||||
:skip_confirm
|
||||
set "CONFIRM=%~4"
|
||||
if /i not "%CONFIRM%"=="D" (
|
||||
echo Operatie anulata ^(confirmare CLI: %CONFIRM%^).
|
||||
exit /b 0
|
||||
)
|
||||
|
||||
:proceed
|
||||
echo.
|
||||
if "%DRY_RUN%"=="1" (
|
||||
echo ============================================================
|
||||
echo DRY RUN - SQL care ar fi executat:
|
||||
echo ============================================================
|
||||
) else (
|
||||
echo ============================================================
|
||||
echo Se proceseaza luna %v_luna%/%v_an%...
|
||||
echo ============================================================
|
||||
)
|
||||
echo.
|
||||
|
||||
REM ------------------------------------------------------------
|
||||
REM Pas 6: ACOPIE_BAZA_DATE
|
||||
REM ------------------------------------------------------------
|
||||
echo [1/2] ACOPIE_BAZA_DATE ^(copiere date contabilitate din sursa VADECO^)
|
||||
|
||||
set "TMP_SQL=%TEMP%\vadeco_copiere_%RANDOM%.sql"
|
||||
set "TMP_LOG=%TEMP%\vadeco_copiere_%RANDOM%.log"
|
||||
|
||||
echo WHENEVER SQLERROR EXIT 1 > "%TMP_SQL%"
|
||||
echo SET SERVEROUTPUT ON SIZE UNLIMITED >> "%TMP_SQL%"
|
||||
echo SET FEEDBACK OFF >> "%TMP_SQL%"
|
||||
echo BEGIN >> "%TMP_SQL%"
|
||||
echo ACOPIE_BAZA_DATE^(v_an =^> %v_an%, v_luna =^> %v_luna%^); >> "%TMP_SQL%"
|
||||
echo END; >> "%TMP_SQL%"
|
||||
echo / >> "%TMP_SQL%"
|
||||
echo EXIT; >> "%TMP_SQL%"
|
||||
|
||||
if "%DRY_RUN%"=="1" (
|
||||
echo --- SQL ^(simulare, nu se executa^) ---
|
||||
type "%TMP_SQL%"
|
||||
echo --- sfarsit SQL ---
|
||||
del "%TMP_SQL%" 2>nul
|
||||
echo.
|
||||
) else (
|
||||
sqlplus -s %DB_USER%/%DB_PASS%@%DB_SERVICE% @"%TMP_SQL%" > "%TMP_LOG%" 2>&1
|
||||
set SQL_ERR=!errorlevel!
|
||||
if exist "%TMP_LOG%" (
|
||||
for %%A in ("%TMP_LOG%") do if %%~zA gtr 0 type "%TMP_LOG%"
|
||||
)
|
||||
del "%TMP_SQL%" "%TMP_LOG%" 2>nul
|
||||
if !SQL_ERR! neq 0 (
|
||||
echo.
|
||||
echo EROARE la copierea datelor! Contactati ROMFAST pentru asistenta.
|
||||
echo.
|
||||
if "%~1"=="" pause
|
||||
exit /b 1
|
||||
)
|
||||
echo Copiere date: OK
|
||||
)
|
||||
echo.
|
||||
|
||||
REM ------------------------------------------------------------
|
||||
REM Pas 7: pack_deschidere_luna.deschidere_luna
|
||||
REM ------------------------------------------------------------
|
||||
if %TN_DESCHIDERE%==1 (
|
||||
echo [2/2] pack_deschidere_luna.deschidere_luna ^(deschidere luna noua^)
|
||||
) else (
|
||||
echo [2/2] pack_deschidere_luna.deschidere_luna ^(redeschidere luna^)
|
||||
)
|
||||
|
||||
set "TMP_SQL=%TEMP%\vadeco_deschidere_%RANDOM%.sql"
|
||||
set "TMP_LOG=%TEMP%\vadeco_deschidere_%RANDOM%.log"
|
||||
|
||||
echo WHENEVER SQLERROR EXIT 1 > "%TMP_SQL%"
|
||||
echo SET SERVEROUTPUT ON SIZE UNLIMITED >> "%TMP_SQL%"
|
||||
echo SET FEEDBACK OFF >> "%TMP_SQL%"
|
||||
echo BEGIN >> "%TMP_SQL%"
|
||||
echo pack_deschidere_luna.deschidere_luna^( >> "%TMP_SQL%"
|
||||
echo tnAn =^> %v_an%, >> "%TMP_SQL%"
|
||||
echo tnLuna =^> %v_luna%, >> "%TMP_SQL%"
|
||||
echo tnDeschidere =^> %TN_DESCHIDERE%, >> "%TMP_SQL%"
|
||||
echo tnTipRefacere =^> 3, >> "%TMP_SQL%"
|
||||
echo tnTvaIncasare =^> 0, >> "%TMP_SQL%"
|
||||
echo tnIdUtil =^> -3, >> "%TMP_SQL%"
|
||||
echo tcSchema =^> 'VADECO_20240227', >> "%TMP_SQL%"
|
||||
echo tnIdProgramareDeschidere =^> NULL >> "%TMP_SQL%"
|
||||
echo ^); >> "%TMP_SQL%"
|
||||
echo END; >> "%TMP_SQL%"
|
||||
echo / >> "%TMP_SQL%"
|
||||
echo EXIT; >> "%TMP_SQL%"
|
||||
|
||||
if "%DRY_RUN%"=="1" (
|
||||
echo --- SQL ^(simulare, nu se executa^) ---
|
||||
type "%TMP_SQL%"
|
||||
echo --- sfarsit SQL ---
|
||||
del "%TMP_SQL%" 2>nul
|
||||
echo.
|
||||
) else (
|
||||
sqlplus -s %DB_USER%/%DB_PASS%@%DB_SERVICE% @"%TMP_SQL%" > "%TMP_LOG%" 2>&1
|
||||
set SQL_ERR=!errorlevel!
|
||||
if exist "%TMP_LOG%" (
|
||||
for %%A in ("%TMP_LOG%") do if %%~zA gtr 0 type "%TMP_LOG%"
|
||||
)
|
||||
del "%TMP_SQL%" "%TMP_LOG%" 2>nul
|
||||
if !SQL_ERR! neq 0 (
|
||||
echo.
|
||||
echo EROARE la deschiderea lunii! Contactati ROMFAST pentru asistenta.
|
||||
echo.
|
||||
if "%~1"=="" pause
|
||||
exit /b 1
|
||||
)
|
||||
echo Deschidere luna: OK
|
||||
)
|
||||
|
||||
echo.
|
||||
if "%DRY_RUN%"=="1" (
|
||||
echo ============================================================
|
||||
echo DRY RUN COMPLET. Nu s-au facut modificari in baza de date.
|
||||
echo ============================================================
|
||||
) else (
|
||||
echo ============================================================
|
||||
echo SUCCES! Luna %v_luna%/%v_an% a fost procesata.
|
||||
echo ============================================================
|
||||
)
|
||||
echo.
|
||||
if "%~1"=="" pause
|
||||
exit /b 0
|
||||
Reference in New Issue
Block a user