NNIR editabil in Registrul Jurnal (frm_modific2024) + teste
This commit is contained in:
@@ -6720,6 +6720,8 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
*< OBJECTDATA: ObjPath="Grid1.Column43.Header1" UniqueID="" Timestamp="" />
|
*< OBJECTDATA: ObjPath="Grid1.Column43.Header1" UniqueID="" Timestamp="" />
|
||||||
*< OBJECTDATA: ObjPath="Grid1.Column43.Text1" UniqueID="" Timestamp="" />
|
*< OBJECTDATA: ObjPath="Grid1.Column43.Text1" UniqueID="" Timestamp="" />
|
||||||
*< OBJECTDATA: ObjPath="Grid1.Column43._combobox1" UniqueID="" Timestamp="" />
|
*< OBJECTDATA: ObjPath="Grid1.Column43._combobox1" UniqueID="" Timestamp="" />
|
||||||
|
*< OBJECTDATA: ObjPath="Grid1.Column44.Header1" UniqueID="" Timestamp="" />
|
||||||
|
*< OBJECTDATA: ObjPath="Grid1.Column44.Text1" UniqueID="" Timestamp="" />
|
||||||
*< OBJECTDATA: ObjPath="Command1" UniqueID="" Timestamp="" />
|
*< OBJECTDATA: ObjPath="Command1" UniqueID="" Timestamp="" />
|
||||||
*< OBJECTDATA: ObjPath="Gridextra1" UniqueID="" Timestamp="" />
|
*< OBJECTDATA: ObjPath="Gridextra1" UniqueID="" Timestamp="" />
|
||||||
*< OBJECTDATA: ObjPath="Command2" UniqueID="" Timestamp="" />
|
*< OBJECTDATA: ObjPath="Command2" UniqueID="" Timestamp="" />
|
||||||
@@ -6762,6 +6764,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
*m: grid_focus_prima_coloana
|
*m: grid_focus_prima_coloana
|
||||||
*m: resize_grid1
|
*m: resize_grid1
|
||||||
*m: salveazaxml
|
*m: salveazaxml
|
||||||
|
*m: sincronizeaza_nnir
|
||||||
*m: updateexplicatiesaft
|
*m: updateexplicatiesaft
|
||||||
*m: updateexplicatiesaftrul
|
*m: updateexplicatiesaftrul
|
||||||
*m: valideaza_data
|
*m: valideaza_data
|
||||||
@@ -6778,6 +6781,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
*p: lverificare
|
*p: lverificare
|
||||||
*p: lvizualizare
|
*p: lvizualizare
|
||||||
*p: nid_set
|
*p: nid_set
|
||||||
|
*p: nnnirvechi
|
||||||
*p: noldsuma && Valoarea la intrarea in campul "Suma"
|
*p: noldsuma && Valoarea la intrarea in campul "Suma"
|
||||||
*p: nprimadata
|
*p: nprimadata
|
||||||
*p: nsuma && Total suma inregistrari
|
*p: nsuma && Total suma inregistrari
|
||||||
@@ -6809,6 +6813,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
lvizualizare = .F.
|
lvizualizare = .F.
|
||||||
Name = "frm_modific2024"
|
Name = "frm_modific2024"
|
||||||
nid_set = 0
|
nid_set = 0
|
||||||
|
nnnirvechi = 0
|
||||||
noldsuma = 0
|
noldsuma = 0
|
||||||
nprimadata = 0
|
nprimadata = 0
|
||||||
nsuma = 0
|
nsuma = 0
|
||||||
@@ -7143,7 +7148,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
ADD OBJECT 'Grid1' AS grid WITH ;
|
ADD OBJECT 'Grid1' AS grid WITH ;
|
||||||
Anchor = 10, ;
|
Anchor = 10, ;
|
||||||
BackColor = 244,250,255, ;
|
BackColor = 244,250,255, ;
|
||||||
ColumnCount = 43, ;
|
ColumnCount = 44, ;
|
||||||
DeleteMark = .F., ;
|
DeleteMark = .F., ;
|
||||||
FontCharSet = 238, ;
|
FontCharSet = 238, ;
|
||||||
FontSize = 10, ;
|
FontSize = 10, ;
|
||||||
@@ -7185,7 +7190,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column2.Width = 71, ;
|
Column2.Width = 71, ;
|
||||||
Column3.Alignment = 0, ;
|
Column3.Alignment = 0, ;
|
||||||
Column3.BackColor = 244,250,255, ;
|
Column3.BackColor = 244,250,255, ;
|
||||||
Column3.ColumnOrder = 15, ;
|
Column3.ColumnOrder = 16, ;
|
||||||
Column3.ControlSource = "fdoc", ;
|
Column3.ControlSource = "fdoc", ;
|
||||||
Column3.FontCharSet = 238, ;
|
Column3.FontCharSet = 238, ;
|
||||||
Column3.FontName = "Arial", ;
|
Column3.FontName = "Arial", ;
|
||||||
@@ -7215,7 +7220,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column5.Width = 53, ;
|
Column5.Width = 53, ;
|
||||||
Column6.Alignment = 0, ;
|
Column6.Alignment = 0, ;
|
||||||
Column6.BackColor = 244,250,255, ;
|
Column6.BackColor = 244,250,255, ;
|
||||||
Column6.ColumnOrder = 7, ;
|
Column6.ColumnOrder = 8, ;
|
||||||
Column6.ControlSource = "partd", ;
|
Column6.ControlSource = "partd", ;
|
||||||
Column6.FontCharSet = 238, ;
|
Column6.FontCharSet = 238, ;
|
||||||
Column6.FontName = "Arial", ;
|
Column6.FontName = "Arial", ;
|
||||||
@@ -7225,7 +7230,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column6.Width = 114, ;
|
Column6.Width = 114, ;
|
||||||
Column7.Alignment = 1, ;
|
Column7.Alignment = 1, ;
|
||||||
Column7.BackColor = 244,250,255, ;
|
Column7.BackColor = 244,250,255, ;
|
||||||
Column7.ColumnOrder = 10, ;
|
Column7.ColumnOrder = 11, ;
|
||||||
Column7.ControlSource = "scd", ;
|
Column7.ControlSource = "scd", ;
|
||||||
Column7.FontCharSet = 238, ;
|
Column7.FontCharSet = 238, ;
|
||||||
Column7.FontName = "Arial", ;
|
Column7.FontName = "Arial", ;
|
||||||
@@ -7235,7 +7240,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column7.Width = 57, ;
|
Column7.Width = 57, ;
|
||||||
Column8.Alignment = 1, ;
|
Column8.Alignment = 1, ;
|
||||||
Column8.BackColor = 244,250,255, ;
|
Column8.BackColor = 244,250,255, ;
|
||||||
Column8.ColumnOrder = 12, ;
|
Column8.ColumnOrder = 13, ;
|
||||||
Column8.ControlSource = "scc", ;
|
Column8.ControlSource = "scc", ;
|
||||||
Column8.FontCharSet = 238, ;
|
Column8.FontCharSet = 238, ;
|
||||||
Column8.FontName = "Arial", ;
|
Column8.FontName = "Arial", ;
|
||||||
@@ -7245,7 +7250,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column8.Width = 62, ;
|
Column8.Width = 62, ;
|
||||||
Column9.Alignment = 1, ;
|
Column9.Alignment = 1, ;
|
||||||
Column9.BackColor = 244,250,255, ;
|
Column9.BackColor = 244,250,255, ;
|
||||||
Column9.ColumnOrder = 14, ;
|
Column9.ColumnOrder = 15, ;
|
||||||
Column9.ControlSource = "suma", ;
|
Column9.ControlSource = "suma", ;
|
||||||
Column9.DynamicForeColor = "IIF(SUMA>=0, RGB(0,0,0), RGB(255,0,0))", ;
|
Column9.DynamicForeColor = "IIF(SUMA>=0, RGB(0,0,0), RGB(255,0,0))", ;
|
||||||
Column9.FontCharSet = 238, ;
|
Column9.FontCharSet = 238, ;
|
||||||
@@ -7258,7 +7263,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column9.Width = 93, ;
|
Column9.Width = 93, ;
|
||||||
Column10.Alignment = 0, ;
|
Column10.Alignment = 0, ;
|
||||||
Column10.BackColor = 244,250,255, ;
|
Column10.BackColor = 244,250,255, ;
|
||||||
Column10.ColumnOrder = 8, ;
|
Column10.ColumnOrder = 9, ;
|
||||||
Column10.ControlSource = "partc", ;
|
Column10.ControlSource = "partc", ;
|
||||||
Column10.FontCharSet = 238, ;
|
Column10.FontCharSet = 238, ;
|
||||||
Column10.FontName = "Arial", ;
|
Column10.FontName = "Arial", ;
|
||||||
@@ -7268,7 +7273,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column10.Width = 100, ;
|
Column10.Width = 100, ;
|
||||||
Column11.Alignment = 0, ;
|
Column11.Alignment = 0, ;
|
||||||
Column11.BackColor = 244,250,255, ;
|
Column11.BackColor = 244,250,255, ;
|
||||||
Column11.ColumnOrder = 9, ;
|
Column11.ColumnOrder = 10, ;
|
||||||
Column11.ControlSource = "explicatia", ;
|
Column11.ControlSource = "explicatia", ;
|
||||||
Column11.FontCharSet = 238, ;
|
Column11.FontCharSet = 238, ;
|
||||||
Column11.FontName = "Arial", ;
|
Column11.FontName = "Arial", ;
|
||||||
@@ -7277,7 +7282,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column11.ReadOnly = .F., ;
|
Column11.ReadOnly = .F., ;
|
||||||
Column11.Width = 77, ;
|
Column11.Width = 77, ;
|
||||||
Column12.BackColor = 244,250,255, ;
|
Column12.BackColor = 244,250,255, ;
|
||||||
Column12.ColumnOrder = 37, ;
|
Column12.ColumnOrder = 38, ;
|
||||||
Column12.ControlSource = "cod", ;
|
Column12.ControlSource = "cod", ;
|
||||||
Column12.FontCharSet = 238, ;
|
Column12.FontCharSet = 238, ;
|
||||||
Column12.FontName = "Arial", ;
|
Column12.FontName = "Arial", ;
|
||||||
@@ -7286,7 +7291,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column12.ReadOnly = .T., ;
|
Column12.ReadOnly = .T., ;
|
||||||
Column12.Width = 52, ;
|
Column12.Width = 52, ;
|
||||||
Column13.BackColor = 244,250,255, ;
|
Column13.BackColor = 244,250,255, ;
|
||||||
Column13.ColumnOrder = 16, ;
|
Column13.ColumnOrder = 17, ;
|
||||||
Column13.ControlSource = "pereched", ;
|
Column13.ControlSource = "pereched", ;
|
||||||
Column13.FontCharSet = 238, ;
|
Column13.FontCharSet = 238, ;
|
||||||
Column13.FontName = "Arial", ;
|
Column13.FontName = "Arial", ;
|
||||||
@@ -7295,7 +7300,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column13.ReadOnly = .F., ;
|
Column13.ReadOnly = .F., ;
|
||||||
Column13.Width = 106, ;
|
Column13.Width = 106, ;
|
||||||
Column14.BackColor = 244,250,255, ;
|
Column14.BackColor = 244,250,255, ;
|
||||||
Column14.ColumnOrder = 31, ;
|
Column14.ColumnOrder = 32, ;
|
||||||
Column14.ControlSource = "explicatia4", ;
|
Column14.ControlSource = "explicatia4", ;
|
||||||
Column14.FontCharSet = 238, ;
|
Column14.FontCharSet = 238, ;
|
||||||
Column14.FontName = "Arial", ;
|
Column14.FontName = "Arial", ;
|
||||||
@@ -7304,7 +7309,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column14.ReadOnly = .F., ;
|
Column14.ReadOnly = .F., ;
|
||||||
Column14.Width = 120, ;
|
Column14.Width = 120, ;
|
||||||
Column15.BackColor = 244,250,255, ;
|
Column15.BackColor = 244,250,255, ;
|
||||||
Column15.ColumnOrder = 24, ;
|
Column15.ColumnOrder = 25, ;
|
||||||
Column15.ControlSource = "nrord", ;
|
Column15.ControlSource = "nrord", ;
|
||||||
Column15.FontCharSet = 238, ;
|
Column15.FontCharSet = 238, ;
|
||||||
Column15.FontName = "Arial", ;
|
Column15.FontName = "Arial", ;
|
||||||
@@ -7312,7 +7317,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column15.Name = "Column15", ;
|
Column15.Name = "Column15", ;
|
||||||
Column15.ReadOnly = .F., ;
|
Column15.ReadOnly = .F., ;
|
||||||
Column16.BackColor = 244,250,255, ;
|
Column16.BackColor = 244,250,255, ;
|
||||||
Column16.ColumnOrder = 26, ;
|
Column16.ColumnOrder = 27, ;
|
||||||
Column16.ControlSource = "nresp", ;
|
Column16.ControlSource = "nresp", ;
|
||||||
Column16.FontCharSet = 238, ;
|
Column16.FontCharSet = 238, ;
|
||||||
Column16.FontName = "Arial", ;
|
Column16.FontName = "Arial", ;
|
||||||
@@ -7322,7 +7327,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column16.Name = "Column16", ;
|
Column16.Name = "Column16", ;
|
||||||
Column16.ReadOnly = .F., ;
|
Column16.ReadOnly = .F., ;
|
||||||
Column17.BackColor = 244,250,255, ;
|
Column17.BackColor = 244,250,255, ;
|
||||||
Column17.ColumnOrder = 27, ;
|
Column17.ColumnOrder = 28, ;
|
||||||
Column17.ControlSource = "dst_chlt", ;
|
Column17.ControlSource = "dst_chlt", ;
|
||||||
Column17.FontCharSet = 238, ;
|
Column17.FontCharSet = 238, ;
|
||||||
Column17.FontName = "Arial", ;
|
Column17.FontName = "Arial", ;
|
||||||
@@ -7332,7 +7337,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column17.Name = "Column17", ;
|
Column17.Name = "Column17", ;
|
||||||
Column17.ReadOnly = .F., ;
|
Column17.ReadOnly = .F., ;
|
||||||
Column18.BackColor = 244,250,255, ;
|
Column18.BackColor = 244,250,255, ;
|
||||||
Column18.ColumnOrder = 32, ;
|
Column18.ColumnOrder = 33, ;
|
||||||
Column18.ControlSource = "explicatia5", ;
|
Column18.ControlSource = "explicatia5", ;
|
||||||
Column18.FontCharSet = 238, ;
|
Column18.FontCharSet = 238, ;
|
||||||
Column18.FontName = "Arial", ;
|
Column18.FontName = "Arial", ;
|
||||||
@@ -7341,7 +7346,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column18.ReadOnly = .F., ;
|
Column18.ReadOnly = .F., ;
|
||||||
Column18.Width = 119, ;
|
Column18.Width = 119, ;
|
||||||
Column19.BackColor = 244,250,255, ;
|
Column19.BackColor = 244,250,255, ;
|
||||||
Column19.ColumnOrder = 23, ;
|
Column19.ColumnOrder = 24, ;
|
||||||
Column19.ControlSource = "datascad", ;
|
Column19.ControlSource = "datascad", ;
|
||||||
Column19.FontCharSet = 238, ;
|
Column19.FontCharSet = 238, ;
|
||||||
Column19.FontName = "Arial", ;
|
Column19.FontName = "Arial", ;
|
||||||
@@ -7351,7 +7356,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column19.Visible = .T., ;
|
Column19.Visible = .T., ;
|
||||||
Column19.Width = 87, ;
|
Column19.Width = 87, ;
|
||||||
Column20.BackColor = 244,250,255, ;
|
Column20.BackColor = 244,250,255, ;
|
||||||
Column20.ColumnOrder = 28, ;
|
Column20.ColumnOrder = 29, ;
|
||||||
Column20.ControlSource = "suma_val", ;
|
Column20.ControlSource = "suma_val", ;
|
||||||
Column20.FontCharSet = 238, ;
|
Column20.FontCharSet = 238, ;
|
||||||
Column20.FontName = "Arial", ;
|
Column20.FontName = "Arial", ;
|
||||||
@@ -7361,7 +7366,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column20.ReadOnly = .F., ;
|
Column20.ReadOnly = .F., ;
|
||||||
Column20.Width = 89, ;
|
Column20.Width = 89, ;
|
||||||
Column21.BackColor = 244,250,255, ;
|
Column21.BackColor = 244,250,255, ;
|
||||||
Column21.ColumnOrder = 30, ;
|
Column21.ColumnOrder = 31, ;
|
||||||
Column21.ControlSource = "curs", ;
|
Column21.ControlSource = "curs", ;
|
||||||
Column21.FontCharSet = 238, ;
|
Column21.FontCharSet = 238, ;
|
||||||
Column21.FontName = "Arial", ;
|
Column21.FontName = "Arial", ;
|
||||||
@@ -7371,7 +7376,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column21.ReadOnly = .F., ;
|
Column21.ReadOnly = .F., ;
|
||||||
Column21.Width = 72, ;
|
Column21.Width = 72, ;
|
||||||
Column22.BackColor = 244,250,255, ;
|
Column22.BackColor = 244,250,255, ;
|
||||||
Column22.ColumnOrder = 33, ;
|
Column22.ColumnOrder = 34, ;
|
||||||
Column22.ControlSource = "gestin", ;
|
Column22.ControlSource = "gestin", ;
|
||||||
Column22.FontCharSet = 238, ;
|
Column22.FontCharSet = 238, ;
|
||||||
Column22.FontName = "Arial", ;
|
Column22.FontName = "Arial", ;
|
||||||
@@ -7380,7 +7385,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column22.ReadOnly = .F., ;
|
Column22.ReadOnly = .F., ;
|
||||||
Column22.Width = 116, ;
|
Column22.Width = 116, ;
|
||||||
Column23.BackColor = 244,250,255, ;
|
Column23.BackColor = 244,250,255, ;
|
||||||
Column23.ColumnOrder = 11, ;
|
Column23.ColumnOrder = 12, ;
|
||||||
Column23.ControlSource = "ascd", ;
|
Column23.ControlSource = "ascd", ;
|
||||||
Column23.FontCharSet = 238, ;
|
Column23.FontCharSet = 238, ;
|
||||||
Column23.FontName = "Arial", ;
|
Column23.FontName = "Arial", ;
|
||||||
@@ -7389,7 +7394,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column23.ReadOnly = .F., ;
|
Column23.ReadOnly = .F., ;
|
||||||
Column23.Width = 46, ;
|
Column23.Width = 46, ;
|
||||||
Column24.BackColor = 244,250,255, ;
|
Column24.BackColor = 244,250,255, ;
|
||||||
Column24.ColumnOrder = 13, ;
|
Column24.ColumnOrder = 14, ;
|
||||||
Column24.ControlSource = "ascc", ;
|
Column24.ControlSource = "ascc", ;
|
||||||
Column24.FontCharSet = 238, ;
|
Column24.FontCharSet = 238, ;
|
||||||
Column24.FontName = "Arial", ;
|
Column24.FontName = "Arial", ;
|
||||||
@@ -7398,7 +7403,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column24.ReadOnly = .F., ;
|
Column24.ReadOnly = .F., ;
|
||||||
Column24.Width = 48, ;
|
Column24.Width = 48, ;
|
||||||
Column25.BackColor = 244,250,255, ;
|
Column25.BackColor = 244,250,255, ;
|
||||||
Column25.ColumnOrder = 38, ;
|
Column25.ColumnOrder = 39, ;
|
||||||
Column25.ControlSource = "id_set", ;
|
Column25.ControlSource = "id_set", ;
|
||||||
Column25.FontCharSet = 238, ;
|
Column25.FontCharSet = 238, ;
|
||||||
Column25.FontName = "Arial", ;
|
Column25.FontName = "Arial", ;
|
||||||
@@ -7407,7 +7412,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column25.ReadOnly = .T., ;
|
Column25.ReadOnly = .T., ;
|
||||||
Column25.Width = 71, ;
|
Column25.Width = 71, ;
|
||||||
Column26.BackColor = 244,250,255, ;
|
Column26.BackColor = 244,250,255, ;
|
||||||
Column26.ColumnOrder = 19, ;
|
Column26.ColumnOrder = 20, ;
|
||||||
Column26.ControlSource = "proc_tva", ;
|
Column26.ControlSource = "proc_tva", ;
|
||||||
Column26.FontCharSet = 238, ;
|
Column26.FontCharSet = 238, ;
|
||||||
Column26.FontName = "Arial", ;
|
Column26.FontName = "Arial", ;
|
||||||
@@ -7416,7 +7421,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column26.ReadOnly = .T., ;
|
Column26.ReadOnly = .T., ;
|
||||||
Column26.Width = 54, ;
|
Column26.Width = 54, ;
|
||||||
Column27.BackColor = 244,250,255, ;
|
Column27.BackColor = 244,250,255, ;
|
||||||
Column27.ColumnOrder = 17, ;
|
Column27.ColumnOrder = 18, ;
|
||||||
Column27.ControlSource = "perechec", ;
|
Column27.ControlSource = "perechec", ;
|
||||||
Column27.FontCharSet = 238, ;
|
Column27.FontCharSet = 238, ;
|
||||||
Column27.FontName = "Arial", ;
|
Column27.FontName = "Arial", ;
|
||||||
@@ -7425,7 +7430,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column27.ReadOnly = .F., ;
|
Column27.ReadOnly = .F., ;
|
||||||
Column27.Width = 104, ;
|
Column27.Width = 104, ;
|
||||||
Column28.BackColor = 244,250,255, ;
|
Column28.BackColor = 244,250,255, ;
|
||||||
Column28.ColumnOrder = 35, ;
|
Column28.ColumnOrder = 36, ;
|
||||||
Column28.ControlSource = "sectie", ;
|
Column28.ControlSource = "sectie", ;
|
||||||
Column28.FontCharSet = 238, ;
|
Column28.FontCharSet = 238, ;
|
||||||
Column28.FontName = "Arial", ;
|
Column28.FontName = "Arial", ;
|
||||||
@@ -7434,7 +7439,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column28.ReadOnly = .F., ;
|
Column28.ReadOnly = .F., ;
|
||||||
Column28.Width = 88, ;
|
Column28.Width = 88, ;
|
||||||
Column29.BackColor = 244,250,255, ;
|
Column29.BackColor = 244,250,255, ;
|
||||||
Column29.ColumnOrder = 29, ;
|
Column29.ColumnOrder = 30, ;
|
||||||
Column29.ControlSource = "nume_val", ;
|
Column29.ControlSource = "nume_val", ;
|
||||||
Column29.FontCharSet = 238, ;
|
Column29.FontCharSet = 238, ;
|
||||||
Column29.FontName = "Arial", ;
|
Column29.FontName = "Arial", ;
|
||||||
@@ -7443,7 +7448,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column29.ReadOnly = .F., ;
|
Column29.ReadOnly = .F., ;
|
||||||
Column29.Width = 79, ;
|
Column29.Width = 79, ;
|
||||||
Column30.BackColor = 244,250,255, ;
|
Column30.BackColor = 244,250,255, ;
|
||||||
Column30.ColumnOrder = 39, ;
|
Column30.ColumnOrder = 40, ;
|
||||||
Column30.ControlSource = "id_partd", ;
|
Column30.ControlSource = "id_partd", ;
|
||||||
Column30.FontCharSet = 238, ;
|
Column30.FontCharSet = 238, ;
|
||||||
Column30.FontName = "Arial", ;
|
Column30.FontName = "Arial", ;
|
||||||
@@ -7452,7 +7457,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column30.ReadOnly = .T., ;
|
Column30.ReadOnly = .T., ;
|
||||||
Column30.Width = 55, ;
|
Column30.Width = 55, ;
|
||||||
Column31.BackColor = 244,250,255, ;
|
Column31.BackColor = 244,250,255, ;
|
||||||
Column31.ColumnOrder = 40, ;
|
Column31.ColumnOrder = 41, ;
|
||||||
Column31.ControlSource = "id_partc", ;
|
Column31.ControlSource = "id_partc", ;
|
||||||
Column31.FontCharSet = 238, ;
|
Column31.FontCharSet = 238, ;
|
||||||
Column31.FontName = "Arial", ;
|
Column31.FontName = "Arial", ;
|
||||||
@@ -7461,7 +7466,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column31.ReadOnly = .T., ;
|
Column31.ReadOnly = .T., ;
|
||||||
Column31.Width = 55, ;
|
Column31.Width = 55, ;
|
||||||
Column32.BackColor = 244,250,255, ;
|
Column32.BackColor = 244,250,255, ;
|
||||||
Column32.ColumnOrder = 34, ;
|
Column32.ColumnOrder = 35, ;
|
||||||
Column32.ControlSource = "gestout", ;
|
Column32.ControlSource = "gestout", ;
|
||||||
Column32.FontCharSet = 238, ;
|
Column32.FontCharSet = 238, ;
|
||||||
Column32.FontName = "Arial", ;
|
Column32.FontName = "Arial", ;
|
||||||
@@ -7470,7 +7475,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column32.ReadOnly = .F., ;
|
Column32.ReadOnly = .F., ;
|
||||||
Column32.Width = 92, ;
|
Column32.Width = 92, ;
|
||||||
Column33.BackColor = 244,250,255, ;
|
Column33.BackColor = 244,250,255, ;
|
||||||
Column33.ColumnOrder = 36, ;
|
Column33.ColumnOrder = 37, ;
|
||||||
Column33.ControlSource = "sucursala", ;
|
Column33.ControlSource = "sucursala", ;
|
||||||
Column33.FontCharSet = 238, ;
|
Column33.FontCharSet = 238, ;
|
||||||
Column33.FontName = "Arial", ;
|
Column33.FontName = "Arial", ;
|
||||||
@@ -7479,7 +7484,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column33.ReadOnly = .F., ;
|
Column33.ReadOnly = .F., ;
|
||||||
Column33.Width = 121, ;
|
Column33.Width = 121, ;
|
||||||
Column34.BackColor = 244,250,255, ;
|
Column34.BackColor = 244,250,255, ;
|
||||||
Column34.ColumnOrder = 25, ;
|
Column34.ColumnOrder = 26, ;
|
||||||
Column34.ControlSource = "contract", ;
|
Column34.ControlSource = "contract", ;
|
||||||
Column34.FontCharSet = 238, ;
|
Column34.FontCharSet = 238, ;
|
||||||
Column34.FontName = "Arial", ;
|
Column34.FontName = "Arial", ;
|
||||||
@@ -7488,7 +7493,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column34.ReadOnly = .T., ;
|
Column34.ReadOnly = .T., ;
|
||||||
Column34.Width = 65, ;
|
Column34.Width = 65, ;
|
||||||
Column35.BackColor = 244,250,255, ;
|
Column35.BackColor = 244,250,255, ;
|
||||||
Column35.ColumnOrder = 20, ;
|
Column35.ColumnOrder = 21, ;
|
||||||
Column35.ControlSource = "explicatie_tva", ;
|
Column35.ControlSource = "explicatie_tva", ;
|
||||||
Column35.FontCharSet = 238, ;
|
Column35.FontCharSet = 238, ;
|
||||||
Column35.FontName = "Arial", ;
|
Column35.FontName = "Arial", ;
|
||||||
@@ -7497,7 +7502,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column35.ReadOnly = .F., ;
|
Column35.ReadOnly = .F., ;
|
||||||
Column35.Width = 136, ;
|
Column35.Width = 136, ;
|
||||||
Column36.BackColor = 244,250,255, ;
|
Column36.BackColor = 244,250,255, ;
|
||||||
Column36.ColumnOrder = 18, ;
|
Column36.ColumnOrder = 19, ;
|
||||||
Column36.ControlSource = "cu_tva", ;
|
Column36.ControlSource = "cu_tva", ;
|
||||||
Column36.FontCharSet = 238, ;
|
Column36.FontCharSet = 238, ;
|
||||||
Column36.FontName = "Arial", ;
|
Column36.FontName = "Arial", ;
|
||||||
@@ -7517,7 +7522,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column37.ReadOnly = .F., ;
|
Column37.ReadOnly = .F., ;
|
||||||
Column37.Width = 58, ;
|
Column37.Width = 58, ;
|
||||||
Column38.BackColor = 244,250,255, ;
|
Column38.BackColor = 244,250,255, ;
|
||||||
Column38.ColumnOrder = 41, ;
|
Column38.ColumnOrder = 42, ;
|
||||||
Column38.ControlSource = "id_fact", ;
|
Column38.ControlSource = "id_fact", ;
|
||||||
Column38.FontCharSet = 238, ;
|
Column38.FontCharSet = 238, ;
|
||||||
Column38.FontName = "Arial", ;
|
Column38.FontName = "Arial", ;
|
||||||
@@ -7526,7 +7531,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column38.ReadOnly = .T., ;
|
Column38.ReadOnly = .T., ;
|
||||||
Column38.Width = 94, ;
|
Column38.Width = 94, ;
|
||||||
Column39.BackColor = 244,250,255, ;
|
Column39.BackColor = 244,250,255, ;
|
||||||
Column39.ColumnOrder = 42, ;
|
Column39.ColumnOrder = 43, ;
|
||||||
Column39.ControlSource = "id_factd", ;
|
Column39.ControlSource = "id_factd", ;
|
||||||
Column39.FontCharSet = 238, ;
|
Column39.FontCharSet = 238, ;
|
||||||
Column39.FontName = "Arial", ;
|
Column39.FontName = "Arial", ;
|
||||||
@@ -7535,7 +7540,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column39.ReadOnly = .T., ;
|
Column39.ReadOnly = .T., ;
|
||||||
Column39.Width = 75, ;
|
Column39.Width = 75, ;
|
||||||
Column40.BackColor = 244,250,255, ;
|
Column40.BackColor = 244,250,255, ;
|
||||||
Column40.ColumnOrder = 43, ;
|
Column40.ColumnOrder = 44, ;
|
||||||
Column40.ControlSource = "id_factc", ;
|
Column40.ControlSource = "id_factc", ;
|
||||||
Column40.FontCharSet = 238, ;
|
Column40.FontCharSet = 238, ;
|
||||||
Column40.FontName = "Arial", ;
|
Column40.FontName = "Arial", ;
|
||||||
@@ -7555,7 +7560,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column41.Width = 22, ;
|
Column41.Width = 22, ;
|
||||||
Column42.BackColor = 244,250,255, ;
|
Column42.BackColor = 244,250,255, ;
|
||||||
Column42.Bound = .F., ;
|
Column42.Bound = .F., ;
|
||||||
Column42.ColumnOrder = 21, ;
|
Column42.ColumnOrder = 22, ;
|
||||||
Column42.ControlSource = "Iif(Seek(tAct.taxcode,'saft_taxtable','taxcode'),saft_taxtable.taxname,'')", ;
|
Column42.ControlSource = "Iif(Seek(tAct.taxcode,'saft_taxtable','taxcode'),saft_taxtable.taxname,'')", ;
|
||||||
Column42.CurrentControl = "_combobox1", ;
|
Column42.CurrentControl = "_combobox1", ;
|
||||||
Column42.FontCharSet = 238, ;
|
Column42.FontCharSet = 238, ;
|
||||||
@@ -7566,7 +7571,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column42.Width = 184, ;
|
Column42.Width = 184, ;
|
||||||
Column43.BackColor = 244,250,255, ;
|
Column43.BackColor = 244,250,255, ;
|
||||||
Column43.Bound = .F., ;
|
Column43.Bound = .F., ;
|
||||||
Column43.ColumnOrder = 22, ;
|
Column43.ColumnOrder = 23, ;
|
||||||
Column43.ControlSource = "Iif(Seek(tAct.paymentcode,'saft_mecanisme_plati','mcode'),saft_mecanisme_plati.paymentname,'')", ;
|
Column43.ControlSource = "Iif(Seek(tAct.paymentcode,'saft_mecanisme_plati','mcode'),saft_mecanisme_plati.paymentname,'')", ;
|
||||||
Column43.CurrentControl = "_combobox1", ;
|
Column43.CurrentControl = "_combobox1", ;
|
||||||
Column43.FontCharSet = 238, ;
|
Column43.FontCharSet = 238, ;
|
||||||
@@ -7574,7 +7579,17 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
Column43.Name = "Column43", ;
|
Column43.Name = "Column43", ;
|
||||||
Column43.ReadOnly = .F., ;
|
Column43.ReadOnly = .F., ;
|
||||||
Column43.Sparse = .F., ;
|
Column43.Sparse = .F., ;
|
||||||
Column43.Width = 146
|
Column43.Width = 146, ;
|
||||||
|
Column44.Alignment = 1, ;
|
||||||
|
Column44.BackColor = 244,250,255, ;
|
||||||
|
Column44.ColumnOrder = 7, ;
|
||||||
|
Column44.ControlSource = "nnir", ;
|
||||||
|
Column44.FontCharSet = 238, ;
|
||||||
|
Column44.FontName = "Arial", ;
|
||||||
|
Column44.FontSize = 10, ;
|
||||||
|
Column44.Name = "Column44", ;
|
||||||
|
Column44.ReadOnly = .F., ;
|
||||||
|
Column44.Width = 60
|
||||||
*< END OBJECT: BaseClass="grid" />
|
*< END OBJECT: BaseClass="grid" />
|
||||||
|
|
||||||
ADD OBJECT 'Grid1.cAles._CHECKBOX1' AS _checkbox WITH ;
|
ADD OBJECT 'Grid1.cAles._CHECKBOX1' AS _checkbox WITH ;
|
||||||
@@ -8442,6 +8457,29 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
SelectedBackColor = 49,106,197
|
SelectedBackColor = 49,106,197
|
||||||
*< END OBJECT: BaseClass="textbox" />
|
*< END OBJECT: BaseClass="textbox" />
|
||||||
|
|
||||||
|
ADD OBJECT 'Grid1.Column44.Header1' AS header WITH ;
|
||||||
|
Alignment = 2, ;
|
||||||
|
Caption = "Nr. NIR", ;
|
||||||
|
FontCharSet = 238, ;
|
||||||
|
FontName = "Arial", ;
|
||||||
|
FontSize = 10, ;
|
||||||
|
Name = "Header1"
|
||||||
|
*< END OBJECT: BaseClass="header" />
|
||||||
|
|
||||||
|
ADD OBJECT 'Grid1.Column44.Text1' AS textbox WITH ;
|
||||||
|
Alignment = 1, ;
|
||||||
|
BackColor = 244,250,255, ;
|
||||||
|
BorderStyle = 0, ;
|
||||||
|
FontCharSet = 238, ;
|
||||||
|
FontName = "Arial", ;
|
||||||
|
FontSize = 10, ;
|
||||||
|
ForeColor = 0,0,0, ;
|
||||||
|
Margin = 0, ;
|
||||||
|
Name = "Text1", ;
|
||||||
|
ReadOnly = .F., ;
|
||||||
|
SelectedBackColor = 49,106,197
|
||||||
|
*< END OBJECT: BaseClass="textbox" />
|
||||||
|
|
||||||
ADD OBJECT 'Grid1.Column5.Header5' AS header WITH ;
|
ADD OBJECT 'Grid1.Column5.Header5' AS header WITH ;
|
||||||
Alignment = 2, ;
|
Alignment = 2, ;
|
||||||
Caption = "Nr.Doc.", ;
|
Caption = "Nr.Doc.", ;
|
||||||
@@ -13613,6 +13651,9 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
This.grid1.Anchor = 11
|
This.grid1.Anchor = 11
|
||||||
This.but_renunt1.Anchor = 8
|
This.but_renunt1.Anchor = 8
|
||||||
|
|
||||||
|
If This.nid_set = 90101
|
||||||
|
This.grid1.Column44.ReadOnly = .T.
|
||||||
|
Endif
|
||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
PROCEDURE Load
|
PROCEDURE Load
|
||||||
@@ -13683,6 +13724,19 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
|
|
||||||
|
|
||||||
this.gridextra1.setup()
|
this.gridextra1.setup()
|
||||||
|
LOCAL lcPrefFile, lcPrefFileContents, lcKey, lcPrefs
|
||||||
|
LOCAL ARRAY laNnirPrefs(1)
|
||||||
|
lcPrefFile = This.gridextra1.GetUserApplicationDataPath() + This.gridextra1.GridPreferenceFile
|
||||||
|
lcPrefFileContents = ""
|
||||||
|
IF FILE(m.lcPrefFile)
|
||||||
|
lcPrefFileContents = FILETOSTR(m.lcPrefFile)
|
||||||
|
ENDIF
|
||||||
|
lcKey = SYS(1272, This.grid1) + "("
|
||||||
|
lcPrefs = STREXTRACT(m.lcPrefFileContents, m.lcKey, ")", 1, 1)
|
||||||
|
*!* pozitioneaza coloana la prima deschidere, cat timp preferintele salvate nu o acopera
|
||||||
|
IF EMPTY(m.lcPrefs) OR ALINES(laNnirPrefs, m.lcPrefs, 7, ",") < This.grid1.ColumnCount * 2
|
||||||
|
This.grid1.Column44.ColumnOrder = 7
|
||||||
|
ENDIF
|
||||||
this.grid1.SetAll("dynamicbackcolor", "IIF(ALES, RGB(255,255,225), RGB(255,255,255))", "Column")
|
this.grid1.SetAll("dynamicbackcolor", "IIF(ALES, RGB(255,255,225), RGB(255,255,255))", "Column")
|
||||||
This.CalculeazaTotal()
|
This.CalculeazaTotal()
|
||||||
*!* 24.05.2011 ^
|
*!* 24.05.2011 ^
|
||||||
@@ -13717,6 +13771,37 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
|
|
||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
|
PROCEDURE sincronizeaza_nnir
|
||||||
|
*!* propaga NNIR-ul modificat pe toate liniile notei si pe rulajele asociate
|
||||||
|
LPARAMETERS tnNnirVechi, tnNnirNou
|
||||||
|
LOCAL lcSelect, lnRecno
|
||||||
|
IF NVL(m.tnNnirVechi, 0) = NVL(m.tnNnirNou, 0)
|
||||||
|
RETURN
|
||||||
|
ENDIF
|
||||||
|
lcSelect = SELECT()
|
||||||
|
lnRecno = RECNO('tact')
|
||||||
|
UPDATE tact SET nnir = m.tnNnirNou WHERE NVL(nnir, 0) = m.tnNnirVechi
|
||||||
|
IF USED('trul')
|
||||||
|
UPDATE trul SET nnir = m.tnNnirNou WHERE NVL(nnir, 0) = m.tnNnirVechi
|
||||||
|
IF _TALLY > 0
|
||||||
|
Thisform.pgfArticole.page1.grdRulaje.Refresh()
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
IF USED('trul_obinv')
|
||||||
|
UPDATE trul_obinv SET nnir = m.tnNnirNou WHERE NVL(nnir, 0) = m.tnNnirVechi
|
||||||
|
IF _TALLY > 0
|
||||||
|
Thisform.pgfArticole.page2.grdRulajeObinv.Refresh()
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
SELECT tact
|
||||||
|
IF BETWEEN(m.lnRecno, 1, RECCOUNT('tact'))
|
||||||
|
GO m.lnRecno
|
||||||
|
ELSE
|
||||||
|
GO TOP
|
||||||
|
ENDIF
|
||||||
|
SELECT (m.lcSelect)
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
PROCEDURE updateexplicatiesaft
|
PROCEDURE updateexplicatiesaft
|
||||||
* Daca nu este activata SAFT 406 nu fac nimic
|
* Daca nu este activata SAFT 406 nu fac nimic
|
||||||
IF !m.gl406
|
IF !m.gl406
|
||||||
@@ -14201,6 +14286,10 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
.Column35.ReadOnly = .T. && cod
|
.Column35.ReadOnly = .T. && cod
|
||||||
.Column25.ReadOnly = .T. && id_set
|
.Column25.ReadOnly = .T. && id_set
|
||||||
ENDWITH
|
ENDWITH
|
||||||
|
*!* pastreaza blocarea NNIR pentru notele de inventar (id_set = 90101)
|
||||||
|
IF Thisform.nid_set = 90101
|
||||||
|
This.Column44.ReadOnly = .T.
|
||||||
|
ENDIF
|
||||||
*!* 10.08.2011 ^
|
*!* 10.08.2011 ^
|
||||||
*!* pot selecta inregistrari din alte sucursale pentru operatiile de copiere, adaugare care
|
*!* pot selecta inregistrari din alte sucursale pentru operatiile de copiere, adaugare care
|
||||||
This.cAles.ReadOnly = .F.
|
This.cAles.ReadOnly = .F.
|
||||||
@@ -14674,6 +14763,19 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
|
|||||||
thisform.cPaymentCode = ALLTRIM(tAct.paymentcode)
|
thisform.cPaymentCode = ALLTRIM(tAct.paymentcode)
|
||||||
ENDPROC
|
ENDPROC
|
||||||
|
|
||||||
|
PROCEDURE Grid1.Column44.Text1.LostFocus
|
||||||
|
Local lnNnirNou, lnNnirVechi
|
||||||
|
lnNnirVechi = thisform.nnnirvechi
|
||||||
|
lnNnirNou = NVL(tAct.nnir, 0)
|
||||||
|
Thisform.sincronizeaza_nnir(m.lnNnirVechi, m.lnNnirNou)
|
||||||
|
Thisform.nnnirvechi = m.lnNnirNou
|
||||||
|
Thisform.Grid1.Refresh()
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
PROCEDURE Grid1.Column44.Text1.When
|
||||||
|
Thisform.nnnirvechi = NVL(tAct.nnir, 0)
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
PROCEDURE Grid1.Column6.Text1.InteractiveChange
|
PROCEDURE Grid1.Column6.Text1.InteractiveChange
|
||||||
ADDPROPERTY(this, 'lInteractiveChange')
|
ADDPROPERTY(this, 'lInteractiveChange')
|
||||||
LOCAL lnIdPart
|
LOCAL lnIdPart
|
||||||
|
|||||||
17
docs/capcana_grid_preferinte_utilizator.md
Normal file
17
docs/capcana_grid_preferinte_utilizator.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Capcana: coloana noua intr-un grid existent ajunge la coada (preferinte GridExtras)
|
||||||
|
|
||||||
|
`GridExtras` (`COMUN\utile\GridExtras\gridextras.vc2:1051`, `restoregridpreferences` /
|
||||||
|
`savegridpreferences`) salveaza **per utilizator** latimea si ordinea coloanelor fiecarui grid,
|
||||||
|
in `%APPDATA%\...\gridprefs.tmp`, sub cheia `SYS(1272, grid)` (ex. `frm_modific2024.grid1`).
|
||||||
|
Salvarea se face live, la `columnmoved`/`columnresize`, nu la iesirea din formular.
|
||||||
|
|
||||||
|
Consecinta: `ColumnOrder` setat in clasa e neutralizat la runtime pentru orice utilizator care a
|
||||||
|
deschis deja formularul inainte de livrare - `gridextra1.setup()` restaureaza ordinea veche, iar
|
||||||
|
coloana nou adaugata (care nu exista in preferinte) ajunge ultima.
|
||||||
|
|
||||||
|
Solutie: repozitionare la runtime, in `Show()`, **dupa** `gridextra1.setup()`, aplicata o singura
|
||||||
|
data - cat timp preferintele salvate nu acopera toate coloanele (implementat pe
|
||||||
|
`frm_modific2024`, `COMUN\clase\omodificari.vc2`, coloana `nnir`).
|
||||||
|
|
||||||
|
La testare: pozitia coloanei nu e o asertiune stabila intre masini. Se asertesteaza tare
|
||||||
|
`ControlSource` si `ReadOnly`; `ColumnOrder` ramane informativ.
|
||||||
@@ -76,6 +76,10 @@ fals `roundtrip text1 != text2`. Ruleaza atunci cu lista rebazata:
|
|||||||
- Metoda noua de clasa cere `*m: nume` in `*<DefinedPropArrayMethod>`; fara ea, prima salvare
|
- Metoda noua de clasa cere `*m: nume` in `*<DefinedPropArrayMethod>`; fara ea, prima salvare
|
||||||
din IDE o arunca tacut, iar refresh-ul urmator absoarbe pierderea in cache (si in .bak-uri).
|
din IDE o arunca tacut, iar refresh-ul urmator absoarbe pierderea in cache (si in .bak-uri).
|
||||||
Override-urile de metode de baza (Init, Show, hook-uri) nu au nevoie de `*m:`.
|
Override-urile de metode de baza (Init, Show, hook-uri) nu au nevoie de `*m:`.
|
||||||
|
- FoxBin2Prg NU pastreaza pozitia in text a unei metode noi: o regenereaza la pozitia
|
||||||
|
alfabetica din `*<DefinedPropArrayMethod>`. O metoda scrisa in alta parte a fisierului
|
||||||
|
face fidelity-check-ul sa pice. Sursa de adevar pentru relocare e textul regenerat din
|
||||||
|
`<staging>\verify\` - muta metoda unde apare acolo si reia write-back-ul.
|
||||||
- Salvarea din VFP IDE peste un binar scris de txt2vcx poate PIERDE si definitii `*m:` deja
|
- Salvarea din VFP IDE peste un binar scris de txt2vcx poate PIERDE si definitii `*m:` deja
|
||||||
existente, desi corpurile PROCEDURE raman (patit pe ROAGEST: `import_adauga_factura.recalc_tva`,
|
existente, desi corpurile PROCEDURE raman (patit pe ROAGEST: `import_adauga_factura.recalc_tva`,
|
||||||
`import_nota.do_adauga/do_copie/do_reface`); simptom: crash la Createobject cu
|
`import_nota.do_adauga/do_copie/do_reface`); simptom: crash la Createobject cu
|
||||||
|
|||||||
53
docs/flux-modificare-stergere-nota-jurnal.md
Normal file
53
docs/flux-modificare-stergere-nota-jurnal.md
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Flux: modificare/stergere nota in Registrul Jurnal
|
||||||
|
|
||||||
|
Comportament CORECT (nu bug): la **modificarea** unei note din Registrul Jurnal, documentul
|
||||||
|
original nu se suprascrie. Se marcheaza `sters = 1` pe randurile vechi (`ACT`/`RUL`/`RUL_OBINV`),
|
||||||
|
apoi se scrie un document NOU cu alt `cod`, pastrand acelasi `id_fact`/`id_factd`. Ambele operatii
|
||||||
|
ruleaza intr-o tranzactie manuala unica (commit sau rollback pe amandoua).
|
||||||
|
|
||||||
|
## Unde
|
||||||
|
|
||||||
|
- `afisjurcom.do_modifica` - `COMUN\clase\comun.vc2:2222-2562`. Deschide tranzactia manuala
|
||||||
|
(`Thisform.do_deschide_tranzactie()`, linia 2448), apoi `oscrie_in_fisiere(2,...)` = STERGE
|
||||||
|
(linia 2451), apoi `oscrie_in_fisiere(0,...)` = SCRIE (linia 2479), apoi
|
||||||
|
`pack_contafin.finalizeaza_modificare_nota(...)` (2484-2486), apoi
|
||||||
|
`Thisform.do_inchide_tranzactie(...)` (linia 2535) - commit daca tot ce a rulat inainte a
|
||||||
|
reusit, rollback altfel.
|
||||||
|
- `do_deschide_tranzactie`/`do_inchide_tranzactie` (`_frmbase`, `COMUN\clase\_frm_base.vc2:252,279`;
|
||||||
|
varianta identica ca procedura globala in `COMUN\programe\oproceduri_rulaje.prg:287,303`):
|
||||||
|
`SQLSetProp(gnHandle,'Transactions',2)` la deschidere, `SQLCOMMIT`/`SQLROLLBACK` +
|
||||||
|
`SQLSetProp(...,'Transactions',1)` la inchidere.
|
||||||
|
- `oscrie_in_fisiere.prg` (`COMUN\programe\oscrie_in_fisiere.prg`): `tnScrie_Sterge` 0=scriere,
|
||||||
|
2=stergere. Apeleaza server-side `pack_contafin.init_scriere_act_rul_local` +
|
||||||
|
`final_scriere_act_rul_local` -> `finalizeaza_scriere_act_rul`, care ruleaza `SCRIE_IN_ACT`
|
||||||
|
(scriere) sau `STERGE_DIN_ACT` (stergere) din `PACK_CONTAFIN.pck`.
|
||||||
|
- `PACK_CONTAFIN.STERGE_DIN_ACT` (`COMUN\docs\PACK_CONTAFIN.pck:1815-1859`):
|
||||||
|
`UPDATE ACT SET STERS = 1 ... WHERE COD = tnCod` - marcheaza vechiul document, pe `cod`-ul vechi.
|
||||||
|
- `PACK_CONTAFIN.SCRIE_IN_ACT` (`PACK_CONTAFIN.pck:630-901`): `LN_COD := pack_contafin.GET_COD()`
|
||||||
|
(linia 648) aloca un `cod` nou; `UPDATE ACT_TEMP SET COD = LN_COD, ...` (linia 897) il scrie pe
|
||||||
|
noul document - `ID_FACT` nu e atins, ramane cel din documentul original.
|
||||||
|
- `PACK_CONTAFIN.finalizeaza_modificare_nota` (`PACK_CONTAFIN.pck:8601-8651`): aloca din nou
|
||||||
|
`lnCodNou := pack_contafin.get_cod()` si actualizeaza pe codul nou `vanzari`
|
||||||
|
(`pack_facturare.actualizeaza_vanzari`) si `atasamente_vanzari`. `nom_lucrari` se actualizeaza
|
||||||
|
DOAR pentru `id_set IN (31003,31004,31005,31011)` (repune `id_fact`), nu general. `gest_inventar`
|
||||||
|
NU se leaga de `cod`-ul nou - se identifica dupa `dataora_validat + an + luna` (cazul
|
||||||
|
`id_set = 90101`, note de inventariere).
|
||||||
|
|
||||||
|
## Atentie: nu e valabil la fel pentru stergerea simpla
|
||||||
|
|
||||||
|
`afisjurcom.do_sterge` (`comun.vc2:2565-2724`) ofera doua optiuni (`xmenu`, linia 2625):
|
||||||
|
- **Stergere document** (`lnOptiune = 1`): DOAR `OSCRIE_IN_FISIERE(2,...)` + `finalizeaza_stergere_nota`
|
||||||
|
- marcheaza `sters = 1`, NU se creeaza document nou.
|
||||||
|
- **Anulare document** (`lnOptiune = 2`): STERGE (linia 2698) + SCRIE (linia 2709, cu sumele puse pe
|
||||||
|
0) - creeaza si document nou, la fel ca la modificare - dar aici cele doua apeluri NU sunt
|
||||||
|
invelite intr-o tranzactie manuala comuna (nu apare `do_deschide_tranzactie`/
|
||||||
|
`do_inchide_tranzactie` in `do_sterge`); fiecare `OSCRIE_IN_FISIERE` isi gestioneaza singur
|
||||||
|
commit-ul (vezi `tlModificare`/`llManualTransactions` in `oscrie_in_fisiere.prg:111-165`).
|
||||||
|
|
||||||
|
## Implicatii practice
|
||||||
|
|
||||||
|
- Codul (`cod`) unui document din Registrul Jurnal NU e stabil dupa modificare/anulare - se schimba
|
||||||
|
la fiecare editare. Cod hardcodat sau retinut dintr-o executare anterioara devine invalid.
|
||||||
|
- Regasirea documentului editat se face dupa `id_fact` (sau alt marcaj stabil), niciodata dupa `cod`.
|
||||||
|
- Randurile `sters = 1` ramase in `ACT`/`RUL`/`RUL_OBINV` dupa o modificare sunt normale (istoric),
|
||||||
|
nu date corupte sau duplicate de curatat.
|
||||||
@@ -60,6 +60,8 @@
|
|||||||
`0xBA` strica `a`/`t` cu caciula (`0xE3`, `0xFE`) din alte fisiere;
|
`0xBA` strica `a`/`t` cu caciula (`0xE3`, `0xFE`) din alte fisiere;
|
||||||
- adaugi/rearanjezi controale pe formulare sau coloane in grid -> `conventie_ux_formulare.md`;
|
- adaugi/rearanjezi controale pe formulare sau coloane in grid -> `conventie_ux_formulare.md`;
|
||||||
- grid needitabil pe formular cu 2+ grid-uri -> `capcana_grid_controlsource.md`;
|
- grid needitabil pe formular cu 2+ grid-uri -> `capcana_grid_controlsource.md`;
|
||||||
|
- adaugi o coloana intr-un grid deja livrat (ordinea din clasa e neutralizata de
|
||||||
|
preferintele salvate per utilizator) -> `capcana_grid_preferinte_utilizator.md`;
|
||||||
- `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`;
|
||||||
|
|||||||
121
utile/Teste/nnir_registru_jurnal/date_test_nnir.md
Normal file
121
utile/Teste/nnir_registru_jurnal/date_test_nnir.md
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
# Date de test - NNIR editabil in Registru Jurnal
|
||||||
|
|
||||||
|
Baza: `MARIUSM_AUTO@ROA_CENTRAL` (test, nu productie). Verificare: `verif_nnir_cod.sql` in acest
|
||||||
|
folder (`sqlplus ... @verif_nnir_cod.sql <cod>`).
|
||||||
|
|
||||||
|
| Caz | COD | AN | LUNA | ID_SET | NNIR curent | ACT randuri | RUL randuri | RUL_OBINV randuri |
|
||||||
|
|---|---|---|---|---|---|---|---|---|
|
||||||
|
| NIR/achizitie (principal) | 1140841 | 2026 | 7 | 209 | 3 | 7 (doar 1 cu nnir=3, restul 0) | 1 (nnir=3) | 0 |
|
||||||
|
| Obiecte de inventar | 1140835 | 2026 | 6 | 211 | 2026060001 | 1 | 0 | 2 (nnir=2026060001) |
|
||||||
|
| Fara rulaje | 1140848 | 2026 | 7 | 209 | 124 | 2 (ambele nnir=124) | 0 | 0 |
|
||||||
|
| Nota de inventar (blocare) | 1140716 | 2026 | 3 | 90101 | 2026030004 | 1 | 1 (nnir=2026030004) | 0 |
|
||||||
|
|
||||||
|
Note:
|
||||||
|
- ACT e pe linii (nu pe antet) - la COD 1140841 doar linia efectiv legata de rulaj are NNIR-ul
|
||||||
|
real, restul liniilor documentului au NNIR=0. Sincronizarea (`WHERE Nvl(nnir,0) = vechi`) trebuie
|
||||||
|
sa lase liniile cu 0 neatinse.
|
||||||
|
- Nu exista nicio nota cu `id_set=90101` sau cu rulaje in `RUL_OBINV` in luna curenta de lucru
|
||||||
|
(AN=2026, LUNA=7) - alese din perioade anterioare. Editarea reala prin `afisjurcom.do_modifica`
|
||||||
|
e limitata la luna curenta (`comun.vc2:2265-2268`); testul instantiaza `frm_modific2024` direct
|
||||||
|
(ca `test_repro_cnrcrt_footer.prg`), cu cursoare construite pe AN/LUNA propriu notei, ocolind
|
||||||
|
acel filtru - la fel ca precedentul deja acceptat in `achizitie_import`.
|
||||||
|
|
||||||
|
## Stare implementare (livrata, 03.08.2026)
|
||||||
|
|
||||||
|
`COMUN\clase\omodificari.vc2` (frm_modific2024):
|
||||||
|
- `Grid1.ColumnCount = 44`, `Column44.ControlSource = "nnir"` (la runtime apare calificat automat
|
||||||
|
de VFP cu aliasul cursorului: `tact.nnir`), `ReadOnly = .F.` - confirmat prin instantiere reala
|
||||||
|
(nu doar citire de sursa).
|
||||||
|
- `PROCEDURE sincronizeaza_nnir(tnNnirVechi, tnNnirNou)` (`omodificari.vc2:13762`) - update pe
|
||||||
|
`tact`/`trul`/`trul_obinv` unde `Nvl(nnir,0) = vechi`, cu revenire pe recno. Propaga si valoarea
|
||||||
|
0 (stergerea NNIR) - nu exista garda `EMPTY` pe valoarea noua.
|
||||||
|
- Legare pe coloana: `Grid1.Column44.Text1.When` retine valoarea veche in `thisform.nnnirvechi`;
|
||||||
|
**`Grid1.Column44.Text1.LostFocus`** apeleaza `sincronizeaza_nnir` si `Thisform.Grid1.Refresh()`
|
||||||
|
- `Valid` a fost eliminat (la textbox valoarea nu ajunge in ControlSource decat DUPA ce Valid
|
||||||
|
returneaza .T., deci nu propaga). Testul declanseaza `LostFocus`.
|
||||||
|
- Blocarea pentru `id_set = 90101` (nota de inventar): in `Init` (`omodificari.vc2:13654`) SI
|
||||||
|
reimpusa in `Grid1.AfterRowColChange` (14289-14292), dupa `SetAll("ReadOnly", ...)` - fara a doua,
|
||||||
|
`SetAll` anuleaza blocarea la prima navigare in grid.
|
||||||
|
- `ColumnOrder = 7` in clasa, plus repozitionare la runtime in `Show()`, dupa `gridextra1.setup()`
|
||||||
|
(13729-13738) - preferintele de grid salvate per utilizator impingeau coloana noua la coada
|
||||||
|
(vezi `COMUN\docs\capcana_grid_preferinte_utilizator.md`). Pozitia NU e o asertiune stabila intre
|
||||||
|
masini; asertat tare in test: `ControlSource = "nnir"`, `ReadOnly` (.F. normal / .T. pe
|
||||||
|
id_set 90101), propagarea valorii.
|
||||||
|
|
||||||
|
## Cerinte de mediu descoperite la construirea harness-ului (deja tratate in scripturile livrate)
|
||||||
|
|
||||||
|
- `COMUN\utile\Teste\test_init_env_auto.prg` (generic) e de fapt specific ROACONT (`gcAppPath`,
|
||||||
|
classlib-uri si proceduri hardcodate `D:\ROA\ROACONT\`) - inutilizabil pentru ROAGEST. S-a scris
|
||||||
|
`COMUN\utile\Teste\test_init_env_auto_roagest.prg`, cu SET PATH/CLASSLIB/PROCEDURE reconstruite
|
||||||
|
din `Programe\roagest.prg`.
|
||||||
|
- `gcUserName` trebuie setat explicit inainte de `optiuni_firma` (`oinit_optiuni.prg`) - altfel
|
||||||
|
`SCRIE_OPTIUNI(gcUserName)` da "Operator/operand type mismatch" (PUBLIC nedeclarat ramane
|
||||||
|
logic .F.). **`gcUserName` e schema/userul de conectare Oracle** (`Programe\roagest.prg:560,575`)
|
||||||
|
- `SCRIE_OPTIUNI` il foloseste direct in `from <gcUserName>.optiuni`, deci trebuie
|
||||||
|
`gcUserName = m.gcS`, NU un nume de persoana (ex. 'MARIUS M' da ORA-00907, identificator invalid
|
||||||
|
- incercare gresita initiala). Numele de persoana e `gcUserNameApp` (variabila separata).
|
||||||
|
- `frm_modific2024` face `Seek(..,'crsJtvaTemp','id_jtva')` in ControlSource-ul coloanei de
|
||||||
|
explicatie TVA a rulajelor (Column63) - evaluat la CONSTRUCTIA formularului. Fara cursorul
|
||||||
|
deschis, `CREATEOBJECT('frm_modific2024',...)` pica cu "File 'crsjtvatemp.dbf' does not exist".
|
||||||
|
Fix: `update_jtva_coloane('', 'crsJtvaTemp', 6)` (in `COMUN\programe\updateserver.prg:553`)
|
||||||
|
inainte de instantiere - construieste direct cursorul cu indexul cerut, fara pasii intermediari
|
||||||
|
folositi de exemplul ROACONT (`update_jtva_coloana`/`crsExplicatiiTVATemp`, care oricum nu
|
||||||
|
exista in ROAGEST).
|
||||||
|
- Mock-ul `amessagebox` trebuie incarcat **INAINTE** de `test_init_env_auto_roagest.prg` (nu doar
|
||||||
|
dupa, cum sugereaza exemplele din `achizitie_import`) - `optiuni_firma` poate afisa un dialog
|
||||||
|
real daca `SCRIE_OPTIUNI` raporteaza eroare, inainte sa apuce sa se incarce mock-ul "la coada".
|
||||||
|
- La citirea unei coloane de grid prin ControlSource dintr-un cursor legat ca RecordSource, VFP
|
||||||
|
calificat automat campul simplu cu aliasul (`nnir` -> `tact.nnir`) - comparatiile exacte
|
||||||
|
`== 'NNIR'` trebuie sa accepte si forma calificata.
|
||||||
|
- Coloanele de grid nu sunt garantat numite `Column<N>` - unele au `Name` custom (ex. `cAles` pe
|
||||||
|
pozitia 41 in acest grid); accesul dinamic la coloana trebuie facut prin colectia
|
||||||
|
`Grid1.Columns(i)`, nu prin constructia textuala a numelui `"column" + TRANSFORM(i)`.
|
||||||
|
- `frm_modific2024.Grid1.AfterRowColChange` are propria logica de blocare pe sucursala (SetAll
|
||||||
|
ReadOnly pe toate coloanele daca `Nvl(gnIdSucursala,0) <> Nvl(tAct.id_sucursala,0)`) - independenta
|
||||||
|
de blocarea 90101, se declanseaza automat la pozitionare in grid. COD 1140835 (cazul obiecte de
|
||||||
|
inventar) are `id_sucursala` diferit de sesiunea de test (`gnIdSucursala = NULL`), deci Column44
|
||||||
|
iese `ReadOnly=.T.` in acest scenariu - nu e o eroare, e comportament existent, neplanificat de
|
||||||
|
NNIR; sincronizarea tot functioneaza (apelul e direct, nu prin UI).
|
||||||
|
- **Termin reatribuie COD nou**: `afisjurcom.do_modifica` (comun.vc2:2444-2487) cheama
|
||||||
|
`oscrie_in_fisiere` de DOUA ori - intai `(2,.T.,llRul)` (STERGE, marcheaza `sters=1` pe COD-ul
|
||||||
|
ORIGINAL, din `actactan` neatins de editare), apoi `(0,.T.,llRul)` (SCRIE varianta editata sub
|
||||||
|
COD nou, generat de `pack_contafin`, sub AN/LUNA de sesiune curenta - nu pastreaza COD-ul/AN/LUNA
|
||||||
|
notei editate). Verificarea si curatenia testului se fac dupa NNIR (marcaj distinct), nu dupa
|
||||||
|
COD, si readuc nota originala la `sters=0` dupa test (pasul STERGE o dezactiveaza altfel permanent).
|
||||||
|
- Salvarea reala cere tranzactie manuala explicita: `SQLSetProp(gnHandle,'Transactions',2)` inainte
|
||||||
|
de blocul STERGE+SCRIE+finalizeaza, apoi `SQLCOMMIT(gnHandle)`/`SQLROLLBACK` +
|
||||||
|
`SQLSetProp(...,1)` dupa - echivalentul direct al `thisform.do_deschide_tranzactie()`/
|
||||||
|
`do_inchide_tranzactie()` din `afisjurcom` (`_frm_base.vc2:252-305`, mostenite, apelate pe
|
||||||
|
formularul de jurnal - nu pe `frm_modific2024`, deci invizibile la o privire doar pe clasa notei).
|
||||||
|
Fara acest wrapping, `oscrie_in_fisiere`/`finalizeaza_modificare_nota` raporteaza succes dar nu
|
||||||
|
se vede nimic persistat, nici in aceeasi sesiune.
|
||||||
|
|
||||||
|
## Capcana: dialog modal "Enter the value for <var>" in loc de eroare catchabila
|
||||||
|
|
||||||
|
O variabila memorie lipsa/umbrita folosita ca `?param` intr-un SQL pass-through (SQLEXEC/
|
||||||
|
`goExecutor.oExecuta`) NU da o eroare VFP catchabila (ON ERROR) - deschide dialogul nativ
|
||||||
|
"View Parameter" ("Enter the value for <var>"), MODAL, care blocheaza tot procesul headless la
|
||||||
|
nesfarsit si nu lasa nimic in log (spre deosebire de un `REPLACE`/expresie cu aceeasi variabila
|
||||||
|
lipsa, care DA eroare catchabila - vezi cazul `gnIdUtil` scapat o data ca `PRIVATE` neasignat).
|
||||||
|
Simptom: proces `vfp9.exe` care nu mai raspunde, fara `.ERR`, fara linie noua in log.
|
||||||
|
|
||||||
|
Remediu: **garda explicita inainte de orice rulare care ajunge la cod ce foloseste `?param`** -
|
||||||
|
verifica `TYPE(<nume>) == 'U'` pe toate variabilele relevante (nu doar cele proprii testului, ci
|
||||||
|
si cele din codul apelat: `oscrie_in_fisiere`, `pack_contafin`/`pack_sesiune`, `oinit_optiuni.prg`)
|
||||||
|
si opreste testul cu FAIL clar in log daca lipseste ceva, inainte sa ajunga la SQLEXEC. Implementat
|
||||||
|
in `test_nnir_sincronizare.prg` (`NnirGardaVariabile`, apelata imediat dupa init mediu). `TYPE()`
|
||||||
|
returneaza `'X'` (nu `'U'`) pentru NULL - o valoare NULL e un bind valid, doar variabila absenta
|
||||||
|
e problema.
|
||||||
|
|
||||||
|
## Rezultat test complet (03.08.2026, pe binarul livrat)
|
||||||
|
|
||||||
|
**33 PASS, 0 FAIL** pe cele 6 scenarii: NIR, obiecte de inventar si nota fara rulaje (toate cu
|
||||||
|
salvare reala prin Termin + verificare in Oracle), blocare `id_set=90101`, `NNIR -> 0`, si blocare
|
||||||
|
`id_set=90101` pe sucursala curenta. Baza de test verificata dupa rulare: cele 4 note originale
|
||||||
|
(1140841, 1140835, 1140848, 1140716) raman intacte (NNIR si `sters` la valorile initiale); notele
|
||||||
|
noi create de Termin (COD reatribuit) au fost marcate `sters=1` de curatenia din test.
|
||||||
|
|
||||||
|
Scenariul 6 (`INVENTAR2`) exista pentru ca scenariul 4 ruleaza pe o nota din ALTA sucursala, unde
|
||||||
|
`AfterRowColChange` blocheaza oricum tot gridul - trecea din motivul gresit. Scenariul 6 aliniaza
|
||||||
|
`gnIdSucursala` la nota (`llReadOnly` iese `.F.`) si asertesteaza si ca restul coloanelor raman
|
||||||
|
editabile, altfel blocarea NNIR nu dovedeste nimic.
|
||||||
837
utile/Teste/nnir_registru_jurnal/test_nnir_sincronizare.prg
Normal file
837
utile/Teste/nnir_registru_jurnal/test_nnir_sincronizare.prg
Normal file
@@ -0,0 +1,837 @@
|
|||||||
|
* test_nnir_sincronizare.prg
|
||||||
|
* Test e2e (fluxul real): NNIR editabil in Registru Jurnal, cu sincronizare in tact/trul/trul_obinv
|
||||||
|
* si in ACT/RUL/RUL_OBINV (Oracle). Vezi cerinta initiala (todos.txt pct. 9) si
|
||||||
|
* date_test_nnir.md (datele de test alese, an/luna/cod, stare implementare la data scrierii).
|
||||||
|
*
|
||||||
|
* Instantiaza frm_modific2024 direct (ca test_repro_cnrcrt_footer.prg din achizitie_import),
|
||||||
|
* cu cursoarele tact/trul/trul_obinv construite exact ca afisjurcom.do_modifica (comun.vc2:2352-
|
||||||
|
* 2434), dar pe AN/LUNA proprii notei - do_modifica limiteaza editarea la luna curenta de lucru
|
||||||
|
* (comun.vc2:2265-2268), iar notele de test nu sunt toate in luna curenta.
|
||||||
|
*
|
||||||
|
* Editarea NNIR se simuleaza ca un utilizator: pozitionare pe rand, declansarea evenimentelor
|
||||||
|
* reale ale coloanei (When la intrare, LostFocus la iesire - textboxul nu comite valoarea in
|
||||||
|
* ControlSource inainte de Valid, de-aia implementarea sincronizeaza pe LostFocus), NU apel
|
||||||
|
* direct al metodei de sincronizare. Salvarea (Termin) replica blocul din
|
||||||
|
* afisjurcom.do_modifica (comun.vc2:2456-2487): oscrie_in_fisiere + pack_contafin.
|
||||||
|
* finalizeaza_modificare_nota. Termin reatribuie COD nou (pack_contafin), sub AN/LUNA de sesiune
|
||||||
|
* curenta - nu pastreaza COD-ul original; verificarea si curatenia de dupa salvare se fac dupa
|
||||||
|
* valoarea NNIR marcaj (nu poate coincide cu date reale), marcand sters=1 (conventia aplicatiei)
|
||||||
|
* orice a ajuns sub acea valoare - nota originala (COD/NNIR vechi) ramane intacta.
|
||||||
|
*
|
||||||
|
* Rulare headless (nu tine VFP IDE deschis; nu rula cu roagest.exe pornit):
|
||||||
|
* & "C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe" -A -T ;
|
||||||
|
* "D:\ROA\ROAGEST\COMUN\utile\Teste\nnir_registru_jurnal\test_nnir_sincronizare.prg"
|
||||||
|
* Timeout recomandat: minim 220s. Log: %TEMP%\test_nnir_sincronizare_log.txt (PASS/FAIL pe linie).
|
||||||
|
|
||||||
|
LPARAMETERS tcMode
|
||||||
|
tcMode = IIF(EMPTY(tcMode), 'ALL', UPPER(ALLTRIM(tcMode)))
|
||||||
|
|
||||||
|
SET SAFETY OFF
|
||||||
|
SET TALK OFF
|
||||||
|
|
||||||
|
PUBLIC gcLogFile, gnFail, gnPass
|
||||||
|
gcLogFile = ADDBS(SYS(2023)) + 'test_nnir_sincronizare_log.txt'
|
||||||
|
gnFail = 0
|
||||||
|
gnPass = 0
|
||||||
|
STRTOFILE('START ' + tcMode + ' ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcLogFile)
|
||||||
|
|
||||||
|
ON ERROR DO NnirErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
||||||
|
ON SHUTDOWN QUIT
|
||||||
|
|
||||||
|
* mock amessagebox incarcat INAINTE de mediul aplicatiei: optiuni_firma (in mediul de test)
|
||||||
|
* poate afisa un dialog real daca SCRIE_OPTIUNI raporteaza eroare
|
||||||
|
SET PROCEDURE TO D:\ROA\ROAGEST\COMUN\utile\Teste\mock_amessagebox.prg ADDITIVE
|
||||||
|
DO D:\ROA\ROAGEST\COMUN\utile\Teste\test_init_env_auto_roagest.prg WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
||||||
|
IF gnHandle <= 0
|
||||||
|
DO NnirLog WITH 'EROARE: conectare Oracle esuata'
|
||||||
|
DO NnirLog WITH 'REZULTAT SUITA: NEDETERMINAT'
|
||||||
|
QUIT
|
||||||
|
ENDIF
|
||||||
|
DO NnirLog WITH 'mediu OK, gnAn=' + TRANSFORM(gnAn) + ' gnLuna=' + TRANSFORM(gnLuna)
|
||||||
|
|
||||||
|
* garda anti-blocaj: o variabila lipsa folosita ca ?param intr-un SQL pass-through NU da eroare
|
||||||
|
* catchabila - VFP deschide dialogul modal nativ "Enter the value for <var>", care blocheaza
|
||||||
|
* headless-ul la nesfarsit si nu lasa nimic in log (vezi date_test_nnir.md). Verificare
|
||||||
|
* explicita INAINTE de orice apel care le foloseste, opreste testul cu FAIL clar daca lipseste ceva.
|
||||||
|
IF !NnirGardaVariabile()
|
||||||
|
DO NnirLog WITH 'REZULTAT SUITA: NEDETERMINAT (garda variabile a picat)'
|
||||||
|
QUIT
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
* mock amessagebox - se incarca ULTIMUL (dupa fisierele aplicatiei), vezi antetul mock-ului
|
||||||
|
SET PROCEDURE TO D:\ROA\ROAGEST\COMUN\utile\Teste\mock_amessagebox.prg ADDITIVE
|
||||||
|
|
||||||
|
* Grid1.Column63 (explicatie TVA pe rulaje) face Seek pe alias 'crsJtvaTemp' la CONSTRUCTIA
|
||||||
|
* formularului (inainte de Init) - fara cursorul deschis, CREATEOBJECT('frm_modific2024',...)
|
||||||
|
* pica cu "File 'crsjtvatemp.dbf' does not exist"
|
||||||
|
update_jtva_coloane('', 'crsJtvaTemp', 6)
|
||||||
|
|
||||||
|
LOCAL Omodif, lcCallWhen, lcCallLostFocus, lcCall
|
||||||
|
|
||||||
|
*=====================================================================================
|
||||||
|
* Scenariul 1: NIR/achizitie, cu rulaje in RUL, cu salvare (Termin) + verificare Oracle
|
||||||
|
*=====================================================================================
|
||||||
|
IF INLIST(tcMode, 'ALL', 'NIR')
|
||||||
|
LOCAL lnCod, lnAn, lnLuna, lnIdSet, lnNnirVechi, lnNnirNou
|
||||||
|
LOCAL lnCntTactVechi, lnCntTrulVechi, lnCntTactNou, lnCntTrulNou
|
||||||
|
LOCAL i, llGasit, lnColOrder, llReadOnly, lnColCheck, lcColName
|
||||||
|
|
||||||
|
lnCod = 1140841
|
||||||
|
lnAn = 2026
|
||||||
|
lnLuna = 7
|
||||||
|
lnIdSet = 209
|
||||||
|
lnNnirVechi = 3
|
||||||
|
lnNnirNou = lnNnirVechi + 90000000
|
||||||
|
|
||||||
|
DO NnirConstruiesteCursoare WITH lnCod, lnAn, lnLuna
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
lnCntTactVechi = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirVechi TO lnCntTactVechi
|
||||||
|
SELECT trul
|
||||||
|
lnCntTrulVechi = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirVechi TO lnCntTrulVechi
|
||||||
|
|
||||||
|
Omodif = CREATEOBJECT('frm_modific2024', lnIdSet)
|
||||||
|
IF VARTYPE(Omodif) <> 'O'
|
||||||
|
DO NnirAssert WITH 'instantiere', 'NIR', .F., 'frm_modific2024 nu s-a instantiat'
|
||||||
|
ELSE
|
||||||
|
SELECT tact
|
||||||
|
Omodif.grid1.SetFocus
|
||||||
|
Omodif.gridextra1.setup()
|
||||||
|
Omodif.CalculeazaTotal()
|
||||||
|
|
||||||
|
llGasit = .F.
|
||||||
|
lnColOrder = 0
|
||||||
|
llReadOnly = .T.
|
||||||
|
lnColCheck = 0
|
||||||
|
FOR i = 1 TO Omodif.grid1.ColumnCount
|
||||||
|
lcColName = 'Omodif.grid1.Columns(' + TRANSFORM(i) + ')'
|
||||||
|
IF NnirEsteColoanaNnir(EVALUATE(lcColName + '.ControlSource'))
|
||||||
|
llGasit = .T.
|
||||||
|
lnColOrder = EVALUATE(lcColName + '.ColumnOrder')
|
||||||
|
llReadOnly = EVALUATE(lcColName + '.ReadOnly')
|
||||||
|
lnColCheck = i
|
||||||
|
ENDIF
|
||||||
|
ENDFOR
|
||||||
|
DO NnirAssert WITH 'coloana_grid', 'NIR', llGasit, 'ControlSource=nnir gasit=' + ;
|
||||||
|
TRANSFORM(llGasit) + ' ColumnOrder=' + TRANSFORM(lnColOrder) + ' ReadOnly=' + TRANSFORM(llReadOnly)
|
||||||
|
|
||||||
|
IF llGasit
|
||||||
|
DO NnirAssert WITH 'coloana_editabila', 'NIR', !llReadOnly, 'nota normala: ReadOnly asteptat .F.'
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
LOCATE FOR NVL(nnir,0) = lnNnirVechi
|
||||||
|
IF FOUND()
|
||||||
|
lcCallWhen = 'Omodif.grid1.Columns(' + TRANSFORM(lnColCheck) + ').Text1.When'
|
||||||
|
&lcCallWhen
|
||||||
|
REPLACE nnir WITH lnNnirNou
|
||||||
|
lcCallLostFocus = 'Omodif.grid1.Columns(' + TRANSFORM(lnColCheck) + ').Text1.LostFocus'
|
||||||
|
&lcCallLostFocus
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
lnCntTactNou = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirNou TO lnCntTactNou
|
||||||
|
DO NnirAssert WITH 'sync_tact', 'NIR', lnCntTactNou = lnCntTactVechi, ;
|
||||||
|
TRANSFORM(lnCntTactNou) + ' randuri tact cu nnir nou (asteptat ' + TRANSFORM(lnCntTactVechi) + ')'
|
||||||
|
|
||||||
|
* trul = cursorul legat de pgfArticole.page1.grdRulaje (RecordSource) - verificare
|
||||||
|
* explicita ca propagarea se vede in cursorul de rulaje, nu doar in tact
|
||||||
|
SELECT trul
|
||||||
|
lnCntTrulNou = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirNou TO lnCntTrulNou
|
||||||
|
DO NnirAssert WITH 'sync_trul', 'NIR', lnCntTrulNou = lnCntTrulVechi, ;
|
||||||
|
TRANSFORM(lnCntTrulNou) + ' randuri trul (grid rulaje) cu nnir nou (asteptat ' + TRANSFORM(lnCntTrulVechi) + ')'
|
||||||
|
ELSE
|
||||||
|
DO NnirAssert WITH 'locate_rand_vechi', 'NIR', .F., 'nu s-a gasit randul cu nnir vechi in tact'
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
DO NnirVerificaOracleNeschimbat WITH lnCod, lnNnirVechi, 'NIR'
|
||||||
|
|
||||||
|
Omodif.Release()
|
||||||
|
Omodif = NULL
|
||||||
|
DO NnirSalveazaSiVerifica WITH lnCod, lnAn, lnLuna, lnIdSet, lnNnirVechi, lnNnirNou, 'NIR'
|
||||||
|
ENDIF
|
||||||
|
DO NnirCurataCursoare
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
*=====================================================================================
|
||||||
|
* Scenariul 2: obiecte de inventar, cu rulaje in RUL_OBINV, cu salvare + verificare Oracle
|
||||||
|
*=====================================================================================
|
||||||
|
IF INLIST(tcMode, 'ALL', 'OBINV')
|
||||||
|
LOCAL lnCod2, lnAn2, lnLuna2, lnIdSet2, lnNnirVechi2, lnNnirNou2
|
||||||
|
LOCAL lnCntTactVechi2, lnCntRobinvVechi2, lnCntTactNou2, lnCntRobinvNou2
|
||||||
|
LOCAL i2, llGasit2, lnColOrder2, llReadOnly2, lnColCheck2, lcColName2
|
||||||
|
|
||||||
|
lnCod2 = 1140835
|
||||||
|
lnAn2 = 2026
|
||||||
|
lnLuna2 = 6
|
||||||
|
lnIdSet2 = 211
|
||||||
|
lnNnirVechi2 = 2026060001
|
||||||
|
lnNnirNou2 = lnNnirVechi2 + 90000000
|
||||||
|
|
||||||
|
DO NnirConstruiesteCursoare WITH lnCod2, lnAn2, lnLuna2
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
lnCntTactVechi2 = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirVechi2 TO lnCntTactVechi2
|
||||||
|
SELECT trul_obinv
|
||||||
|
lnCntRobinvVechi2 = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirVechi2 TO lnCntRobinvVechi2
|
||||||
|
|
||||||
|
Omodif = CREATEOBJECT('frm_modific2024', lnIdSet2)
|
||||||
|
IF VARTYPE(Omodif) <> 'O'
|
||||||
|
DO NnirAssert WITH 'instantiere', 'OBINV', .F., 'frm_modific2024 nu s-a instantiat'
|
||||||
|
ELSE
|
||||||
|
SELECT tact
|
||||||
|
Omodif.grid1.SetFocus
|
||||||
|
Omodif.gridextra1.setup()
|
||||||
|
Omodif.CalculeazaTotal()
|
||||||
|
|
||||||
|
llGasit2 = .F.
|
||||||
|
lnColOrder2 = 0
|
||||||
|
llReadOnly2 = .T.
|
||||||
|
lnColCheck2 = 0
|
||||||
|
FOR i2 = 1 TO Omodif.grid1.ColumnCount
|
||||||
|
lcColName2 = 'Omodif.grid1.Columns(' + TRANSFORM(i2) + ')'
|
||||||
|
IF NnirEsteColoanaNnir(EVALUATE(lcColName2 + '.ControlSource'))
|
||||||
|
llGasit2 = .T.
|
||||||
|
lnColOrder2 = EVALUATE(lcColName2 + '.ColumnOrder')
|
||||||
|
llReadOnly2 = EVALUATE(lcColName2 + '.ReadOnly')
|
||||||
|
lnColCheck2 = i2
|
||||||
|
ENDIF
|
||||||
|
ENDFOR
|
||||||
|
DO NnirAssert WITH 'coloana_grid', 'OBINV', llGasit2, 'ControlSource=nnir gasit=' + ;
|
||||||
|
TRANSFORM(llGasit2) + ' ColumnOrder=' + TRANSFORM(lnColOrder2) + ' ReadOnly=' + TRANSFORM(llReadOnly2)
|
||||||
|
|
||||||
|
IF llGasit2
|
||||||
|
SELECT tact
|
||||||
|
LOCATE FOR NVL(nnir,0) = lnNnirVechi2
|
||||||
|
IF FOUND()
|
||||||
|
lcCallWhen = 'Omodif.grid1.Columns(' + TRANSFORM(lnColCheck2) + ').Text1.When'
|
||||||
|
&lcCallWhen
|
||||||
|
REPLACE nnir WITH lnNnirNou2
|
||||||
|
lcCallLostFocus = 'Omodif.grid1.Columns(' + TRANSFORM(lnColCheck2) + ').Text1.LostFocus'
|
||||||
|
&lcCallLostFocus
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
lnCntTactNou2 = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirNou2 TO lnCntTactNou2
|
||||||
|
DO NnirAssert WITH 'sync_tact', 'OBINV', lnCntTactNou2 = lnCntTactVechi2, ;
|
||||||
|
TRANSFORM(lnCntTactNou2) + ' randuri tact cu nnir nou (asteptat ' + TRANSFORM(lnCntTactVechi2) + ')'
|
||||||
|
|
||||||
|
SELECT trul_obinv
|
||||||
|
lnCntRobinvNou2 = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirNou2 TO lnCntRobinvNou2
|
||||||
|
DO NnirAssert WITH 'sync_trul_obinv', 'OBINV', lnCntRobinvNou2 = lnCntRobinvVechi2, ;
|
||||||
|
TRANSFORM(lnCntRobinvNou2) + ' randuri trul_obinv cu nnir nou (asteptat ' + TRANSFORM(lnCntRobinvVechi2) + ')'
|
||||||
|
ELSE
|
||||||
|
DO NnirAssert WITH 'locate_rand_vechi', 'OBINV', .F., 'nu s-a gasit randul cu nnir vechi in tact'
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
Omodif.Release()
|
||||||
|
Omodif = NULL
|
||||||
|
DO NnirSalveazaSiVerificaObinv WITH lnCod2, lnAn2, lnLuna2, lnIdSet2, lnNnirVechi2, lnNnirNou2
|
||||||
|
ENDIF
|
||||||
|
DO NnirCurataCursoare
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
*=====================================================================================
|
||||||
|
* Scenariul 3: nota fara rulaje - regresie (nu crapa), cu salvare + verificare Oracle
|
||||||
|
*=====================================================================================
|
||||||
|
IF INLIST(tcMode, 'ALL', 'FARARUL')
|
||||||
|
LOCAL lnCod3, lnAn3, lnLuna3, lnIdSet3, lnNnirVechi3, lnNnirNou3
|
||||||
|
LOCAL lnCntTactVechi3, lnCntTactNou3
|
||||||
|
LOCAL i3, llGasit3, lnColCheck3, lcColName3
|
||||||
|
|
||||||
|
lnCod3 = 1140848
|
||||||
|
lnAn3 = 2026
|
||||||
|
lnLuna3 = 7
|
||||||
|
lnIdSet3 = 209
|
||||||
|
lnNnirVechi3 = 124
|
||||||
|
lnNnirNou3 = lnNnirVechi3 + 90000000
|
||||||
|
|
||||||
|
DO NnirConstruiesteCursoare WITH lnCod3, lnAn3, lnLuna3
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
lnCntTactVechi3 = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirVechi3 TO lnCntTactVechi3
|
||||||
|
|
||||||
|
Omodif = CREATEOBJECT('frm_modific2024', lnIdSet3)
|
||||||
|
IF VARTYPE(Omodif) <> 'O'
|
||||||
|
DO NnirAssert WITH 'instantiere', 'FARARUL', .F., 'frm_modific2024 nu s-a instantiat'
|
||||||
|
ELSE
|
||||||
|
SELECT tact
|
||||||
|
Omodif.grid1.SetFocus
|
||||||
|
Omodif.gridextra1.setup()
|
||||||
|
Omodif.CalculeazaTotal()
|
||||||
|
|
||||||
|
llGasit3 = .F.
|
||||||
|
lnColCheck3 = 0
|
||||||
|
FOR i3 = 1 TO Omodif.grid1.ColumnCount
|
||||||
|
lcColName3 = 'Omodif.grid1.Columns(' + TRANSFORM(i3) + ')'
|
||||||
|
IF NnirEsteColoanaNnir(EVALUATE(lcColName3 + '.ControlSource'))
|
||||||
|
llGasit3 = .T.
|
||||||
|
lnColCheck3 = i3
|
||||||
|
ENDIF
|
||||||
|
ENDFOR
|
||||||
|
DO NnirAssert WITH 'coloana_grid', 'FARARUL', llGasit3, 'ControlSource=nnir gasit=' + TRANSFORM(llGasit3)
|
||||||
|
|
||||||
|
IF llGasit3
|
||||||
|
SELECT tact
|
||||||
|
LOCATE FOR NVL(nnir,0) = lnNnirVechi3
|
||||||
|
IF FOUND()
|
||||||
|
lcCallWhen = 'Omodif.grid1.Columns(' + TRANSFORM(lnColCheck3) + ').Text1.When'
|
||||||
|
&lcCallWhen
|
||||||
|
REPLACE nnir WITH lnNnirNou3
|
||||||
|
lcCallLostFocus = 'Omodif.grid1.Columns(' + TRANSFORM(lnColCheck3) + ').Text1.LostFocus'
|
||||||
|
&lcCallLostFocus
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
lnCntTactNou3 = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirNou3 TO lnCntTactNou3
|
||||||
|
DO NnirAssert WITH 'sync_tact', 'FARARUL', lnCntTactNou3 = lnCntTactVechi3, ;
|
||||||
|
TRANSFORM(lnCntTactNou3) + ' randuri tact cu nnir nou (asteptat ' + TRANSFORM(lnCntTactVechi3) + ')'
|
||||||
|
DO NnirAssert WITH 'nu_crapa', 'FARARUL', .T., 'editarea pe nota fara rulaje nu a generat eroare'
|
||||||
|
ELSE
|
||||||
|
DO NnirAssert WITH 'locate_rand_vechi', 'FARARUL', .F., 'nu s-a gasit randul cu nnir vechi in tact'
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
Omodif.Release()
|
||||||
|
Omodif = NULL
|
||||||
|
DO NnirSalveazaSiVerifica WITH lnCod3, lnAn3, lnLuna3, lnIdSet3, lnNnirVechi3, lnNnirNou3, 'FARARUL'
|
||||||
|
ENDIF
|
||||||
|
DO NnirCurataCursoare
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
*=====================================================================================
|
||||||
|
* Scenariul 4: nota de inventar (id_set=90101) - regresie blocare editare NNIR
|
||||||
|
*=====================================================================================
|
||||||
|
IF INLIST(tcMode, 'ALL', 'INVENTAR')
|
||||||
|
LOCAL lnCod4, lnAn4, lnLuna4, lnIdSet4
|
||||||
|
LOCAL i4, llGasit4, llReadOnly4, lcColName4
|
||||||
|
|
||||||
|
lnCod4 = 1140716
|
||||||
|
lnAn4 = 2026
|
||||||
|
lnLuna4 = 3
|
||||||
|
lnIdSet4 = 90101
|
||||||
|
|
||||||
|
DO NnirConstruiesteCursoare WITH lnCod4, lnAn4, lnLuna4
|
||||||
|
|
||||||
|
Omodif = CREATEOBJECT('frm_modific2024', lnIdSet4)
|
||||||
|
IF VARTYPE(Omodif) <> 'O'
|
||||||
|
DO NnirAssert WITH 'instantiere', 'INVENTAR', .F., 'frm_modific2024 nu s-a instantiat'
|
||||||
|
ELSE
|
||||||
|
SELECT tact
|
||||||
|
Omodif.grid1.SetFocus
|
||||||
|
Omodif.gridextra1.setup()
|
||||||
|
Omodif.CalculeazaTotal()
|
||||||
|
|
||||||
|
llGasit4 = .F.
|
||||||
|
llReadOnly4 = .F.
|
||||||
|
FOR i4 = 1 TO Omodif.grid1.ColumnCount
|
||||||
|
lcColName4 = 'Omodif.grid1.Columns(' + TRANSFORM(i4) + ')'
|
||||||
|
IF NnirEsteColoanaNnir(EVALUATE(lcColName4 + '.ControlSource'))
|
||||||
|
llGasit4 = .T.
|
||||||
|
llReadOnly4 = EVALUATE(lcColName4 + '.ReadOnly')
|
||||||
|
ENDIF
|
||||||
|
ENDFOR
|
||||||
|
DO NnirAssert WITH 'coloana_grid', 'INVENTAR', llGasit4, 'ControlSource=nnir gasit=' + TRANSFORM(llGasit4)
|
||||||
|
IF llGasit4
|
||||||
|
* nu se incearca editarea - doar se verifica blocarea, ca sa nu se altereze o nota
|
||||||
|
* reala de inventar cat timp blocarea nu e implementata
|
||||||
|
DO NnirAssert WITH 'coloana_blocata', 'INVENTAR', llReadOnly4, ;
|
||||||
|
'id_set=90101: ReadOnly asteptat .T., gasit ' + TRANSFORM(llReadOnly4)
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
Omodif.Release()
|
||||||
|
Omodif = NULL
|
||||||
|
ENDIF
|
||||||
|
DO NnirCurataCursoare
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
*=====================================================================================
|
||||||
|
* Scenariul 5: stergere NNIR (-> 0) pe randul unei note cu rulaje - propagare la 0.
|
||||||
|
* Comportament nou (runda 4): garda EMPTY(NVL(tnNnirNou,0)) eliminata din sincronizeaza_nnir,
|
||||||
|
* ramane doar egalitatea - stergerea celulei (0 scris pe rand inainte de LostFocus) trebuie sa
|
||||||
|
* se propage la toate liniile cu valoarea veche, nu doar schimbarile intre doua valori nenule.
|
||||||
|
* Doar la nivel de cursoare (tact/trul) - nu se salveaza in Oracle.
|
||||||
|
*=====================================================================================
|
||||||
|
IF INLIST(tcMode, 'ALL', 'ZERO')
|
||||||
|
LOCAL lnCodZ, lnAnZ, lnLunaZ, lnIdSetZ, lnNnirVechiZ
|
||||||
|
LOCAL lnCntTactVechiZ, lnCntTrulVechiZ, lnCntTactRamasVechiZ, lnCntTrulRamasVechiZ
|
||||||
|
LOCAL lnCntTactZeroZ, lnCntTrulZeroZ
|
||||||
|
LOCAL iz, llGasitZ, lnColCheckZ, lcColNameZ
|
||||||
|
|
||||||
|
lnCodZ = 1140841
|
||||||
|
lnAnZ = 2026
|
||||||
|
lnLunaZ = 7
|
||||||
|
lnIdSetZ = 209
|
||||||
|
lnNnirVechiZ = 3
|
||||||
|
|
||||||
|
DO NnirConstruiesteCursoare WITH lnCodZ, lnAnZ, lnLunaZ
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
lnCntTactVechiZ = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirVechiZ TO lnCntTactVechiZ
|
||||||
|
SELECT trul
|
||||||
|
lnCntTrulVechiZ = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirVechiZ TO lnCntTrulVechiZ
|
||||||
|
|
||||||
|
Omodif = CREATEOBJECT('frm_modific2024', lnIdSetZ)
|
||||||
|
IF VARTYPE(Omodif) <> 'O'
|
||||||
|
DO NnirAssert WITH 'instantiere', 'ZERO', .F., 'frm_modific2024 nu s-a instantiat'
|
||||||
|
ELSE
|
||||||
|
SELECT tact
|
||||||
|
Omodif.grid1.SetFocus
|
||||||
|
Omodif.gridextra1.setup()
|
||||||
|
Omodif.CalculeazaTotal()
|
||||||
|
|
||||||
|
llGasitZ = .F.
|
||||||
|
lnColCheckZ = 0
|
||||||
|
FOR iz = 1 TO Omodif.grid1.ColumnCount
|
||||||
|
lcColNameZ = 'Omodif.grid1.Columns(' + TRANSFORM(iz) + ')'
|
||||||
|
IF NnirEsteColoanaNnir(EVALUATE(lcColNameZ + '.ControlSource'))
|
||||||
|
llGasitZ = .T.
|
||||||
|
lnColCheckZ = iz
|
||||||
|
ENDIF
|
||||||
|
ENDFOR
|
||||||
|
DO NnirAssert WITH 'coloana_grid', 'ZERO', llGasitZ, 'ControlSource=nnir gasit=' + TRANSFORM(llGasitZ)
|
||||||
|
|
||||||
|
IF llGasitZ
|
||||||
|
SELECT tact
|
||||||
|
LOCATE FOR NVL(nnir,0) = lnNnirVechiZ
|
||||||
|
IF FOUND()
|
||||||
|
lcCallWhen = 'Omodif.grid1.Columns(' + TRANSFORM(lnColCheckZ) + ').Text1.When'
|
||||||
|
&lcCallWhen
|
||||||
|
* simuleaza stergerea celulei: utilizatorul goleste campul, valoarea ajunge 0
|
||||||
|
REPLACE nnir WITH 0
|
||||||
|
lcCallLostFocus = 'Omodif.grid1.Columns(' + TRANSFORM(lnColCheckZ) + ').Text1.LostFocus'
|
||||||
|
&lcCallLostFocus
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
lnCntTactRamasVechiZ = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirVechiZ TO lnCntTactRamasVechiZ
|
||||||
|
lnCntTactZeroZ = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = 0 TO lnCntTactZeroZ
|
||||||
|
DO NnirAssert WITH 'sync_tact_zero', 'ZERO', lnCntTactRamasVechiZ = 0 AND lnCntTactZeroZ >= lnCntTactVechiZ, ;
|
||||||
|
TRANSFORM(lnCntTactRamasVechiZ) + ' randuri tact au ramas pe valoarea veche (asteptat 0), ' + ;
|
||||||
|
TRANSFORM(lnCntTactZeroZ) + ' au ajuns la 0 (asteptat cel putin ' + TRANSFORM(lnCntTactVechiZ) + ')'
|
||||||
|
|
||||||
|
* verificare explicita in cursorul legat de grid-ul de rulaje (pgfArticole.page1.grdRulaje)
|
||||||
|
SELECT trul
|
||||||
|
lnCntTrulRamasVechiZ = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = lnNnirVechiZ TO lnCntTrulRamasVechiZ
|
||||||
|
lnCntTrulZeroZ = 0
|
||||||
|
COUNT FOR NVL(nnir,0) = 0 TO lnCntTrulZeroZ
|
||||||
|
DO NnirAssert WITH 'sync_trul_zero', 'ZERO', lnCntTrulRamasVechiZ = 0 AND lnCntTrulZeroZ >= lnCntTrulVechiZ, ;
|
||||||
|
TRANSFORM(lnCntTrulRamasVechiZ) + ' randuri trul au ramas pe valoarea veche (asteptat 0), ' + ;
|
||||||
|
TRANSFORM(lnCntTrulZeroZ) + ' au ajuns la 0 (asteptat cel putin ' + TRANSFORM(lnCntTrulVechiZ) + ')'
|
||||||
|
ELSE
|
||||||
|
DO NnirAssert WITH 'locate_rand_vechi', 'ZERO', .F., 'nu s-a gasit randul cu nnir vechi in tact'
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
Omodif.Release()
|
||||||
|
Omodif = NULL
|
||||||
|
ENDIF
|
||||||
|
DO NnirCurataCursoare
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
*=====================================================================================
|
||||||
|
* Scenariul 6: nota de inventar (id_set=90101) pe sucursala CURENTA - blocarea NNIR trebuie sa
|
||||||
|
* vina din regula 90101, nu din blocarea pe sucursala din AfterRowColChange. Scenariul 4 ruleaza
|
||||||
|
* pe o nota din alta sucursala, unde SetAll("ReadOnly",.T.) blocheaza oricum tot gridul, deci ar
|
||||||
|
* trece si fara implementare. Aici gnIdSucursala se aliniaza la id_sucursala notei (llReadOnly
|
||||||
|
* iese .F.), se declanseaza AfterRowColChange (care face SetAll dupa Init) si se verifica ca
|
||||||
|
* Column44 ramane blocata cat timp restul coloanelor sunt editabile.
|
||||||
|
*=====================================================================================
|
||||||
|
IF INLIST(tcMode, 'ALL', 'INVENTAR2')
|
||||||
|
LOCAL lnCod6, lnAn6, lnLuna6, lnIdSet6
|
||||||
|
LOCAL i6, llGasit6, llReadOnly6, lnEditabile6, lnSucVechi6, llMamaVechi6
|
||||||
|
LOCAL lnIdSucNota6, lcColName6
|
||||||
|
|
||||||
|
lnCod6 = 1140716
|
||||||
|
lnAn6 = 2026
|
||||||
|
lnLuna6 = 3
|
||||||
|
lnIdSet6 = 90101
|
||||||
|
|
||||||
|
DO NnirConstruiesteCursoare WITH lnCod6, lnAn6, lnLuna6
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
GO TOP
|
||||||
|
lnIdSucNota6 = NVL(tact.id_sucursala, 0)
|
||||||
|
lnSucVechi6 = gnIdSucursala
|
||||||
|
llMamaVechi6 = glEMama
|
||||||
|
gnIdSucursala = lnIdSucNota6
|
||||||
|
glEMama = .F.
|
||||||
|
|
||||||
|
Omodif = CREATEOBJECT('frm_modific2024', lnIdSet6)
|
||||||
|
IF VARTYPE(Omodif) <> 'O'
|
||||||
|
DO NnirAssert WITH 'instantiere', 'INVENTAR2', .F., 'frm_modific2024 nu s-a instantiat'
|
||||||
|
ELSE
|
||||||
|
SELECT tact
|
||||||
|
GO TOP
|
||||||
|
Omodif.grid1.SetFocus
|
||||||
|
Omodif.gridextra1.setup()
|
||||||
|
Omodif.CalculeazaTotal()
|
||||||
|
|
||||||
|
* AfterRowColChange face SetAll("ReadOnly", llReadOnly) peste blocarea pusa in Init
|
||||||
|
Omodif.grid1.AfterRowColChange(1)
|
||||||
|
|
||||||
|
llGasit6 = .F.
|
||||||
|
llReadOnly6 = .F.
|
||||||
|
lnEditabile6 = 0
|
||||||
|
FOR i6 = 1 TO Omodif.grid1.ColumnCount
|
||||||
|
lcColName6 = 'Omodif.grid1.Columns(' + TRANSFORM(i6) + ')'
|
||||||
|
IF NnirEsteColoanaNnir(EVALUATE(lcColName6 + '.ControlSource'))
|
||||||
|
llGasit6 = .T.
|
||||||
|
llReadOnly6 = EVALUATE(lcColName6 + '.ReadOnly')
|
||||||
|
ELSE
|
||||||
|
IF !EVALUATE(lcColName6 + '.ReadOnly')
|
||||||
|
lnEditabile6 = lnEditabile6 + 1
|
||||||
|
ENDIF
|
||||||
|
ENDIF
|
||||||
|
ENDFOR
|
||||||
|
|
||||||
|
DO NnirAssert WITH 'coloana_grid', 'INVENTAR2', llGasit6, 'ControlSource=nnir gasit=' + TRANSFORM(llGasit6)
|
||||||
|
* control: daca gridul e blocat integral, testul de blocare NNIR nu dovedeste nimic
|
||||||
|
DO NnirAssert WITH 'grid_editabil', 'INVENTAR2', lnEditabile6 > 0, ;
|
||||||
|
'coloane editabile (fara nnir): ' + TRANSFORM(lnEditabile6) + ' (asteptat > 0, ' + ;
|
||||||
|
'gnIdSucursala=' + TRANSFORM(lnIdSucNota6) + ')'
|
||||||
|
IF llGasit6
|
||||||
|
DO NnirAssert WITH 'coloana_blocata', 'INVENTAR2', llReadOnly6, ;
|
||||||
|
'id_set=90101 pe sucursala curenta: ReadOnly asteptat .T., gasit ' + TRANSFORM(llReadOnly6)
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
Omodif.Release()
|
||||||
|
Omodif = NULL
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
gnIdSucursala = lnSucVechi6
|
||||||
|
glEMama = llMamaVechi6
|
||||||
|
DO NnirCurataCursoare
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
DO NnirLog WITH 'REZULTAT SUITA: ' + TRANSFORM(gnPass) + ' PASS, ' + TRANSFORM(gnFail) + ' FAIL'
|
||||||
|
QUIT
|
||||||
|
|
||||||
|
*=====================================================================================
|
||||||
|
* proceduri ajutatoare (fara CREATEOBJECT - vezi depanare_testare_vfp.md / capcana l:
|
||||||
|
* CREATEOBJECT apelat dintr-o procedura se comporta gresit in acest runtime headless)
|
||||||
|
*=====================================================================================
|
||||||
|
|
||||||
|
PROCEDURE NnirLog
|
||||||
|
LPARAMETERS tcMsg
|
||||||
|
STRTOFILE(tcMsg + CHR(13)+CHR(10), gcLogFile, 1)
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
PROCEDURE NnirAssert
|
||||||
|
LPARAMETERS tcPas, tcCaz, llOk, tcDetaliu
|
||||||
|
LOCAL lcRez
|
||||||
|
lcRez = IIF(llOk, 'PASS', 'FAIL')
|
||||||
|
IF llOk
|
||||||
|
gnPass = gnPass + 1
|
||||||
|
ELSE
|
||||||
|
gnFail = gnFail + 1
|
||||||
|
ENDIF
|
||||||
|
DO NnirLog WITH lcRez + ' [' + tcCaz + '/' + tcPas + '] ' + tcDetaliu
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
PROCEDURE NnirErr
|
||||||
|
LPARAMETERS tnErr, tcMsg, tcProg, tnLine
|
||||||
|
DO NnirLog WITH 'ERR ' + TRANSFORM(tnErr) + ' [' + tcProg + ':' + TRANSFORM(tnLine) + '] ' + tcMsg
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
* verifica ca toate variabilele folosite ca ?param in SQL pass-through pe calea de test (env-init,
|
||||||
|
* optiuni_firma, oscrie_in_fisiere, pack_contafin/pack_sesiune) sunt definite - o variabila
|
||||||
|
* PUBLIC lipsa/umbrita da direct dialogul modal "Enter the value for <var>", nu o eroare catchabila
|
||||||
|
FUNCTION NnirGardaVariabile
|
||||||
|
LOCAL laVar(9), i, llOk
|
||||||
|
laVar(1) = 'gnIdUtil'
|
||||||
|
laVar(2) = 'gnAn'
|
||||||
|
laVar(3) = 'gnLuna'
|
||||||
|
laVar(4) = 'gnIdFirma'
|
||||||
|
laVar(5) = 'gnIdSucursala'
|
||||||
|
laVar(6) = 'gcS'
|
||||||
|
laVar(7) = 'gnIdProgram'
|
||||||
|
laVar(8) = 'gnId_Prg_Owner'
|
||||||
|
laVar(9) = 'gnHandle'
|
||||||
|
llOk = .T.
|
||||||
|
FOR i = 1 TO ALEN(laVar)
|
||||||
|
IF TYPE(laVar(i)) == 'U'
|
||||||
|
DO NnirLog WITH 'FAIL [garda_variabile] ' + laVar(i) + ' nu exista (TYPE U) - ar fi dat dialog modal "Enter the value"'
|
||||||
|
llOk = .F.
|
||||||
|
ENDIF
|
||||||
|
ENDFOR
|
||||||
|
RETURN llOk
|
||||||
|
ENDFUNC
|
||||||
|
|
||||||
|
* VFP calificat automat ControlSource-ul unui camp simplu cu aliasul cursorului (RecordSource) -
|
||||||
|
* "nnir" definit in sursa apare la runtime ca "tact.nnir" - se accepta ambele forme
|
||||||
|
FUNCTION NnirEsteColoanaNnir
|
||||||
|
LPARAMETERS tcControlSource
|
||||||
|
LOCAL lcCs
|
||||||
|
lcCs = UPPER(ALLTRIM(TRANSFORM(tcControlSource)))
|
||||||
|
RETURN lcCs == 'NNIR' OR RIGHT(lcCs, 5) == '.NNIR'
|
||||||
|
ENDFUNC
|
||||||
|
|
||||||
|
* construieste tact/trul/trul_obinv exact ca afisjurcom.do_modifica (comun.vc2:2352-2434),
|
||||||
|
* dar pe AN/LUNA proprii notei (nu gnAn/gnLuna) - vezi antetul fisierului
|
||||||
|
PROCEDURE NnirConstruiesteCursoare
|
||||||
|
LPARAMETERS tnCod, tnAn, tnLuna
|
||||||
|
LOCAL lcSql, lnSucces
|
||||||
|
|
||||||
|
DO NnirCurataCursoare
|
||||||
|
|
||||||
|
lcSql = [select * from vact_tot where sters = 0 and an = ] + TRANSFORM(tnAn) + ;
|
||||||
|
[ and luna = ] + TRANSFORM(tnLuna) + [ and cod = ] + TRANSFORM(tnCod) + [ order by id_act]
|
||||||
|
lnSucces = goExecutor.oExecute(lcSql, 'v_act')
|
||||||
|
goExecutor.oReset()
|
||||||
|
IF lnSucces < 0
|
||||||
|
DO NnirLog WITH 'EROARE construire tact: ' + goExecutor.cEroare
|
||||||
|
RETURN .F.
|
||||||
|
ENDIF
|
||||||
|
SELECT * FROM v_act INTO CURSOR actactan
|
||||||
|
SELECT .F. AS ales, T.*, CAST(0 AS N(2)) AS tipnota FROM actactan T INTO CURSOR tact READWRITE
|
||||||
|
USE IN v_act
|
||||||
|
|
||||||
|
lcSql = [select * from vrul_tot where sters = 0 and an = ] + TRANSFORM(tnAn) + ;
|
||||||
|
[ and luna = ] + TRANSFORM(tnLuna) + [ and cod = ] + TRANSFORM(tnCod) + [ order by id_rul]
|
||||||
|
goExecutor.oExecute(lcSql, 'v_rul')
|
||||||
|
goExecutor.oReset()
|
||||||
|
SELECT *, valoare + valtva AS valoarectva, valoarev + valtvav AS valoarevctva ;
|
||||||
|
FROM v_rul INTO CURSOR RUL_TEMP READWRITE
|
||||||
|
SELECT * FROM RUL_TEMP INTO CURSOR trul READWRITE
|
||||||
|
USE IN v_rul
|
||||||
|
|
||||||
|
lcSql = [select * from vrul_obinv_tot where sters = 0 and an = ] + TRANSFORM(tnAn) + ;
|
||||||
|
[ and luna = ] + TRANSFORM(tnLuna) + [ and cod = ] + TRANSFORM(tnCod) + [ order by id_rul_obinv]
|
||||||
|
goExecutor.oExecute(lcSql, 'v_rul_obinv')
|
||||||
|
goExecutor.oReset()
|
||||||
|
SELECT *, valoare + valtva AS valoarectva, valoarev + valtvav AS valoarevctva ;
|
||||||
|
FROM v_rul_obinv INTO CURSOR RUL_TEMP_OBINV READWRITE
|
||||||
|
SELECT * FROM RUL_TEMP_OBINV INTO CURSOR trul_obinv READWRITE
|
||||||
|
USE IN v_rul_obinv
|
||||||
|
|
||||||
|
SELECT a.*, IIF(NVL(a.id_jtva_coloana,0)=0,0,1) AS cu_tva FROM tact a INTO CURSOR tact READWRITE
|
||||||
|
SELECT tact
|
||||||
|
GO TOP
|
||||||
|
RETURN .T.
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
PROCEDURE NnirCurataCursoare
|
||||||
|
IF USED('tact')
|
||||||
|
USE IN tact
|
||||||
|
ENDIF
|
||||||
|
IF USED('trul')
|
||||||
|
USE IN trul
|
||||||
|
ENDIF
|
||||||
|
IF USED('trul_obinv')
|
||||||
|
USE IN trul_obinv
|
||||||
|
ENDIF
|
||||||
|
IF USED('actactan')
|
||||||
|
USE IN actactan
|
||||||
|
ENDIF
|
||||||
|
IF USED('rul_temp')
|
||||||
|
USE IN rul_temp
|
||||||
|
ENDIF
|
||||||
|
IF USED('rul_temp_obinv')
|
||||||
|
USE IN rul_temp_obinv
|
||||||
|
ENDIF
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
FUNCTION NnirOraCount
|
||||||
|
LPARAMETERS tcSql
|
||||||
|
LOCAL lnVal, llOk
|
||||||
|
lnVal = -1
|
||||||
|
llOk = goExecutor.oExecuta(tcSql, 'cNnirOraCnt')
|
||||||
|
IF llOk AND USED('cNnirOraCnt') AND RECCOUNT('cNnirOraCnt') > 0
|
||||||
|
lnVal = cNnirOraCnt.cnt
|
||||||
|
ENDIF
|
||||||
|
IF USED('cNnirOraCnt')
|
||||||
|
USE IN cNnirOraCnt
|
||||||
|
ENDIF
|
||||||
|
RETURN lnVal
|
||||||
|
ENDFUNC
|
||||||
|
|
||||||
|
* verifica ca in Oracle nu s-a scris nimic dupa editarea DOAR in cursoare (echivalent Renunt)
|
||||||
|
PROCEDURE NnirVerificaOracleNeschimbat
|
||||||
|
LPARAMETERS tnCod, tnNnirVechi, tcCaz
|
||||||
|
LOCAL lnCnt, lcSql
|
||||||
|
lcSql = [select count(*) cnt from act where cod = ] + TRANSFORM(tnCod) + ;
|
||||||
|
[ and nnir = ] + TRANSFORM(tnNnirVechi)
|
||||||
|
lnCnt = NnirOraCount(lcSql)
|
||||||
|
DO NnirAssert WITH 'renunt_neschimbat', tcCaz, lnCnt > 0, ;
|
||||||
|
'ACT.NNIR in Oracle inainte de Termin ramane ' + TRANSFORM(tnNnirVechi) + ' (' + TRANSFORM(lnCnt) + ' randuri)'
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
* replica blocul de salvare din afisjurcom.do_modifica (comun.vc2:2456-2487): scrie tact/trul/
|
||||||
|
* trul_obinv in ACT/RUL/RUL_OBINV prin oscrie_in_fisiere + pack_contafin.finalizeaza_modificare_
|
||||||
|
* nota, verifica in Oracle, apoi reface valoarea originala (revert - baza de test ramane
|
||||||
|
* neschimbata pentru rulari repetate)
|
||||||
|
PROCEDURE NnirSalveazaSiVerifica
|
||||||
|
LPARAMETERS tnCod, tnAn, tnLuna, tnIdSet, tnNnirVechi, tnNnirNou, tcCaz
|
||||||
|
PRIVATE pnAn, pnLuna, pdDataOra
|
||||||
|
LOCAL lnIdFact, lnIdfactd, llRul, lnSuccesSalvare, lcSqlFin, lnCnt, lcSql
|
||||||
|
|
||||||
|
pnAn = tnAn
|
||||||
|
pnLuna = tnLuna
|
||||||
|
pdDataOra = NULL
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
LOCATE FOR NVL(nnir,0) = tnNnirNou
|
||||||
|
lnIdFact = NVL(id_fact, 0)
|
||||||
|
lnIdfactd = NVL(id_factd, 0)
|
||||||
|
|
||||||
|
llRul = (RECCOUNT('trul') > 0) OR (RECCOUNT('trul_obinv') > 0)
|
||||||
|
|
||||||
|
* thisform.do_deschide_tranzactie()/do_inchide_tranzactie() din afisjurcom (_frm_base.vc2:252-
|
||||||
|
* 305, mostenite, apelate pe formularul de jurnal, nu pe frm_modific2024) - echivalent direct,
|
||||||
|
* fara instanta de forma: manual pe durata scrierii, apoi commit/rollback + revenire pe auto
|
||||||
|
SQLSetProp(gnHandle, 'Transactions', 2)
|
||||||
|
|
||||||
|
* replica exact secventa din afisjurcom.do_modifica: intai STERGE nota veche (COD-ul
|
||||||
|
* original, din actactan neatins de editare), abia apoi SCRIE varianta editata
|
||||||
|
SELECT actactan
|
||||||
|
lnSuccesSalvare = oscrie_in_fisiere(2, .T., llRul)
|
||||||
|
DO NnirAssert WITH 'oscrie_in_fisiere_sterge', tcCaz, lnSuccesSalvare > 0, 'a returnat ' + TRANSFORM(lnSuccesSalvare)
|
||||||
|
|
||||||
|
IF lnSuccesSalvare > 0
|
||||||
|
SELECT * FROM tact INTO CURSOR actactan READWRITE
|
||||||
|
REPLACE ALL id_util WITH gnIdUtil, sters WITH 0 IN actactan
|
||||||
|
|
||||||
|
IF llRul
|
||||||
|
SELECT * FROM trul INTO CURSOR rul_temp READWRITE
|
||||||
|
REPLACE ALL id_util WITH gnIdUtil, sters WITH 0 IN rul_temp
|
||||||
|
SELECT * FROM trul_obinv INTO CURSOR rul_temp_obinv READWRITE
|
||||||
|
REPLACE ALL id_util WITH gnIdUtil, sters WITH 0 IN rul_temp_obinv
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
lnSuccesSalvare = oscrie_in_fisiere(0, .T., llRul)
|
||||||
|
DO NnirAssert WITH 'oscrie_in_fisiere', tcCaz, lnSuccesSalvare > 0, 'a returnat ' + TRANSFORM(lnSuccesSalvare)
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF lnSuccesSalvare > 0
|
||||||
|
lcSqlFin = [begin pack_contafin.finalizeaza_modificare_nota(?pnLuna,?pnAn,?pdDataOra,] + ;
|
||||||
|
TRANSFORM(tnIdSet) + [,] + TRANSFORM(tnCod) + [,] + TRANSFORM(lnIdFact) + [,] + ;
|
||||||
|
TRANSFORM(lnIdfactd) + [,?gnIdUtil); end;]
|
||||||
|
lnSuccesSalvare = IIF(goExecutor.oExecuta(lcSqlFin), 1, -1)
|
||||||
|
DO NnirAssert WITH 'finalizeaza_modificare_nota', tcCaz, lnSuccesSalvare > 0, 'a returnat ' + TRANSFORM(lnSuccesSalvare)
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF lnSuccesSalvare > 0
|
||||||
|
SQLCOMMIT(gnHandle)
|
||||||
|
ELSE
|
||||||
|
SQLROLLBACK(gnHandle)
|
||||||
|
ENDIF
|
||||||
|
SQLSetProp(gnHandle, 'Transactions', 1)
|
||||||
|
|
||||||
|
* Termin reatribuie COD nou (pack_contafin), sub AN/LUNA de sesiune curente - nu pastreaza
|
||||||
|
* COD-ul original notei editate. Verificarea si curatenia se fac dupa valoarea NNIR marcaj
|
||||||
|
* (distincta, nu poate coincide cu date reale), nu dupa COD-ul original.
|
||||||
|
lcSql = [select count(*) cnt from act where sters = 0 and nnir = ] + TRANSFORM(tnNnirNou)
|
||||||
|
lnCnt = NnirOraCount(lcSql)
|
||||||
|
DO NnirAssert WITH 'oracle_act_final', tcCaz, lnCnt > 0, TRANSFORM(lnCnt) + ' randuri ACT cu nnir nou in Oracle'
|
||||||
|
|
||||||
|
IF RECCOUNT('trul') > 0
|
||||||
|
lcSql = [select count(*) cnt from rul where sters = 0 and nnir = ] + TRANSFORM(tnNnirNou)
|
||||||
|
lnCnt = NnirOraCount(lcSql)
|
||||||
|
DO NnirAssert WITH 'oracle_rul_final', tcCaz, lnCnt > 0, TRANSFORM(lnCnt) + ' randuri RUL cu nnir nou in Oracle'
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
* curatenie: pasul STERGE (oscrie_in_fisiere param 2) marcheaza sters=1 pe COD-ul ORIGINAL -
|
||||||
|
* readuc nota originala activa, apoi marchez sters=1 (conventia aplicatiei) pe orice a ajuns
|
||||||
|
* sub NNIR-ul marcaj (COD nou, atribuit de pack_contafin la scriere)
|
||||||
|
goExecutor.oExecuta([update act set sters = 0 where cod = ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta([update rul set sters = 0 where cod = ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta([update rul_obinv set sters = 0 where cod = ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta([update act set sters = 1 where nnir = ] + TRANSFORM(tnNnirNou) + [ and cod <> ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta([update rul set sters = 1 where nnir = ] + TRANSFORM(tnNnirNou) + [ and cod <> ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta([update rul_obinv set sters = 1 where nnir = ] + TRANSFORM(tnNnirNou) + [ and cod <> ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta('commit')
|
||||||
|
ENDPROC
|
||||||
|
|
||||||
|
* varianta pt. scenariul RUL_OBINV (verifica RUL_OBINV in loc de RUL)
|
||||||
|
PROCEDURE NnirSalveazaSiVerificaObinv
|
||||||
|
LPARAMETERS tnCod, tnAn, tnLuna, tnIdSet, tnNnirVechi, tnNnirNou
|
||||||
|
PRIVATE pnAn, pnLuna, pdDataOra
|
||||||
|
LOCAL lnIdFact, lnIdfactd, llRul, lnSuccesSalvare, lcSqlFin, lnCnt, lcSql
|
||||||
|
|
||||||
|
pnAn = tnAn
|
||||||
|
pnLuna = tnLuna
|
||||||
|
pdDataOra = NULL
|
||||||
|
|
||||||
|
SELECT tact
|
||||||
|
LOCATE FOR NVL(nnir,0) = tnNnirNou
|
||||||
|
lnIdFact = NVL(id_fact, 0)
|
||||||
|
lnIdfactd = NVL(id_factd, 0)
|
||||||
|
|
||||||
|
llRul = (RECCOUNT('trul') > 0) OR (RECCOUNT('trul_obinv') > 0)
|
||||||
|
|
||||||
|
* thisform.do_deschide_tranzactie()/do_inchide_tranzactie() din afisjurcom (_frm_base.vc2:252-
|
||||||
|
* 305, mostenite, apelate pe formularul de jurnal, nu pe frm_modific2024) - echivalent direct,
|
||||||
|
* fara instanta de forma: manual pe durata scrierii, apoi commit/rollback + revenire pe auto
|
||||||
|
SQLSetProp(gnHandle, 'Transactions', 2)
|
||||||
|
|
||||||
|
* replica exact secventa din afisjurcom.do_modifica: intai STERGE nota veche (COD-ul
|
||||||
|
* original, din actactan neatins de editare), abia apoi SCRIE varianta editata
|
||||||
|
SELECT actactan
|
||||||
|
lnSuccesSalvare = oscrie_in_fisiere(2, .T., llRul)
|
||||||
|
DO NnirAssert WITH 'oscrie_in_fisiere_sterge', 'OBINV', lnSuccesSalvare > 0, 'a returnat ' + TRANSFORM(lnSuccesSalvare)
|
||||||
|
|
||||||
|
IF lnSuccesSalvare > 0
|
||||||
|
SELECT * FROM tact INTO CURSOR actactan READWRITE
|
||||||
|
REPLACE ALL id_util WITH gnIdUtil, sters WITH 0 IN actactan
|
||||||
|
|
||||||
|
IF llRul
|
||||||
|
SELECT * FROM trul INTO CURSOR rul_temp READWRITE
|
||||||
|
REPLACE ALL id_util WITH gnIdUtil, sters WITH 0 IN rul_temp
|
||||||
|
SELECT * FROM trul_obinv INTO CURSOR rul_temp_obinv READWRITE
|
||||||
|
REPLACE ALL id_util WITH gnIdUtil, sters WITH 0 IN rul_temp_obinv
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
lnSuccesSalvare = oscrie_in_fisiere(0, .T., llRul)
|
||||||
|
DO NnirAssert WITH 'oscrie_in_fisiere', 'OBINV', lnSuccesSalvare > 0, 'a returnat ' + TRANSFORM(lnSuccesSalvare)
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF lnSuccesSalvare > 0
|
||||||
|
lcSqlFin = [begin pack_contafin.finalizeaza_modificare_nota(?pnLuna,?pnAn,?pdDataOra,] + ;
|
||||||
|
TRANSFORM(tnIdSet) + [,] + TRANSFORM(tnCod) + [,] + TRANSFORM(lnIdFact) + [,] + ;
|
||||||
|
TRANSFORM(lnIdfactd) + [,?gnIdUtil); end;]
|
||||||
|
lnSuccesSalvare = IIF(goExecutor.oExecuta(lcSqlFin), 1, -1)
|
||||||
|
DO NnirAssert WITH 'finalizeaza_modificare_nota', 'OBINV', lnSuccesSalvare > 0, 'a returnat ' + TRANSFORM(lnSuccesSalvare)
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF lnSuccesSalvare > 0
|
||||||
|
SQLCOMMIT(gnHandle)
|
||||||
|
ELSE
|
||||||
|
SQLROLLBACK(gnHandle)
|
||||||
|
ENDIF
|
||||||
|
SQLSetProp(gnHandle, 'Transactions', 1)
|
||||||
|
|
||||||
|
* Termin reatribuie COD nou (pack_contafin), sub AN/LUNA de sesiune curente - nu pastreaza
|
||||||
|
* COD-ul original notei editate. Verificarea si curatenia se fac dupa valoarea NNIR marcaj
|
||||||
|
* (distincta, nu poate coincide cu date reale), nu dupa COD-ul original.
|
||||||
|
lcSql = [select count(*) cnt from act where sters = 0 and nnir = ] + TRANSFORM(tnNnirNou)
|
||||||
|
lnCnt = NnirOraCount(lcSql)
|
||||||
|
DO NnirAssert WITH 'oracle_act_final', 'OBINV', lnCnt > 0, TRANSFORM(lnCnt) + ' randuri ACT cu nnir nou in Oracle'
|
||||||
|
|
||||||
|
lcSql = [select count(*) cnt from rul_obinv where sters = 0 and nnir = ] + TRANSFORM(tnNnirNou)
|
||||||
|
lnCnt = NnirOraCount(lcSql)
|
||||||
|
DO NnirAssert WITH 'oracle_rul_obinv_final', 'OBINV', lnCnt > 0, TRANSFORM(lnCnt) + ' randuri RUL_OBINV cu nnir nou in Oracle'
|
||||||
|
|
||||||
|
* curatenie: pasul STERGE (oscrie_in_fisiere param 2) marcheaza sters=1 pe COD-ul ORIGINAL -
|
||||||
|
* readuc nota originala activa, apoi marchez sters=1 (conventia aplicatiei) pe orice a ajuns
|
||||||
|
* sub NNIR-ul marcaj (COD nou, atribuit de pack_contafin la scriere)
|
||||||
|
goExecutor.oExecuta([update act set sters = 0 where cod = ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta([update rul set sters = 0 where cod = ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta([update rul_obinv set sters = 0 where cod = ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta([update act set sters = 1 where nnir = ] + TRANSFORM(tnNnirNou) + [ and cod <> ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta([update rul set sters = 1 where nnir = ] + TRANSFORM(tnNnirNou) + [ and cod <> ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta([update rul_obinv set sters = 1 where nnir = ] + TRANSFORM(tnNnirNou) + [ and cod <> ] + TRANSFORM(tnCod))
|
||||||
|
goExecutor.oExecuta('commit')
|
||||||
|
ENDPROC
|
||||||
11
utile/Teste/nnir_registru_jurnal/verif_nnir_cod.sql
Normal file
11
utile/Teste/nnir_registru_jurnal/verif_nnir_cod.sql
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
-- verif_nnir_cod.sql - NNIR distinct pe ACT/RUL/RUL_OBINV pentru un COD dat
|
||||||
|
-- Rulare: sqlplus -L -S MARIUSM_AUTO/<parola>@ROA_CENTRAL @verif_nnir_cod.sql <cod>
|
||||||
|
set pagesize 200 linesize 200 trimspool on feedback off
|
||||||
|
define v_cod = &1
|
||||||
|
prompt ==ACT==
|
||||||
|
select cod, an, luna, id_set, nnir from act where cod = &v_cod;
|
||||||
|
prompt ==RUL_NNIR_DISTINCT==
|
||||||
|
select an, luna, nnir, count(*) cnt from rul where cod = &v_cod group by an, luna, nnir;
|
||||||
|
prompt ==RUL_OBINV_NNIR_DISTINCT==
|
||||||
|
select an, luna, nnir, count(*) cnt from rul_obinv where cod = &v_cod group by an, luna, nnir;
|
||||||
|
exit;
|
||||||
302
utile/Teste/test_init_env_auto_roagest.prg
Normal file
302
utile/Teste/test_init_env_auto_roagest.prg
Normal file
@@ -0,0 +1,302 @@
|
|||||||
|
* test_init_env_auto_roagest.prg
|
||||||
|
* Varianta ROAGEST a test_init_env_auto.prg (acel fisier e specializat pe ROACONT -
|
||||||
|
* gcAppPath/clase/proceduri hardcodate D:\ROA\ROACONT\ - nu poate initializa mediul ROAGEST).
|
||||||
|
* Initializare completa de mediu FARA interactiune, pentru vfp9.exe -A -T.
|
||||||
|
*
|
||||||
|
* Utilizare:
|
||||||
|
* DO test_init_env_auto_roagest WITH 'CENTRAL', 'MARIUSM_AUTO', 'parola'
|
||||||
|
* IF gnHandle <= 0 ... eroare conectare
|
||||||
|
*
|
||||||
|
* Dupa apel sunt disponibile: goConn/goExecutor/goApp/goLog/goApi, goFirma/goCalendar,
|
||||||
|
* gnAn/gnLuna/gcS/gnIdFirma etc., SET PATH/CLASSLIB/PROCEDURE ca in roagest.prg,
|
||||||
|
* pachetele Oracle de sesiune setate (pack_sesiune/pack_contafin).
|
||||||
|
* ATENTIE: mentine lista de SET CLASSLIB/PROCEDURE sincronizata cu Programe\roagest.prg.
|
||||||
|
|
||||||
|
LPARAMETERS tcHost, tcSchema, tcPassword, tnAn, tnLuna
|
||||||
|
|
||||||
|
tcHost = IIF(EMPTY(tcHost), 'CENTRAL', tcHost)
|
||||||
|
tcSchema = IIF(EMPTY(tcSchema), 'MARIUSM_AUTO', tcSchema)
|
||||||
|
tcPassword = IIF(EMPTY(tcPassword), 'ROMFASTSOFT', tcPassword)
|
||||||
|
|
||||||
|
SET DELETED ON
|
||||||
|
SET ANSI ON
|
||||||
|
SET EXACT ON
|
||||||
|
SET SAFETY OFF
|
||||||
|
CLOSE DATABASES
|
||||||
|
SET CENTURY ON
|
||||||
|
SET DATE DMY
|
||||||
|
SET NULLDISPLAY TO ''
|
||||||
|
SET DECIMALS TO 4
|
||||||
|
SET POINT TO '.'
|
||||||
|
|
||||||
|
PUBLIC CT_SUCCES, CT_INSUCCES, crlf, gnAn, gnLuna, gnIdUtil, glEMama, gnIdFirma, gcCondSucursala, ;
|
||||||
|
gnIdSucursala, gcS, gcFirma, gcUserName, gcUserNameApp, gcNumeProgram, gcAppName, glLunaInchisa, ;
|
||||||
|
buton, gnButon, pnButon, gl406, gcAcces, gnIdProgram, gnId_Prg_Owner
|
||||||
|
CT_SUCCES = 1
|
||||||
|
CT_INSUCCES = -1
|
||||||
|
crlf = CHR(13) + CHR(10)
|
||||||
|
gnAn = IIF(EMPTY(tnAn), YEAR(DATE()), tnAn)
|
||||||
|
gnLuna = IIF(EMPTY(tnLuna), MONTH(DATE()), tnLuna)
|
||||||
|
gnIdUtil = -3
|
||||||
|
gnIdProgram = 0
|
||||||
|
gnId_Prg_Owner = 0
|
||||||
|
gnIdFirma = 110
|
||||||
|
gcCondSucursala = []
|
||||||
|
gnIdSucursala = m.gnIdFirma
|
||||||
|
gcS = UPPER(ALLTRIM(tcSchema))
|
||||||
|
gcFirma = m.gcS
|
||||||
|
gcUserName = m.gcS
|
||||||
|
gcUserNameApp = [MARIUS M]
|
||||||
|
gcNumeProgram = [ROAGEST]
|
||||||
|
gcAppName = [ROAGEST]
|
||||||
|
glLunaInchisa = .F.
|
||||||
|
glEMama = .F.
|
||||||
|
gl406 = .F.
|
||||||
|
* PUBLIC, nu Declare: nrcrt() (oproceduri_comune.prg) citeste NROR din ControlSource-uri
|
||||||
|
* de grid mult dupa ce acest program s-a terminat (Declare ar muri la RETURN)
|
||||||
|
PUBLIC nror(65000)
|
||||||
|
buton = 1
|
||||||
|
gnButon = 1
|
||||||
|
pnButon = 1
|
||||||
|
|
||||||
|
LOCAL lcPath
|
||||||
|
PUBLIC gcAppPath, DIRGEN, gcDirMare, gcBasePath, gcTempPath, gcGeneralIniFile, gcSettingsFile, ;
|
||||||
|
gcSecurityPath, gcSecurityFile
|
||||||
|
gcAppPath = [D:\ROA\ROAGEST\]
|
||||||
|
Set Default To (gcAppPath)
|
||||||
|
lcPath = gcAppPath + 'Date;' + ;
|
||||||
|
gcAppPath + 'Include;' + ;
|
||||||
|
gcAppPath + 'FERESTRE;' + ;
|
||||||
|
gcAppPath + 'GRAFICE;' + ;
|
||||||
|
gcAppPath + 'CLASE;' + ;
|
||||||
|
gcAppPath + 'MENIURI;' + ;
|
||||||
|
gcAppPath + 'PROGRAME;' + ;
|
||||||
|
gcAppPath + 'RAPOARTE;' + ;
|
||||||
|
gcAppPath + 'COMUN;' + ;
|
||||||
|
gcAppPath + 'COMUN\CLASE;' + ;
|
||||||
|
gcAppPath + 'COMUN\FERESTRE;' + ;
|
||||||
|
gcAppPath + 'COMUN\PROGRAME;' + ;
|
||||||
|
gcAppPath + 'COMUN\GRAFICE;' + ;
|
||||||
|
gcAppPath + 'COMUN\RAPOARTE;' + ;
|
||||||
|
gcAppPath + 'COMUN\MENIURI;' + ;
|
||||||
|
gcAppPath + 'COMUN\UTILE\GRIDEXTRAS;' + ;
|
||||||
|
gcAppPath + 'COMUN\UTILE\CTL32;' + ;
|
||||||
|
gcAppPath + 'COMUN\UTILE\HPDF;' + ;
|
||||||
|
gcAppPath + 'COMUN\UTILE\HPDF\REPORTOUTPUT;' + ;
|
||||||
|
gcAppPath + 'COMUN\UTILE\WEB;' + ;
|
||||||
|
gcAppPath + 'COMUN\UTILE\EXCEL;' + ;
|
||||||
|
gcAppPath + 'COMUN\UTILE\NFJSON;' + ;
|
||||||
|
Addbs(Substr(gcAppPath,1,Rat([\],gcAppPath,2)))+[COMUNROA\]
|
||||||
|
SET PATH TO &lcPath ADDITIVE
|
||||||
|
|
||||||
|
Local lcMainClassLib
|
||||||
|
lcMainClassLib = gcAppPath + "comun\clase\appwiz"
|
||||||
|
SET CLASSLIB TO (lcMainClassLib) ADDITIVE
|
||||||
|
SET CLASSLIB TO GESTIUNI ADDITIVE
|
||||||
|
SET CLASSLIB TO CAUT ADDITIVE
|
||||||
|
SET CLASSLIB TO BAZA ADDITIVE
|
||||||
|
SET CLASSLIB TO comun ADDITIVE
|
||||||
|
SET CLASSLIB TO accessibility.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO messagebox ADDITIVE
|
||||||
|
SET CLASSLIB TO registry ADDITIVE
|
||||||
|
SET CLASSLIB TO cauta_alfa_forms.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO DECABAZA ADDITIVE
|
||||||
|
SET CLASSLIB TO onomenclatoare ADDITIVE
|
||||||
|
SET CLASSLIB TO stocuri.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO rulaje.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO ointroduceri ADDITIVE
|
||||||
|
SET CLASSLIB TO ointroduceri_web ADDITIVE
|
||||||
|
SET CLASSLIB TO ointroduceri_depozit ADDITIVE
|
||||||
|
SET CLASSLIB TO overificari ADDITIVE
|
||||||
|
SET CLASSLIB TO ferestre_oracle ADDITIVE
|
||||||
|
SET CLASSLIB TO ferestre_cere_date.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO configurare.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO serii_numere.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO omodificari.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO ocompensari.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO caut_ora ADDITIVE
|
||||||
|
SET CLASSLIB TO onote_contabile ADDITIVE
|
||||||
|
SET CLASSLIB TO otoolbar ADDITIVE
|
||||||
|
SET CLASSLIB TO bon_fisc ADDITIVE
|
||||||
|
SET CLASSLIB TO onom_articole ADDITIVE
|
||||||
|
SET CLASSLIB TO onom_retete ADDITIVE
|
||||||
|
Set Classlib To oinventar ADDITIVE
|
||||||
|
SET CLASSLIB TO orapoarte ADDITIVE
|
||||||
|
SET CLASSLIB TO orapoarte_gestiuni ADDITIVE
|
||||||
|
SET CLASSLIB TO orapoarte_parametri ADDITIVE
|
||||||
|
SET CLASSLIB TO ONOM_CURS ADDITIVE
|
||||||
|
SET CLASSLIB TO ctl32_statusbar_fals.vcx additive
|
||||||
|
SET CLASSLIB TO ctl32_common.vcx additive
|
||||||
|
SET CLASSLIB TO ctl32_structs.vcx additive
|
||||||
|
SET CLASSLIB TO ctl32_progressbar.vcx additive
|
||||||
|
SET CLASSLIB TO ctl32_balloontip.vcx additive
|
||||||
|
SET CLASSLIB TO ocriterii.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO oavize.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO onomenclatoare2 ADDITIVE
|
||||||
|
Set Classlib To oschimbare_pret.vcx additive
|
||||||
|
SET CLASSLIB TO wwdialogs.vcx additive
|
||||||
|
SET CLASSLIB TO oimportxml.vcx additive
|
||||||
|
SET CLASSLIB TO excelxml.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO orapoarte_obinv.vcx ADDITIVE
|
||||||
|
SET CLASSLIB TO locale ADDITIVE
|
||||||
|
|
||||||
|
SET PROCEDURE TO PROCEDURI ADDITIVE
|
||||||
|
SET PROCEDURE TO acces_meniu ADDITIVE
|
||||||
|
SET PROCEDURE TO cauta_alfa ADDITIVE
|
||||||
|
SET PROCEDURE TO pmenu ADDITIVE
|
||||||
|
SET PROCEDURE TO proceduri_comune ADDITIVE
|
||||||
|
SET PROCEDURE TO quitapp ADDITIVE
|
||||||
|
SET PROCEDURE TO init_program ADDITIVE
|
||||||
|
SET PROCEDURE TO oproceduri_listari.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO oproceduri_configurare.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO oproceduri_articole.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO oproceduri_retete.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO orapoarte.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO mesaje ADDITIVE
|
||||||
|
SET PROCEDURE TO oserii_numere.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO oexport.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO wwConfig.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO proceduri_rapoarte.prg additive
|
||||||
|
SET PROCEDURE TO OPROCEDURI_CURS.PRG ADDITIVE
|
||||||
|
Set procedure to orapoarte_dinamice.prg additive
|
||||||
|
SET PROCEDURE TO validare.prg additive
|
||||||
|
SET PROCEDURE TO GENCURSOR.PRG ADDITIVE
|
||||||
|
SET PROCEDURE TO OPROCEDURI_COMUNE.PRG ADDITIVE
|
||||||
|
SET PROCEDURE TO OINIT_OPTIUNI.PRG ADDITIVE
|
||||||
|
SET PROCEDURE TO updateserver.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO oinainte_de.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO ooperatii_comune.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO Ocompensari.PRG ADDITIVE
|
||||||
|
SET PROCEDURE TO OPROCEDURI_aMS.PRG ADDITIVE
|
||||||
|
SET PROCEDURE TO oproceduri_rulaje additive
|
||||||
|
SET PROCEDURE TO oproceduri_stocuri additive
|
||||||
|
SET PROCEDURE TO OINTRODUCERI ADDITIVE
|
||||||
|
SET PROCEDURE TO oHeader.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO proceduri_excel.PRG ADDITIVE
|
||||||
|
SET PROCEDURE TO onomenclatoare.PRG ADDITIVE
|
||||||
|
SET PROCEDURE TO osecurity ADDITIVE
|
||||||
|
SET PROCEDURE TO ocautare ADDITIVE
|
||||||
|
SET PROCEDURE TO orefaceri ADDITIVE
|
||||||
|
SET PROCEDURE TO ofacturare_comun.PRG ADDITIVE
|
||||||
|
SET PROCEDURE TO ofacturare_stoc.PRG ADDITIVE
|
||||||
|
SET PROCEDURE TO oproceduri_casademarcat ADDITIVE
|
||||||
|
SET PROCEDURE TO oproceduri_casa_marcat_e500 ADDITIVE
|
||||||
|
SET PROCEDURE TO oproceduri_casa_marcat_mp500 ADDITIVE
|
||||||
|
SET PROCEDURE TO oproceduri_util.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO wwxmlhttp.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO ini.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO odocumente.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO regex.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO wwutils.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO inchidere_k ADDITIVE
|
||||||
|
Set procedure to oschimbare_pret.prg additive
|
||||||
|
SET PROCEDURE TO iniacces.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO oupdate.prg additive
|
||||||
|
SET PROCEDURE TO procese.prg additive
|
||||||
|
SET PROCEDURE TO version.prg additive
|
||||||
|
SET PROCEDURE TO xmlaccess.prg additive
|
||||||
|
SET PROCEDURE TO xmlparser.prg additive
|
||||||
|
SET PROCEDURE TO filebringer.prg additive
|
||||||
|
SET PROCEDURE TO wwcodeupdate.prg additive
|
||||||
|
SET PROCEDURE TO wwhttp.prg ADDITIVE
|
||||||
|
Set Procedure To wwApi.prg Additive
|
||||||
|
SET PROCEDURE TO xdate.prg Additive
|
||||||
|
SET PROCEDURE TO ofacturare.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO oproceduri_obinv.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO oproceduri_facturare.prg ADDITIVE
|
||||||
|
SET PROCEDURE TO email.prg ADDITIVE
|
||||||
|
|
||||||
|
Declare Integer GetPrivateProfileString In WIN32API ;
|
||||||
|
string, String, String, String @, Integer, String
|
||||||
|
Declare Integer WritePrivateProfileString In Win32Api ;
|
||||||
|
string, String, String, String
|
||||||
|
Declare Integer CopyFile In WIN32API ;
|
||||||
|
STRING lpExistingFileName, STRING lpNewFileName, INTEGER bFailIfExists
|
||||||
|
Declare Integer PathFileExists In shlwapi STRING pszPath
|
||||||
|
|
||||||
|
If Type('goApi') = 'U'
|
||||||
|
Public goApi
|
||||||
|
goApi = Newobject("wwAPI", "wwAPI.prg")
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
PUBLIC gnHandle, goExecutor, goConn, goFirma, goCalendar, poLog, goLog, goApp
|
||||||
|
DIRGEN = [D:\ROA\]
|
||||||
|
gcDirMare = DIRGEN
|
||||||
|
gcBasePath = dirgen
|
||||||
|
gcSecurityPath = DIRGEN + 'Security\'
|
||||||
|
gcSecurityFile = gcSecurityPath + 'ROA_SECURITY.TXT'
|
||||||
|
gcGeneralIniFile = DIRGEN + "settings.ini"
|
||||||
|
gcSettingsFile = m.gcGeneralIniFile
|
||||||
|
gcTempPath = Addbs(shortpath(goApi.GetTempPath())) + gcS + [\]
|
||||||
|
If !Directory(gcTempPath)
|
||||||
|
Md (gcTempPath)
|
||||||
|
Endif
|
||||||
|
gcAcces = [1;2;3;4;5;6;7;8;]
|
||||||
|
|
||||||
|
poLog = Newobject("Log_Mesaje","Log_Mesaje.prg")
|
||||||
|
goLog = poLog
|
||||||
|
goApp = Createobject("wzApplication")
|
||||||
|
gnHandle = 0
|
||||||
|
goExecutor = createobject("oExecutor")
|
||||||
|
goConn = createobject("oConn")
|
||||||
|
goConn.Connect(m.tcHost, m.tcSchema, m.tcPassword)
|
||||||
|
IF m.gnHandle <= 0
|
||||||
|
RETURN .F.
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
LOCAL llSucces, lcSql
|
||||||
|
goFirma = null
|
||||||
|
llSucces = goExecutor.oExecuta("select * from syn_v_nom_firme where schema = ?gcS", "cFirma")
|
||||||
|
IF m.llSucces
|
||||||
|
SELECT cFirma
|
||||||
|
gnIdFirma = id_firma
|
||||||
|
gnIdSucursala = null
|
||||||
|
gcFirma = ALLTRIM(firma)
|
||||||
|
SCATTER NAME goFirma
|
||||||
|
IF TYPE('goFirma.codfiscalfro') = 'U'
|
||||||
|
ADDPROPERTY(goFirma, 'codfiscalfro', ALLTRIM(STRTRAN(ALLTRIM(NVL(goFirma.cod_fiscal, '')), 'RO', '')))
|
||||||
|
ENDIF
|
||||||
|
ELSE
|
||||||
|
goFirma = CREATEOBJECT('custom')
|
||||||
|
goFirma.addproperty('cod_fiscal', '')
|
||||||
|
goFirma.addproperty('schema', m.gcS)
|
||||||
|
goFirma.addproperty('firma', m.gcS)
|
||||||
|
goFirma.addproperty('codfiscalfro', '')
|
||||||
|
ENDIF
|
||||||
|
USE IN (SELECT('cFirma'))
|
||||||
|
|
||||||
|
goCalendar = null
|
||||||
|
llSucces = goExecutor.oExecuta('SELECT anul, luna, tva_incasare FROM calendar WHERE an*12+luna = (select MAX(an*12+luna) FROM calendar)', 'cCalendar')
|
||||||
|
IF m.llSucces
|
||||||
|
SELECT cCalendar
|
||||||
|
GO TOP
|
||||||
|
IF EMPTY(m.tnAn)
|
||||||
|
gnAn = anul
|
||||||
|
gnLuna = luna
|
||||||
|
ENDIF
|
||||||
|
SCATTER NAME goCalendar
|
||||||
|
ENDIF
|
||||||
|
USE IN (SELECT('cCalendar'))
|
||||||
|
|
||||||
|
CREATE CURSOR dual (dummy c(10))
|
||||||
|
INSERT INTO dual (dummy) VALUES ("")
|
||||||
|
|
||||||
|
actualizeaza_optiuni()
|
||||||
|
Do optiuni_firma IN oinit_optiuni.prg
|
||||||
|
|
||||||
|
lcSql = [begin pack_sesiune.set_Id_Util(?gnIdUtil); end;]
|
||||||
|
llSucces = goExecutor.oExecuta(lcSql)
|
||||||
|
lcSql = [begin pack_sesiune.setluna(?gnLuna); pack_sesiune.setan(?gnAn); end;]
|
||||||
|
llSucces = goExecutor.oExecuta(lcSql)
|
||||||
|
lcSql = [begin pack_sesiune.setlunabal(?gnLuna); pack_sesiune.setanbal(?gnAn); end;]
|
||||||
|
llSucces = goExecutor.oExecuta(lcSql)
|
||||||
|
lcSql = [begin pack_contafin.SET_DATA_RON(?gcS); end;]
|
||||||
|
llSucces = goExecutor.oExecuta(lcSql)
|
||||||
|
lcSql = [begin pack_sesiune.set_data_ron(?gcS); end;]
|
||||||
|
llSucces = goExecutor.oExecuta(lcSql)
|
||||||
|
lcSql = [begin pack_contafin.set_id_sucursala(?gnIdSucursala); end;]
|
||||||
|
llSucces = goExecutor.oExecuta(lcSql)
|
||||||
|
lcSql = [begin pack_contafin.set_id_firma(?gnIdFirma); end;]
|
||||||
|
llSucces = goExecutor.oExecuta(lcSql)
|
||||||
|
|
||||||
|
RETURN .T.
|
||||||
Reference in New Issue
Block a user