sync SVN r18031
This commit is contained in:
@@ -16878,13 +16878,17 @@ DEFINE CLASS frm_sincronizare_articole AS frm_termin_renunt OF "_frm_child.vcx"
|
|||||||
|
|
||||||
*<PropValue>
|
*<PropValue>
|
||||||
BorderStyle = 1
|
BorderStyle = 1
|
||||||
cDirectie = "RUL_SURSA"
|
cdirectie = "RUL_SURSA"
|
||||||
DoCreate = .T.
|
DoCreate = .T.
|
||||||
Height = 480
|
Height = 480
|
||||||
Name = "frm_sincronizare_articole"
|
Name = "frm_sincronizare_articole"
|
||||||
oFormArticole = .F.
|
oformarticole = .F.
|
||||||
Width = 700
|
Width = 700
|
||||||
|
_shape1.Height = 29
|
||||||
|
_shape1.Left = 0
|
||||||
_shape1.Name = "_shape1"
|
_shape1.Name = "_shape1"
|
||||||
|
_shape1.Top = 0
|
||||||
|
_shape1.Width = 708
|
||||||
_shape1.ZOrderSet = 1
|
_shape1.ZOrderSet = 1
|
||||||
_shape2.Height = 29
|
_shape2.Height = 29
|
||||||
_shape2.Left = 636
|
_shape2.Left = 636
|
||||||
@@ -16926,13 +16930,17 @@ DEFINE CLASS frm_sincronizare_articole AS frm_termin_renunt OF "_frm_child.vcx"
|
|||||||
Top = 108, ;
|
Top = 108, ;
|
||||||
Width = 668, ;
|
Width = 668, ;
|
||||||
ZOrderSet = 2, ;
|
ZOrderSet = 2, ;
|
||||||
|
Column1.ColumnOrder = 1, ;
|
||||||
Column1.ControlSource = "ALLTRIM(propunere_afisata.denumire) + ' (' + ALLTRIM(propunere_afisata.codmat) + ')'", ;
|
Column1.ControlSource = "ALLTRIM(propunere_afisata.denumire) + ' (' + ALLTRIM(propunere_afisata.codmat) + ')'", ;
|
||||||
Column1.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
Column1.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
||||||
|
Column1.FontSize = 9, ;
|
||||||
Column1.Name = "cArticolProp", ;
|
Column1.Name = "cArticolProp", ;
|
||||||
Column1.ReadOnly = .T., ;
|
Column1.ReadOnly = .T., ;
|
||||||
Column1.Width = 180, ;
|
Column1.Width = 180, ;
|
||||||
|
Column2.ColumnOrder = 2, ;
|
||||||
Column2.ControlSource = "propunere_afisata.cantitate_veche", ;
|
Column2.ControlSource = "propunere_afisata.cantitate_veche", ;
|
||||||
Column2.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
Column2.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
||||||
|
Column2.FontSize = 9, ;
|
||||||
Column2.Format = "R", ;
|
Column2.Format = "R", ;
|
||||||
Column2.InputMask = (get_mask(12,gnPCANT)), ;
|
Column2.InputMask = (get_mask(12,gnPCANT)), ;
|
||||||
Column2.Name = "cCantVecheProp", ;
|
Column2.Name = "cCantVecheProp", ;
|
||||||
@@ -16940,6 +16948,7 @@ DEFINE CLASS frm_sincronizare_articole AS frm_termin_renunt OF "_frm_child.vcx"
|
|||||||
Column2.Width = 100, ;
|
Column2.Width = 100, ;
|
||||||
Column3.ControlSource = "propunere_afisata.cantitate_noua", ;
|
Column3.ControlSource = "propunere_afisata.cantitate_noua", ;
|
||||||
Column3.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
Column3.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
||||||
|
Column3.FontSize = 9, ;
|
||||||
Column3.Format = "R", ;
|
Column3.Format = "R", ;
|
||||||
Column3.InputMask = (get_mask(12,gnPCANT)), ;
|
Column3.InputMask = (get_mask(12,gnPCANT)), ;
|
||||||
Column3.Name = "cCantNouaProp", ;
|
Column3.Name = "cCantNouaProp", ;
|
||||||
@@ -16947,6 +16956,7 @@ DEFINE CLASS frm_sincronizare_articole AS frm_termin_renunt OF "_frm_child.vcx"
|
|||||||
Column3.Width = 100, ;
|
Column3.Width = 100, ;
|
||||||
Column4.ControlSource = "propunere_afisata.pret_vechi", ;
|
Column4.ControlSource = "propunere_afisata.pret_vechi", ;
|
||||||
Column4.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
Column4.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
||||||
|
Column4.FontSize = 9, ;
|
||||||
Column4.Format = "R", ;
|
Column4.Format = "R", ;
|
||||||
Column4.InputMask = (get_mask(12,gnPPRET)), ;
|
Column4.InputMask = (get_mask(12,gnPPRET)), ;
|
||||||
Column4.Name = "cPretVechiProp", ;
|
Column4.Name = "cPretVechiProp", ;
|
||||||
@@ -16954,6 +16964,7 @@ DEFINE CLASS frm_sincronizare_articole AS frm_termin_renunt OF "_frm_child.vcx"
|
|||||||
Column4.Width = 100, ;
|
Column4.Width = 100, ;
|
||||||
Column5.ControlSource = "propunere_afisata.pret_nou", ;
|
Column5.ControlSource = "propunere_afisata.pret_nou", ;
|
||||||
Column5.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
Column5.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
||||||
|
Column5.FontSize = 9, ;
|
||||||
Column5.Format = "R", ;
|
Column5.Format = "R", ;
|
||||||
Column5.InputMask = (get_mask(12,gnPPRET)), ;
|
Column5.InputMask = (get_mask(12,gnPPRET)), ;
|
||||||
Column5.Name = "cPretNouProp", ;
|
Column5.Name = "cPretNouProp", ;
|
||||||
@@ -16961,6 +16972,7 @@ DEFINE CLASS frm_sincronizare_articole AS frm_termin_renunt OF "_frm_child.vcx"
|
|||||||
Column5.Width = 100, ;
|
Column5.Width = 100, ;
|
||||||
Column6.ControlSource = "propunere_afisata.actiune", ;
|
Column6.ControlSource = "propunere_afisata.actiune", ;
|
||||||
Column6.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
Column6.DynamicForeColor = "IIF(ALLTRIM(propunere_afisata.actiune)='N-A',RGB(150,150,150),RGB(0,0,0))", ;
|
||||||
|
Column6.FontSize = 9, ;
|
||||||
Column6.Name = "cActiuneProp", ;
|
Column6.Name = "cActiuneProp", ;
|
||||||
Column6.ReadOnly = .T., ;
|
Column6.ReadOnly = .T., ;
|
||||||
Column6.Width = 88
|
Column6.Width = 88
|
||||||
@@ -16975,6 +16987,7 @@ DEFINE CLASS frm_sincronizare_articole AS frm_termin_renunt OF "_frm_child.vcx"
|
|||||||
*< END OBJECT: BaseClass="header" />
|
*< END OBJECT: BaseClass="header" />
|
||||||
|
|
||||||
ADD OBJECT 'grdPropunere.cArticolProp.Header1' AS header WITH ;
|
ADD OBJECT 'grdPropunere.cArticolProp.Header1' AS header WITH ;
|
||||||
|
Alignment = 2, ;
|
||||||
Caption = "Articol", ;
|
Caption = "Articol", ;
|
||||||
FontName = "Arial", ;
|
FontName = "Arial", ;
|
||||||
FontSize = 9, ;
|
FontSize = 9, ;
|
||||||
@@ -17052,7 +17065,7 @@ DEFINE CLASS frm_sincronizare_articole AS frm_termin_renunt OF "_frm_child.vcx"
|
|||||||
OPTION2.Top = 24
|
OPTION2.Top = 24
|
||||||
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="optiongroup" />
|
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="optiongroup" />
|
||||||
|
|
||||||
PROCEDURE ActualizeazaCapeteColoane
|
PROCEDURE actualizeazacapetecoloane
|
||||||
*!* capetele coloanelor spun singure ce e sursa si ce se suprascrie, in loc de "vechi/nou" plus o
|
*!* capetele coloanelor spun singure ce e sursa si ce se suprascrie, in loc de "vechi/nou" plus o
|
||||||
*!* legenda separata - se refac la fiecare schimbare de directie
|
*!* legenda separata - se refac la fiecare schimbare de directie
|
||||||
LOCAL lcTinta, lcSursa
|
LOCAL lcTinta, lcSursa
|
||||||
@@ -17066,7 +17079,7 @@ DEFINE CLASS frm_sincronizare_articole AS frm_termin_renunt OF "_frm_child.vcx"
|
|||||||
ENDWITH
|
ENDWITH
|
||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
PROCEDURE ConstruiesteEnumerare
|
PROCEDURE construiesteenumerare
|
||||||
*!* propunere_sincronizare se recreeaza la fiecare apel, deci gridul nu poate sta legat de el;
|
*!* propunere_sincronizare se recreeaza la fiecare apel, deci gridul nu poate sta legat de el;
|
||||||
*!* continutul se copiaza in propunere_afisata, cursorul stabil creat in Load
|
*!* continutul se copiaza in propunere_afisata, cursorul stabil creat in Load
|
||||||
LOCAL lnAreaOrigine, lnAplicabile
|
LOCAL lnAreaOrigine, lnAplicabile
|
||||||
|
|||||||
88
docs/conventie_mediu_oracle.md
Normal file
88
docs/conventie_mediu_oracle.md
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
# Conventii - mediul Oracle de dev/test
|
||||||
|
|
||||||
|
Regula lui Marius, 20.08.2026. Se aplica **de fiecare data**, si sesiunii principale, si
|
||||||
|
subagentilor. Nu e context, e conventie de lucru.
|
||||||
|
|
||||||
|
## 1. Nu se spune "baza"
|
||||||
|
|
||||||
|
Termenul e vag si a produs deja o intrebare care n-ar fi trebuit sa existe: *"ce este baza? care
|
||||||
|
schema?"*. Se scrie intotdeauna **schema + instanta**, explicit:
|
||||||
|
|
||||||
|
> "se ruleaza pe schema `MARIUSM_AUTO` de pe `ROA_CENTRAL`"
|
||||||
|
|
||||||
|
nu "se ruleaza pe baza". Acelasi lucru in rapoarte, in handoff-uri, in propuneri si in mesaje.
|
||||||
|
|
||||||
|
## 2. Pe dev/test se lucreaza NUMAI cu ROA_CENTRAL
|
||||||
|
|
||||||
|
Instanta: **`ROA_CENTRAL`**. Schemele permise, singurele doua:
|
||||||
|
|
||||||
|
| Schema | Ce este |
|
||||||
|
|---|---|
|
||||||
|
| **`MARIUSM_AUTO`** | schema **de firma** - datele si pachetele de business (`VANZARI`, `VANZARI_DETALII`, `JTVA_COLOANE`, `PACK_FACTURARE`...). Aici se lucreaza pe functionalitate. |
|
||||||
|
| **`CONTAFIN_ORACLE`** | schema **comuna tuturor schemelor de firma**: pachete comune, actualizarea bazei de date, utilizatori, drepturi de utilizator, nomenclatorul de firme. Se creeaza **pe fiecare server**. |
|
||||||
|
|
||||||
|
Nimic altceva. Daca o sarcina pare sa ceara altceva, se intreaba intai.
|
||||||
|
|
||||||
|
Modelul de retinut: fiecare firma are schema ei (in dev/test, `MARIUSM_AUTO`), iar
|
||||||
|
`CONTAFIN_ORACLE` sta alaturi, o singura data per server, si deserveste toate schemele de firma.
|
||||||
|
Deci o modificare in `CONTAFIN_ORACLE` e **transversala peste toate firmele de pe acel server** -
|
||||||
|
se trateaza cu grija corespunzatoare, nu ca o schimbare locala.
|
||||||
|
|
||||||
|
## 3. Schema `ACN` nu se foloseste si nu se citeaza
|
||||||
|
|
||||||
|
Nu se interogheaza, nu se ia ca sursa de adevar, nu se pomeneste in rapoarte ca element de
|
||||||
|
comparatie. Daca apare in rezultatul unei interogari pe `ALL_OBJECTS`/`ALL_SOURCE`, se **filtreaza
|
||||||
|
din start**, nu se comenteaza.
|
||||||
|
|
||||||
|
Consecinta practica pentru interogarile de dictionar: se pune **intotdeauna** filtrul de `owner`.
|
||||||
|
Fara el, randurile mai multor scheme se intercaleaza si output-ul devine ilizibil - capcana deja
|
||||||
|
platita o data la citirea unui corp de pachet din `ALL_SOURCE`.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
select text from all_source
|
||||||
|
where owner = 'MARIUSM_AUTO' -- niciodata fara aceasta linie
|
||||||
|
and name = 'PACK_FACTURARE'
|
||||||
|
and type = 'PACKAGE BODY'
|
||||||
|
order by line;
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. Conectare
|
||||||
|
|
||||||
|
```
|
||||||
|
& 'D:\ROA\instantclient_19_18\sqlplus.exe' -L -S 'MARIUSM_AUTO/ROMFASTSOFT@ROA_CENTRAL' '@fisier.sql'
|
||||||
|
```
|
||||||
|
|
||||||
|
Fisierul `.sql` se scrie in **ASCII**. SQL trimis prin pipe din PowerShell e spart de BOM.
|
||||||
|
|
||||||
|
## 5. Ce inseamna "se ruleaza un script de pachet"
|
||||||
|
|
||||||
|
Scripturile din `D:\ROA\DATABASE\SCRIPTURI_CLAR\` **nu modifica date** - inlocuiesc **cod stocat in
|
||||||
|
Oracle** (`CREATE OR REPLACE PACKAGE` + `PACKAGE BODY`). De retinut:
|
||||||
|
|
||||||
|
- Efectul e **imediat si pentru toti cei conectati**. Nu seamana cu VFP, unde fiecare statie ruleaza
|
||||||
|
propriul `.exe`.
|
||||||
|
- Se recreeaza si **specificatia**, nu doar corpul - asta invalideaza obiectele dependente, care se
|
||||||
|
recompileaza la prima folosire.
|
||||||
|
- **Nu exista "undo".** Revenirea inseamna rularea unei versiuni anterioare a pachetului.
|
||||||
|
- Scripturile sunt scrise **necalificat** (`CREATE OR REPLACE PACKAGE "PACK_FACTURARE"`, fara
|
||||||
|
`CONNECT`, fara prefix de schema). Deci **se aplica schemei cu care esti conectat**, nu au tinta
|
||||||
|
proprie. Schema tinta o decide exclusiv sirul de conectare.
|
||||||
|
- Rularea unui script pe orice schema **se face doar la cererea explicita a lui Marius**. Un agent
|
||||||
|
scrie scriptul; nu il aplica.
|
||||||
|
|
||||||
|
## 6. Stare constatata pe `ROA_CENTRAL`, 20.08.2026
|
||||||
|
|
||||||
|
Reper istoric, constatat din ROAFACTURARE; de reconfirmat daca a trecut timp. Punctele 1-5
|
||||||
|
sunt conventia propriu-zisa si se aplica in toate produsele ROA.
|
||||||
|
|
||||||
|
```
|
||||||
|
DB_NAME: ROA server: 4e73d257c791 alias TNS: ROA_CENTRAL
|
||||||
|
```
|
||||||
|
|
||||||
|
- `MARIUSM_AUTO` isi detine **propriile tabele** (`VANZARI_DETALII`, `JTVA_COLOANE` sunt TABLE in
|
||||||
|
schema, nu sinonime catre alta schema). Deci cifrele obtinute conectat ca `MARIUSM_AUTO` sunt ale
|
||||||
|
datelor din `MARIUSM_AUTO`.
|
||||||
|
- `CONTAFIN_ORACLE` are 393 de obiecte si **nu** detine `VANZARI_DETALII`/`JTVA_COLOANE` - coerent
|
||||||
|
cu rolul ei: infrastructura comuna (utilizatori, drepturi, firme, actualizare), nu date de firma.
|
||||||
|
- `MARIUSM_AUTO.PACK_FACTURARE`: PACKAGE si PACKAGE BODY **VALID**, corpul modificat ultima data
|
||||||
|
**20.08.2026 08:43** (aplicarea scriptului `ff_2026_08_20_01`, garda `FACT-025`).
|
||||||
@@ -107,6 +107,8 @@
|
|||||||
- `GO` pe un `Recno()` capturat/primit ca parametru -> `conventie_go_recno.md`;
|
- `GO` pe un `Recno()` capturat/primit ca parametru -> `conventie_go_recno.md`;
|
||||||
- `ALTER TABLE` pe cursorul intors de `goExecutor.oExecute()` -> `conventie_goexecutor_alter_table.md`;
|
- `ALTER TABLE` pe cursorul intors de `goExecutor.oExecute()` -> `conventie_goexecutor_alter_table.md`;
|
||||||
- testare UI / prin MCP -> `testare-ui-vfp.md`, `testare-vfp-mcp.md`;
|
- testare UI / prin MCP -> `testare-ui-vfp.md`, `testare-vfp-mcp.md`;
|
||||||
|
- te conectezi la Oracle pe dev/test, alegi schema sau rulezi un script de pachet ->
|
||||||
|
`conventie_mediu_oracle.md`;
|
||||||
- garzi pe valori NULL din Oracle -> `conventie_null_vfp.md`;
|
- garzi pe valori NULL din Oracle -> `conventie_null_vfp.md`;
|
||||||
- export date din Oracle -> `oracle_export.md`;
|
- export date din Oracle -> `oracle_export.md`;
|
||||||
- actualizarea ROA nu se finalizeaza (job update, PACK_UPDATE) -> `depanare-pack-update.md`;
|
- actualizarea ROA nu se finalizeaza (job update, PACK_UPDATE) -> `depanare-pack-update.md`;
|
||||||
|
|||||||
Reference in New Issue
Block a user