ROAAUTO 2.5.6: Vizualizare comenzi unificata cu Istoric comenzi (filtre si coloane noi), coloane manopera/materiale si total fara/cu TVA in vizualizare comenzi si facturi; versiune_db 2026_09_23_01. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Cfkx1QfeDv987o8x1rAtrr
63 lines
2.5 KiB
Markdown
63 lines
2.5 KiB
Markdown
# Capcană: view-urile ROA depind de `PACK_SESIUNE` (luna de lucru)
|
||
|
||
**Orice măsurătoare sau verificare făcută din `sqlplus` / DSN fără inițializarea lunii de lucru
|
||
întoarce alte date decât aplicația — fără nicio eroare.**
|
||
|
||
## Ce se întâmplă
|
||
|
||
Mai multe view-uri de bază nu sunt „pure": își calculează coloanele în funcție de starea de
|
||
sesiune ținută în pachetul `PACK_SESIUNE`, pe care aplicația o setează la login
|
||
(`setluna`, `setan`, `setanbal`, `setlunabal`, `set_data_init/final`, `set_id_util`, `setschema`).
|
||
|
||
Exemplu — `AUTO_COMENZI_VALIDATE` (baza lui `AUTO_ISTORIC_COMENZI`):
|
||
|
||
```sql
|
||
(case when extract(month from a.dataoravalid) + extract(year from a.dataoravalid) * 12
|
||
<= pack_sesiune.getluna() + pack_sesiune.getan() * 12
|
||
then 1 else 0 end) as validat
|
||
```
|
||
|
||
Într-o sesiune `sqlplus` proaspătă, `getluna()/getan()` nu sunt setate, comparația e falsă pentru
|
||
toate rândurile, deci **`validat` iese 0 peste tot** — și la fel `dataoravalid`, `util_valid`,
|
||
`dataorainchis`, `util_inchis`. Același tipar în `AUTO_VORDL_FACTURI` (alege coloanele RON vs ROL
|
||
după `getan/getluna` față de `get_anron/get_lunaron`) și în omoloagele `DEVIZE_*`.
|
||
|
||
## Cât de mult minte
|
||
|
||
Măsurat pe producția AUTOMOTIVE, 23.09.2026, ecranul „Vizualizare comenzi", luna 10/2025:
|
||
|
||
| | rânduri întoarse |
|
||
|---|---|
|
||
| `sqlplus` fără `pack_sesiune` inițializat | **32 790** (din 2006 încoace) |
|
||
| cu `setluna(10)/setan(2025)` | **195** (164 cu filtrul implicit „Active") |
|
||
|
||
Diferența e ×168. Motivul: `gcCondLuna` (`Programe/ovariabile_globale.prg:16`) păstrează rândurile
|
||
vechi doar dacă sunt **nevalidate sau nefacturate** — iar fără luna de lucru *totul* pare
|
||
nevalidat. Din cele 33 704 comenzi ale clientului, 32 744 sunt de fapt validate.
|
||
|
||
## Ce se face
|
||
|
||
Prima comandă din orice script de diagnostic pe o schemă ROA, imediat după conectare:
|
||
|
||
```sql
|
||
begin
|
||
<schema>.pack_sesiune.setluna(<luna>);
|
||
<schema>.pack_sesiune.setan(<an>);
|
||
end;
|
||
/
|
||
```
|
||
|
||
(`setluna/setan` sunt setări de sesiune, nu DML — nu încalcă regula „doar SELECT pe producție".)
|
||
|
||
Verificare rapidă că sesiunea e inițializată corect, înainte de a crede orice cifră:
|
||
|
||
```sql
|
||
select nvl(validat,0) validat, count(*) from <schema>.auto_comenzi_validate
|
||
group by nvl(validat,0);
|
||
```
|
||
|
||
Dacă iese **totul pe 0**, sesiunea nu e inițializată — nu interpreta rezultatele.
|
||
|
||
Vezi și: `roa-oracle-production-access` (lanțul tunel/TNS/DSN),
|
||
`COMUN\docs\conexiuni-tunel-ssh-odbc.md`.
|