Initial commit: baza VFP ROAAUTO + planuri migrare Web API
Arhiva clasei RarAutoPass (VFP) care declara prestatiile la RAR AUTOPASS, ca baza pentru rescrierea ca gateway central Python/FastAPI. Include: - sursa VFP (.prg) + datele necesare migrarii (mapare_prestatii, prestatii_rar) - spec-ul oficial RAR (txt) - docs/plans/: plan-design-review + plan-eng-review - docs/CONTEXT.md: handoff pentru continuarea in alta sesiune - .gitignore specific Visual FoxPro (ignora artefacte compilate + credentiale) settings.xml (cu parola de test in clar) EXCLUS; vezi settings.xml.example. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
271
rar_advanced.prg
Normal file
271
rar_advanced.prg
Normal file
@@ -0,0 +1,271 @@
|
||||
* Adaugam controale noi in clasa RarAutoPassForm pentru tab-ul Log
|
||||
|
||||
* Form pentru cautare avansata
|
||||
DEFINE CLASS SearchLogForm AS Form
|
||||
Caption = "Cautare avansata in log"
|
||||
Width = 600
|
||||
Height = 400
|
||||
AutoCenter = .T.
|
||||
MaxButton = .F.
|
||||
BorderStyle = 2
|
||||
|
||||
ADD OBJECT lblDateFrom AS Label WITH ;
|
||||
Caption = "De la data:", ;
|
||||
Left = 20, ;
|
||||
Top = 20
|
||||
|
||||
ADD OBJECT txtDateFrom AS TextBox WITH ;
|
||||
Left = 100, ;
|
||||
Top = 20, ;
|
||||
Width = 100, ;
|
||||
Value = DATE() - 30
|
||||
|
||||
ADD OBJECT lblDateTo AS Label WITH ;
|
||||
Caption = "Pana la:", ;
|
||||
Left = 220, ;
|
||||
Top = 20
|
||||
|
||||
ADD OBJECT txtDateTo AS TextBox WITH ;
|
||||
Left = 280, ;
|
||||
Top = 20, ;
|
||||
Width = 100, ;
|
||||
Value = DATE()
|
||||
|
||||
ADD OBJECT lblVin AS Label WITH ;
|
||||
Caption = "VIN:", ;
|
||||
Left = 20, ;
|
||||
Top = 60
|
||||
|
||||
ADD OBJECT txtVin AS TextBox WITH ;
|
||||
Left = 100, ;
|
||||
Top = 60, ;
|
||||
Width = 150
|
||||
|
||||
ADD OBJECT lblComanda AS Label WITH ;
|
||||
Caption = "Nr. Comanda:", ;
|
||||
Left = 270, ;
|
||||
Top = 60
|
||||
|
||||
ADD OBJECT txtComanda AS TextBox WITH ;
|
||||
Left = 350, ;
|
||||
Top = 60, ;
|
||||
Width = 100
|
||||
|
||||
ADD OBJECT lblStatus AS Label WITH ;
|
||||
Caption = "Status:", ;
|
||||
Left = 20, ;
|
||||
Top = 100
|
||||
|
||||
ADD OBJECT cboStatus AS ComboBox WITH ;
|
||||
Left = 100, ;
|
||||
Top = 100, ;
|
||||
Width = 150, ;
|
||||
Style = 2
|
||||
|
||||
ADD OBJECT chkHasError AS Checkbox WITH ;
|
||||
Caption = "Doar cu erori", ;
|
||||
Left = 270, ;
|
||||
Top = 100
|
||||
|
||||
ADD OBJECT btnSearch AS CommandButton WITH ;
|
||||
Caption = "Caută", ;
|
||||
Left = 20, ;
|
||||
Top = 140, ;
|
||||
Width = 100, ;
|
||||
Height = 30
|
||||
|
||||
ADD OBJECT btnCancel AS CommandButton WITH ;
|
||||
Caption = "Anulează", ;
|
||||
Left = 130, ;
|
||||
Top = 140, ;
|
||||
Width = 100, ;
|
||||
Height = 30
|
||||
|
||||
* Constructor
|
||||
FUNCTION Init
|
||||
THIS.cboStatus.AddItem("Toate")
|
||||
THIS.cboStatus.AddItem("SUCCESS")
|
||||
THIS.cboStatus.AddItem("ERROR")
|
||||
THIS.cboStatus.ListIndex = 1
|
||||
RETURN .T.
|
||||
|
||||
* Handler pentru butonul Cauta
|
||||
FUNCTION btnSearch.Click
|
||||
LOCAL lcFilter
|
||||
lcFilter = THIS.BuildFilter()
|
||||
THISFORM.Parent.ApplyLogFilter(lcFilter)
|
||||
THISFORM.Release()
|
||||
|
||||
* Handler pentru butonul Anuleaza
|
||||
FUNCTION btnCancel.Click
|
||||
THISFORM.Release()
|
||||
|
||||
* Construieste filtrul SQL
|
||||
FUNCTION BuildFilter
|
||||
LOCAL lcFilter, lcAnd
|
||||
lcFilter = ""
|
||||
lcAnd = ""
|
||||
|
||||
* Filtru data
|
||||
IF !EMPTY(THIS.txtDateFrom.Value)
|
||||
lcFilter = lcFilter + "data_prezentare >= CTOD('" + ;
|
||||
DTOC(THIS.txtDateFrom.Value) + "')"
|
||||
lcAnd = " AND "
|
||||
ENDIF
|
||||
|
||||
IF !EMPTY(THIS.txtDateTo.Value)
|
||||
lcFilter = lcFilter + lcAnd + "data_prezentare <= CTOD('" + ;
|
||||
DTOC(THIS.txtDateTo.Value) + "')"
|
||||
lcAnd = " AND "
|
||||
ENDIF
|
||||
|
||||
* Filtru VIN
|
||||
IF !EMPTY(THIS.txtVin.Value)
|
||||
lcFilter = lcFilter + lcAnd + "UPPER(vin) LIKE '" + ;
|
||||
UPPER(ALLTRIM(THIS.txtVin.Value)) + "%'"
|
||||
lcAnd = " AND "
|
||||
ENDIF
|
||||
|
||||
* Filtru comanda
|
||||
IF !EMPTY(THIS.txtComanda.Value)
|
||||
lcFilter = lcFilter + lcAnd + "UPPER(nr_comanda) LIKE '" + ;
|
||||
UPPER(ALLTRIM(THIS.txtComanda.Value)) + "%'"
|
||||
lcAnd = " AND "
|
||||
ENDIF
|
||||
|
||||
* Filtru status
|
||||
IF THIS.cboStatus.ListIndex > 1
|
||||
lcFilter = lcFilter + lcAnd + "status = '" + ;
|
||||
THIS.cboStatus.Value + "'"
|
||||
lcAnd = " AND "
|
||||
ENDIF
|
||||
|
||||
* Filtru erori
|
||||
IF THIS.chkHasError.Value
|
||||
lcFilter = lcFilter + lcAnd + "!EMPTY(error_msg)"
|
||||
ENDIF
|
||||
|
||||
RETURN lcFilter
|
||||
ENDDEFINE
|
||||
|
||||
* Adaugam metodele noi in RarAutoPassForm
|
||||
* In functia Init, adaugam butoanele noi:
|
||||
ADD OBJECT btnAdvSearch AS CommandButton OF tabLog WITH ;
|
||||
Caption = "Căutare avansată", ;
|
||||
Left = 320, ;
|
||||
Top = 20, ;
|
||||
Width = 120, ;
|
||||
Height = C_BTN_HEIGHT
|
||||
|
||||
ADD OBJECT btnExportExcel AS CommandButton OF tabLog WITH ;
|
||||
Caption = "Export Excel", ;
|
||||
Left = 450, ;
|
||||
Top = 20, ;
|
||||
Width = 120, ;
|
||||
Height = C_BTN_HEIGHT
|
||||
|
||||
* Handler pentru cautare avansata
|
||||
FUNCTION btnAdvSearch.Click
|
||||
LOCAL loSearch
|
||||
loSearch = CREATEOBJECT("SearchLogForm")
|
||||
loSearch.Show(1)
|
||||
ENDFUNC
|
||||
|
||||
* Aplicare filtru de cautare
|
||||
FUNCTION ApplyLogFilter
|
||||
PARAMETERS tcFilter
|
||||
SELECT rar_log
|
||||
IF !EMPTY(tcFilter)
|
||||
SET FILTER TO &tcFilter
|
||||
ELSE
|
||||
SET FILTER TO
|
||||
ENDIF
|
||||
GO TOP
|
||||
THIS.grdLog.Refresh()
|
||||
ENDFUNC
|
||||
|
||||
* Handler pentru export Excel
|
||||
FUNCTION btnExportExcel.Click
|
||||
LOCAL lcFile, loExcel, loWorkbook, loWorksheet
|
||||
LOCAL lnRow, lnCol, lcValue
|
||||
|
||||
* Alegem locatia fisierului
|
||||
lcFile = PUTFILE("Excel files|*.xlsx", "RAR_Log_Export.xlsx", "", 0)
|
||||
IF EMPTY(lcFile)
|
||||
RETURN
|
||||
ENDIF
|
||||
|
||||
THIS.AddStatus("Export Excel în " + lcFile + "...")
|
||||
|
||||
TRY
|
||||
* Cream obiectul Excel
|
||||
loExcel = CREATEOBJECT("Excel.Application")
|
||||
loExcel.Visible = .F.
|
||||
|
||||
* Adaugam un workbook nou
|
||||
loWorkbook = loExcel.Workbooks.Add()
|
||||
loWorksheet = loWorkbook.Sheets(1)
|
||||
|
||||
* Setam headerele
|
||||
WITH loWorksheet
|
||||
.Cells(1,1).Value = "Data prezentare"
|
||||
.Cells(1,2).Value = "Nr. comandă"
|
||||
.Cells(1,3).Value = "VIN"
|
||||
.Cells(1,4).Value = "Nr. înmatriculare"
|
||||
.Cells(1,5).Value = "Km final"
|
||||
.Cells(1,6).Value = "Km initial"
|
||||
.Cells(1,7).Value = "Status"
|
||||
.Cells(1,8).Value = "Eroare"
|
||||
.Cells(1,9).Value = "Data trimitere"
|
||||
|
||||
* Formatare header
|
||||
.Range(.Cells(1,1), .Cells(1,9)).Font.Bold = .T.
|
||||
.Range(.Cells(1,1), .Cells(1,9)).Interior.Color = RGB(200,200,200)
|
||||
ENDWITH
|
||||
|
||||
* Populam datele
|
||||
SELECT rar_log
|
||||
lnRow = 2
|
||||
SCAN
|
||||
loWorksheet.Cells(lnRow, 1).Value = data_prezentare
|
||||
loWorksheet.Cells(lnRow, 2).Value = nr_comanda
|
||||
loWorksheet.Cells(lnRow, 3).Value = vin
|
||||
loWorksheet.Cells(lnRow, 4).Value = nr_inm
|
||||
loWorksheet.Cells(lnRow, 5).Value = km_final
|
||||
loWorksheet.Cells(lnRow, 6).Value = km_initial
|
||||
loWorksheet.Cells(lnRow, 7).Value = status
|
||||
loWorksheet.Cells(lnRow, 8).Value = error_msg
|
||||
loWorksheet.Cells(lnRow, 9).Value = data_trimitere
|
||||
|
||||
* Coloram randurile cu erori in rosu deschis
|
||||
IF status = "ERROR"
|
||||
loWorksheet.Range(loWorksheet.Cells(lnRow,1), ;
|
||||
loWorksheet.Cells(lnRow,9)).Interior.Color = RGB(255,200,200)
|
||||
ENDIF
|
||||
|
||||
lnRow = lnRow + 1
|
||||
ENDSCAN
|
||||
|
||||
* Auto-fit coloane
|
||||
loWorksheet.Range("A:I").Columns.AutoFit()
|
||||
|
||||
* Salvam si inchidem
|
||||
loWorkbook.SaveAs(lcFile)
|
||||
loWorkbook.Close()
|
||||
loExcel.Quit()
|
||||
|
||||
THIS.AddStatus("Export Excel finalizat cu succes")
|
||||
|
||||
* Deschidem fisierul
|
||||
RUN /N "explorer.exe" &lcFile
|
||||
|
||||
CATCH TO loError
|
||||
THIS.AddStatus("EROARE la export Excel: " + loError.Message)
|
||||
|
||||
TRY
|
||||
loWorkbook.Close()
|
||||
loExcel.Quit()
|
||||
CATCH
|
||||
ENDTRY
|
||||
ENDTRY
|
||||
ENDFUNC
|
||||
Reference in New Issue
Block a user