*-------------------------------------------------------------------------------------------------------------------------------------------------------- * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- *< FOXBIN2PRG: Version="1.21" SourceFile="frm_autopass.scx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * * DEFINE CLASS dataenvironment AS dataenvironment *< CLASSDATA: Baseclass="dataenvironment" Timestamp="" Scale="" Uniqueid="" ClassIcon="1" /> * DataSource = .NULL. Height = 0 Left = 0 Name = "Dataenvironment" Top = 0 Width = 0 * ENDDEFINE DEFINE CLASS frm_autopass1 AS _frmbase OF "..\comun\clase\_frm_base.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="ShpBadgeMediu1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="LblBadgeMediu1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="LblPerioada1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="TxtDataInceput1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="LblPerioadaLinie1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="TxtDataSfarsit1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="ButActualizeaza1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="LblAcoperire1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="ButConfigurare1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="PnlConfigurare1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="PnlConfigurare1.LblUrl1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="PnlConfigurare1.TxtUrl1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="PnlConfigurare1.LblCheie1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="PnlConfigurare1.TxtCheie1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="PnlConfigurare1.ButAratacheie1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="PnlConfigurare1.LblMediu1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="PnlConfigurare1.CboMediu1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="PnlConfigurare1.ButTestConexiune1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="PnlConfigurare1.ButSalveazaConfig1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="PnlConfigurare1.LblConfigMesaj1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column1.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column1.Chk1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column2.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column2.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column3.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column3.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column4.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column4.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column5.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column5.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column6.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column6.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column7.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column7.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column8.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column8.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column9.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column9.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column10.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column10.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column11.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column11.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column12.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column12.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column13.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="GrdComenzi1.Column13.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="LblMotivTitlu1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="TxtMotivRand1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="ButSelecteazaTot1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="ButValideazaDryrun1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="ButTransmite1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="ButActualizeazaStatusuri1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="ButDeschideDashboard1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="ButRenuntaActiuni1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="LblProgres1" UniqueID="" Timestamp="" /> * *m: col_bifa_when && When() pe coloana de bifa a gridului - randurile invalide/netransmisibile nu se pot bifa (grid VFP nu are readonly per celula) *m: culoare_status && Culoarea (RGB) asociata unui status brut din gateway, pt DynamicForeColor in grid *m: do_actualizeaza_perioada && Reincarca cursoarele US-002 pentru perioada curenta din forma *m: do_actualizeaza_statusuri && Re-apeleaza autopass_situatie() + coreleaza si reimprospateaza gridul (US-005) *m: do_deschide_dashboard && Deschide in browser URL-ul gateway-ului din configurare *m: do_test_conexiune && GET /v1/ping - actualizeaza badge-ul de mediu si starea butoanelor *m: do_toggle_arata_cheie *m: do_toggle_configurare *m: do_transmite && POST /v1/prezentari in loturi de max nMaxLot, cu progres si Renunta intre loturi *m: do_valideaza_dryrun && POST /v1/prezentari/valideaza in loturi - completeaza doar coloana Verdict validare *m: eticheta_status && Traduce statusul brut din gateway (queued/sent/...) in eticheta romaneasca (vocabular US-004) *m: incarca_date && Construieste crs_autopass_comenzi + crs_autopass_operatii, aplica situatia gateway si reimprospateaza gridul *m: incarca_lot_din_grid && Construieste array de obiecte {vin,nrinmat,data_prestatie,odometru_final,prestatii[],obs,id_ordl} pt un lot de max nMaxLot randuri bifate *m: obtine_id_bifate && Array cu id_ordl ale randurilor bifate din crs_autopass_comenzi *m: recalculeaza_acoperire && Recalculeaza N/M/K si actualizeaza LblAcoperire1 *m: salveaza_config *p: ccursordetaliu && Numele cursorului temporar cu operatiile (crs_autopass_operatii) *p: ccursorheader && Numele cursorului temporar cu comenzile (crs_autopass_comenzi) *p: ddatainceput *p: ddatasfarsit *p: lanulare && Setat de ButRenuntaActiuni1 in timpul unei transmiteri/dry-run in curs - verificat intre loturi *p: lconfigok *p: loperatieincurs && .T. cat timp o transmitere/dry-run e in desfasurare (guard dubla-apasare + tine ButRenuntaActiuni1 in modul "opreste") *p: lpingok * * AutoCenter = .T. Caption = "Trimitere operatii facturate la RAR AUTOPASS" ccursordetaliu = "crs_autopass_operatii" ccursorheader = "crs_autopass_comenzi" ddatainceput = {} ddatasfarsit = {} DoCreate = .T. Height = 700 lanulare = .F. lconfigok = .F. loperatieincurs = .F. lpingok = .F. MaxButton = .F. MinButton = .F. Name = "Frm_autopass1" Width = 1020 WindowType = 1 _shape1.Width = 1017 _shape2.Left = 962 Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" BUT_TERMIN1.Left = 984 BUT_TERMIN1.Name = "BUT_TERMIN1" BUT_TERMIN1.ToolTipText = "Inchide fereastra (ESC)" Gridsort1.Name = "Gridsort1" * ADD OBJECT 'ButActualizeaza1' AS _commandbutton WITH ; Caption = "Actualizeaza", ; Height = 24, ; Left = 332, ; Name = "ButActualizeaza1", ; Top = 60, ; Width = 96 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="commandbutton" /> ADD OBJECT 'ButActualizeazaStatusuri1' AS _commandbutton WITH ; Anchor = 10, ; Caption = "Actualizeaza statusuri", ; Height = 28, ; Left = 664, ; Name = "ButActualizeazaStatusuri1", ; Top = 566, ; Width = 170 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="commandbutton" /> ADD OBJECT 'ButConfigurare1' AS _commandbutton WITH ; Anchor = 9, ; Caption = "Configurare >>", ; Height = 24, ; Left = 904, ; Name = "ButConfigurare1", ; Top = 60, ; Width = 108 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="commandbutton" /> ADD OBJECT 'ButDeschideDashboard1' AS _commandbutton WITH ; Anchor = 10, ; BackColor = 0,90,160, ; Caption = "Dashboard AutoPass", ; FontBold = .T., ; ForeColor = 255,255,255, ; Height = 28, ; Left = 851, ; Name = "ButDeschideDashboard1", ; Top = 566, ; Width = 150 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="commandbutton" /> ADD OBJECT 'ButRenuntaActiuni1' AS _commandbutton WITH ; Anchor = 6, ; BackColor = 180,0,0, ; Caption = "Renunta", ; FontBold = .T., ; ForeColor = 255,255,255, ; Height = 28, ; Left = 494, ; Name = "ButRenuntaActiuni1", ; Top = 566, ; Visible = .F., ; Width = 140 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="commandbutton" /> ADD OBJECT 'ButSelecteazaTot1' AS cmd_select_adv WITH ; Anchor = 6, ; ccoloana = "lbifat", ; cFiltruSuplimentar = "lvalid AND !INLIST(status_autopass,'queued','sent','deduped','held','needs_mapping','needs_data')", ; cgrid = "thisform.GrdComenzi1", ; Left = 8, ; Name = "ButSelecteazaTot1", ; Top = 566, ; Width = 160 *< END OBJECT: ClassLib="..\comun\clase\cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'ButTransmite1' AS _commandbutton WITH ; Anchor = 6, ; BackColor = 0,120,40, ; Caption = "Transmite", ; FontBold = .T., ; FontSize = 11, ; ForeColor = 255,255,255, ; Height = 30, ; Left = 348, ; Name = "ButTransmite1", ; Top = 565, ; Width = 140 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="commandbutton" /> ADD OBJECT 'ButValideazaDryrun1' AS _commandbutton WITH ; Anchor = 6, ; Caption = "Valideaza (dry-run)", ; Height = 28, ; Left = 188, ; Name = "ButValideazaDryrun1", ; Top = 566, ; Width = 150 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="commandbutton" /> ADD OBJECT 'GrdComenzi1' AS _grid WITH ; Anchor = 15, ; ColumnCount = 13, ; DeleteMark = .F., ; FontName = "Arial Narrow", ; Height = 370, ; lcamptextneeditabil = .T., ; Left = 8, ; Name = "GrdComenzi1", ; ReadOnly = .F., ; RecordSource = "", ; RowHeight = 18, ; Top = 118, ; Width = 1001, ; Column1.ColumnOrder = 1, ; Column1.ControlSource = "crs_autopass_comenzi.lbifat", ; Column1.CurrentControl = "Chk1", ; Column1.Name = "Column1", ; Column1.Sparse = .F., ; Column1.When = "Thisform.col_bifa_when()", ; Column1.Width = 30, ; Column2.ColumnOrder = 2, ; Column2.ControlSource = "crs_autopass_comenzi.nrord", ; Column2.Name = "Column2", ; Column2.Width = 60, ; Column3.ColumnOrder = 3, ; Column3.ControlSource = "crs_autopass_comenzi.dataoravalid", ; Column3.Name = "Column3", ; Column3.Width = 66, ; Column4.ColumnOrder = 4, ; Column4.ControlSource = "crs_autopass_comenzi.nrfact", ; Column4.Name = "Column4", ; Column4.Width = 60, ; Column5.ColumnOrder = 5, ; Column5.ControlSource = "crs_autopass_comenzi.datafact", ; Column5.Name = "Column5", ; Column5.Width = 66, ; Column6.ColumnOrder = 6, ; Column6.ControlSource = "crs_autopass_comenzi.nrinmat", ; Column6.Name = "Column6", ; Column6.Width = 74, ; Column7.ColumnOrder = 7, ; Column7.ControlSource = "crs_autopass_comenzi.series", ; Column7.Name = "Column7", ; Column7.Width = 130, ; Column8.ColumnOrder = 8, ; Column8.ControlSource = "crs_autopass_comenzi.kmint", ; Column8.Name = "Column8", ; Column8.Width = 55, ; Column9.ColumnOrder = 9, ; Column9.ControlSource = "crs_autopass_comenzi.nume", ; Column9.Name = "Column9", ; Column9.Width = 140, ; Column10.Alignment = 1, ; Column10.ColumnOrder = 10, ; Column10.ControlSource = "crs_autopass_comenzi.ncntop", ; Column10.Name = "Column10", ; Column10.Width = 40, ; Column11.ColumnOrder = 11, ; Column11.ControlSource = "crs_autopass_comenzi.cstatusro", ; Column11.DynamicForeColor = "Thisform.culoare_status(status_autopass)", ; Column11.FontBold = .T., ; Column11.Name = "Column11", ; Column11.Width = 140, ; Column12.ColumnOrder = 12, ; Column12.ControlSource = "crs_autopass_comenzi.cverdict", ; Column12.Name = "Column12", ; Column12.Width = 160, ; Column13.ColumnOrder = 13, ; Column13.ControlSource = "crs_autopass_comenzi.motiv_invalid", ; Column13.Name = "Column13", ; Column13.Width = 200 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="grid" /> ADD OBJECT 'GrdComenzi1.Column1.Chk1' AS _checkbox WITH ; Alignment = 2, ; AutoSize = .F., ; Caption = "", ; ControlSource = "crs_autopass_comenzi.lbifat", ; Height = 16, ; Name = "Chk1", ; Width = 22 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="checkbox" /> ADD OBJECT 'GrdComenzi1.Column1.Header1' AS header WITH ; Alignment = 2, ; Caption = "", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column10.Header1' AS header WITH ; Caption = "Op.", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column10.Text1' AS _textbox WITH ; Alignment = 1, ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; FontName = "Arial Narrow", ; ForeColor = 0,0,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'GrdComenzi1.Column11.Header1' AS header WITH ; Caption = "Status transmitere", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column11.Text1' AS _textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; DynamicForeColor = "Thisform.culoare_status(status_autopass)", ; FontBold = .T., ; FontName = "Arial Narrow", ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'GrdComenzi1.Column12.Header1' AS header WITH ; Caption = "Verdict validare", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column12.Text1' AS _textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; FontName = "Arial Narrow", ; ForeColor = 120,80,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'GrdComenzi1.Column13.Header1' AS header WITH ; Caption = "Motiv (pre-validare)", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column13.Text1' AS _textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; FontName = "Arial Narrow", ; ForeColor = 160,0,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'GrdComenzi1.Column2.Header1' AS header WITH ; Caption = "Nr.cmd", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column2.Text1' AS _textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; FontName = "Arial Narrow", ; ForeColor = 0,0,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'GrdComenzi1.Column3.Header1' AS header WITH ; Caption = "Data inch.", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column3.Text1' AS _textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; FontName = "Arial Narrow", ; ForeColor = 0,0,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'GrdComenzi1.Column4.Header1' AS header WITH ; Caption = "Nr.fact.", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column4.Text1' AS _textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; FontName = "Arial Narrow", ; ForeColor = 0,0,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'GrdComenzi1.Column5.Header1' AS header WITH ; Caption = "Data fact.", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column5.Text1' AS _textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; FontName = "Arial Narrow", ; ForeColor = 0,0,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'GrdComenzi1.Column6.Header1' AS header WITH ; Caption = "Nr.inmat.", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column6.Text1' AS _textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; FontName = "Arial Narrow", ; ForeColor = 0,0,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'GrdComenzi1.Column7.Header1' AS header WITH ; Caption = "VIN", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column7.Text1' AS _textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; FontName = "Arial Narrow", ; ForeColor = 0,0,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'GrdComenzi1.Column8.Header1' AS header WITH ; Caption = "Km", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column8.Text1' AS _textbox WITH ; Alignment = 1, ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; FontName = "Arial Narrow", ; ForeColor = 0,0,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'GrdComenzi1.Column9.Header1' AS header WITH ; Caption = "Client", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'GrdComenzi1.Column9.Text1' AS _textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; DynamicBackColor = "IIF(!lvalid,RGB(224,224,224),RGB(255,255,255))", ; FontName = "Arial Narrow", ; ForeColor = 0,0,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'LblAcoperire1' AS _label WITH ; Anchor = 13, ; AutoSize = .F., ; Caption = "Declarabile in perioada: - | Transmise: - | Blocate/nedeclarabile: -", ; FontBold = .T., ; Height = 18, ; Left = 8, ; Name = "LblAcoperire1", ; Top = 88, ; Width = 1001 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="label" /> ADD OBJECT 'LblBadgeMediu1' AS _label WITH ; Alignment = 2, ; Anchor = 13, ; AutoSize = .F., ; BackStyle = 0, ; Caption = "Se verifica mediul...", ; FontBold = .T., ; FontSize = 11, ; ForeColor = 255,255,255, ; Height = 20, ; Left = 8, ; Name = "LblBadgeMediu1", ; Top = 33, ; Width = 1001 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="label" /> ADD OBJECT 'LblMotivTitlu1' AS _label WITH ; Anchor = 6, ; Caption = "Motiv (rand curent):", ; Height = 18, ; Left = 8, ; Name = "LblMotivTitlu1", ; Top = 492, ; Width = 160 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="label" /> ADD OBJECT 'LblPerioada1' AS _label WITH ; AutoSize = .F., ; Caption = "Perioada (data facturii):", ; Height = 18, ; Left = 8, ; Name = "LblPerioada1", ; Top = 64, ; Width = 140 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="label" /> ADD OBJECT 'LblPerioadaLinie1' AS _label WITH ; Alignment = 2, ; Caption = "-", ; Height = 18, ; Left = 232, ; Name = "LblPerioadaLinie1", ; Top = 64, ; Width = 12 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="label" /> ADD OBJECT 'LblProgres1' AS _label WITH ; Anchor = 14, ; AutoSize = .F., ; Caption = "", ; Height = 18, ; Left = 8, ; Name = "LblProgres1", ; Top = 642, ; Width = 1001 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="label" /> ADD OBJECT 'PnlConfigurare1' AS _container WITH ; Anchor = 13, ; BackColor = 245,245,245, ; Height = 92, ; Left = 4, ; Name = "PnlConfigurare1", ; SpecialEffect = 1, ; Top = 112, ; Visible = .F., ; Width = 1009 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="container" /> ADD OBJECT 'PnlConfigurare1.ButAratacheie1' AS _commandbutton WITH ; Anchor = 8, ; Caption = "Arata", ; Height = 22, ; Left = 945, ; Name = "ButAratacheie1", ; Top = 4, ; Width = 56 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="commandbutton" /> ADD OBJECT 'PnlConfigurare1.ButSalveazaConfig1' AS _commandbutton WITH ; Anchor = 8, ; Caption = "Salveaza", ; FontBold = .T., ; Height = 24, ; Left = 881, ; Name = "ButSalveazaConfig1", ; Top = 34, ; Width = 120 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="commandbutton" /> ADD OBJECT 'PnlConfigurare1.ButTestConexiune1' AS _commandbutton WITH ; Anchor = 8, ; Caption = "Test conexiune", ; Height = 24, ; Left = 721, ; Name = "ButTestConexiune1", ; Top = 34, ; Width = 150 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="commandbutton" /> ADD OBJECT 'PnlConfigurare1.CboMediu1' AS _combobox WITH ; Height = 24, ; Left = 100, ; Name = "CboMediu1", ; RowSource = "Testare,Productie,Implicit cont (gol)", ; RowSourceType = 1, ; Style = 2, ; Top = 34, ; Width = 160 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="combobox" /> ADD OBJECT 'PnlConfigurare1.LblCheie1' AS _label WITH ; Caption = "Cheie API:", ; Height = 18, ; Left = 410, ; Name = "LblCheie1", ; Top = 8, ; Width = 78 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="label" /> ADD OBJECT 'PnlConfigurare1.LblConfigMesaj1' AS _label WITH ; Anchor = 12, ; AutoSize = .F., ; Caption = "", ; ForeColor = 180,0,0, ; Height = 18, ; Left = 8, ; Name = "LblConfigMesaj1", ; Top = 66, ; Width = 990 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="label" /> ADD OBJECT 'PnlConfigurare1.LblMediu1' AS _label WITH ; Caption = "Mediu RAR:", ; Height = 18, ; Left = 8, ; Name = "LblMediu1", ; Top = 38, ; Width = 90 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="label" /> ADD OBJECT 'PnlConfigurare1.LblUrl1' AS _label WITH ; Caption = "URL gateway:", ; Height = 18, ; Left = 8, ; Name = "LblUrl1", ; Top = 8, ; Width = 90 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="label" /> ADD OBJECT 'PnlConfigurare1.TxtCheie1' AS _textbox WITH ; Height = 22, ; Left = 492, ; Name = "TxtCheie1", ; PasswordChar = "*", ; Top = 4, ; Width = 220 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'PnlConfigurare1.TxtUrl1' AS _textbox WITH ; Height = 22, ; Left = 100, ; Name = "TxtUrl1", ; Top = 4, ; Width = 300 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'ShpBadgeMediu1' AS _shape WITH ; Anchor = 13, ; BackColor = 160,160,160, ; Height = 26, ; Left = 0, ; Name = "ShpBadgeMediu1", ; Top = 30, ; Width = 1017 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="shape" /> ADD OBJECT 'TxtDataInceput1' AS _textbox WITH ; ControlSource = "Thisform.ddatainceput", ; Format = "D", ; Height = 22, ; Left = 152, ; Name = "TxtDataInceput1", ; Top = 60, ; Width = 76 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'TxtDataSfarsit1' AS _textbox WITH ; ControlSource = "Thisform.ddatasfarsit", ; Format = "D", ; Height = 22, ; Left = 248, ; Name = "TxtDataSfarsit1", ; Top = 60, ; Width = 76 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="textbox" /> ADD OBJECT 'TxtMotivRand1' AS _editbox WITH ; Anchor = 14, ; BackColor = 245,245,245, ; Height = 48, ; Left = 8, ; Name = "TxtMotivRand1", ; ReadOnly = .T., ; Top = 510, ; Width = 1001 *< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="editbox" /> PROCEDURE col_bifa_when && When() pe coloana de bifa a gridului - randurile invalide/netransmisibile nu se pot bifa (grid VFP nu are readonly per celula) * Randurile fara operatii de manopera valide sau cu date invalide (VIN/nrinmat/data/km) nu * pot fi bifate - gridul VFP nu are readonly per celula, se foloseste When()=.F. RETURN crs_autopass_comenzi.lvalid ENDPROC PROCEDURE culoare_status && Culoarea (RGB) asociata unui status brut din gateway, pt DynamicForeColor in grid LPARAMETERS tcStatus LOCAL lcStatus lcStatus = LOWER(ALLTRIM(NVL(tcStatus,''))) DO CASE CASE lcStatus == 'sent' RETURN RGB(0,120,40) CASE lcStatus == 'queued' RETURN RGB(180,140,0) CASE INLIST(lcStatus,'needs_mapping','needs_data') RETURN RGB(200,110,0) CASE INLIST(lcStatus,'held','error') RETURN RGB(180,0,0) CASE lcStatus == 'deduped' RETURN RGB(120,120,120) OTHERWISE RETURN RGB(0,0,0) ENDCASE ENDPROC PROCEDURE do_actualizeaza_perioada && Reincarca cursoarele US-002 pentru perioada curenta din forma IF EMPTY(Thisform.ddatainceput) OR EMPTY(Thisform.ddatasfarsit) OR Thisform.ddatainceput > Thisform.ddatasfarsit MESSAGEBOX('Perioada introdusa este invalida.', 48, 'AUTOPASS') RETURN ENDIF Thisform.incarca_date() ENDPROC PROCEDURE do_actualizeaza_statusuri && Re-apeleaza autopass_situatie() + coreleaza si reimprospateaza gridul (US-005) LOCAL llOk llOk = autopass_situatie(Thisform.ddatainceput, Thisform.ddatasfarsit) IF USED(Thisform.ccursorheader) autopass_coreleaza_situatie(Thisform.ccursorheader) Thisform.GrdComenzi1.Refresh() ENDIF Thisform.recalculeaza_acoperire() IF !llOk Thisform.LblProgres1.Caption = 'Status necunoscut - situatia gateway indisponibila (vezi LOG.txt).' Thisform.LblProgres1.ForeColor = RGB(180,0,0) ELSE Thisform.LblProgres1.Caption = 'statusuri actualizate' Thisform.LblProgres1.ForeColor = RGB(0,100,0) ENDIF ENDPROC PROCEDURE do_deschide_dashboard && Deschide in browser URL-ul gateway-ului din configurare LOCAL loConfig, lcUrl DECLARE INTEGER ShellExecute IN shell32.dll ; INTEGER hndWin, STRING cAction, STRING cFileName, ; STRING cParameters, STRING cDirectory, INTEGER nShowWindow loConfig = autopass_get_config() lcUrl = ALLTRIM(loConfig.cUrlGateway) IF EMPTY(lcUrl) RETURN ENDIF ShellExecute(0, "Open", lcUrl, "", "", 1) ENDPROC PROCEDURE do_test_conexiune && GET /v1/ping - actualizeaza badge-ul de mediu si starea butoanelor LOCAL loRez WAIT WINDOW 'Se verifica conexiunea la gateway-ul AUTOPASS...' NOWAIT loRez = autopass_test_conexiune(ALLTRIM(Thisform.PnlConfigurare1.TxtUrl1.Value), ; ALLTRIM(Thisform.PnlConfigurare1.TxtCheie1.Value)) WAIT CLEAR Thisform.lpingok = loRez.lSucces IF loRez.lSucces Thisform.cMediuActual = loRez.cMediu IF UPPER(ALLTRIM(loRez.cMediu)) == 'PROD' OR UPPER(ALLTRIM(loRez.cMediu)) == 'PRODUCTIE' Thisform.ShpBadgeMediu1.BackColor = RGB(180,0,0) Thisform.LblBadgeMediu1.Caption = 'MEDIU: PRODUCTIE - autentificat cu cheie: ' + IIF(loRez.lAutentificatCuCheie,'DA','NU') ELSE Thisform.ShpBadgeMediu1.BackColor = RGB(120,120,120) Thisform.LblBadgeMediu1.Caption = 'MEDIU: TESTARE - autentificat cu cheie: ' + IIF(loRez.lAutentificatCuCheie,'DA','NU') ENDIF Thisform.PnlConfigurare1.LblConfigMesaj1.Caption = '' Thisform.ButTransmite1.Enabled = .T. Thisform.ButValideazaDryrun1.Enabled = .T. ELSE Thisform.ShpBadgeMediu1.BackColor = RGB(160,160,160) Thisform.LblBadgeMediu1.Caption = 'Conexiune indisponibila' Thisform.PnlConfigurare1.LblConfigMesaj1.Caption = loRez.cEroare Thisform.ButTransmite1.Enabled = .F. Thisform.ButValideazaDryrun1.Enabled = .F. IF !Thisform.PnlConfigurare1.Visible Thisform.do_toggle_configurare() ENDIF Thisform.PnlConfigurare1.TxtCheie1.SetFocus() ENDIF ENDPROC PROCEDURE do_toggle_arata_cheie IF Thisform.PnlConfigurare1.TxtCheie1.PasswordChar == '*' Thisform.PnlConfigurare1.TxtCheie1.PasswordChar = '' Thisform.PnlConfigurare1.ButAratacheie1.Caption = 'Ascunde' ELSE Thisform.PnlConfigurare1.TxtCheie1.PasswordChar = '*' Thisform.PnlConfigurare1.ButAratacheie1.Caption = 'Arata' ENDIF ENDPROC PROCEDURE do_toggle_configurare Thisform.PnlConfigurare1.Visible = !Thisform.PnlConfigurare1.Visible IF Thisform.PnlConfigurare1.Visible Thisform.ButConfigurare1.Caption = 'Configurare <<' Thisform.GrdComenzi1.Top = 210 Thisform.GrdComenzi1.Height = 278 ELSE Thisform.ButConfigurare1.Caption = 'Configurare >>' Thisform.GrdComenzi1.Top = 118 Thisform.GrdComenzi1.Height = 370 ENDIF ENDPROC PROCEDURE do_transmite && POST /v1/prezentari in loturi de max nMaxLot, cu progres si Renunta intre loturi * Transmitere reala (enqueue) in loturi de max oClient.nMaxLot. Sincron (WinHTTP) - se * verifica Thisform.lanulare intre loturi (singurul punct de anulare posibil), cu * DOEVENTS ca sa lase interfata sa raspunda la clicul pe Renunta. LOCAL laIdBifate(1), lnTotal, oClient, lnLoturi, i, lnStart, lnEnd, laLot(1), j LOCAL loRez, loItem, lcMediuConfirm, lnRasp, lnTransmise, lnAsteptare, lnErori IF Thisform.loperatieincurs RETURN ENDIF lnTotal = Thisform.obtine_id_bifate(@laIdBifate) IF lnTotal = 0 MESSAGEBOX('Nu exista nicio comanda bifata.', 48, 'AUTOPASS') RETURN ENDIF lcMediuConfirm = IIF(UPPER(ALLTRIM(Thisform.cMediuActual)) == 'PROD' OR UPPER(ALLTRIM(Thisform.cMediuActual)) == 'PRODUCTIE', 'PRODUCTIE', 'TESTARE') lnRasp = MESSAGEBOX('Se transmit ' + TRANSFORM(lnTotal) + ' comenzi in mediul ' + lcMediuConfirm + '.' + CHR(13) + ; IIF(lcMediuConfirm == 'PRODUCTIE', 'ATENTIE: declararea la RAR pe PRODUCTIE este ireversibila.' + CHR(13), '') + ; 'Continuati?', 4 + 48 + 256, 'Confirmare transmitere AUTOPASS') IF lnRasp <> 6 RETURN ENDIF IF lnTotal > 200 lnRasp = MESSAGEBOX('Ati bifat ' + TRANSFORM(lnTotal) + ' comenzi (peste pragul de 200).' + CHR(13) + ; 'Confirmati din nou transmiterea?', 4 + 48 + 256, 'Confirmare suplimentara AUTOPASS') IF lnRasp <> 6 RETURN ENDIF ENDIF Thisform.loperatieincurs = .T. Thisform.lanulare = .F. Thisform.ButTransmite1.Enabled = .F. Thisform.ButValideazaDryrun1.Enabled = .F. Thisform.ButRenuntaActiuni1.Caption = '\ eticheta romaneasca (US-004) - NU se afiseaza tokenii * englezesti bruti in grid. LPARAMETERS tcStatus LOCAL lcStatus lcStatus = LOWER(ALLTRIM(NVL(tcStatus,''))) DO CASE CASE EMPTY(lcStatus) RETURN 'Netransmis' CASE lcStatus == 'queued' RETURN 'In asteptare la RAR' CASE lcStatus == 'sent' RETURN 'Transmis' CASE lcStatus == 'needs_mapping' RETURN 'Cod fara mapare RAR' CASE lcStatus == 'needs_data' RETURN 'Date incomplete' CASE lcStatus == 'held' RETURN 'Retinut (Auto OFF)' CASE lcStatus == 'error' RETURN 'Eroare' CASE lcStatus == 'deduped' RETURN 'Deja transmis' OTHERWISE RETURN ALLTRIM(tcStatus) ENDCASE ENDPROC PROCEDURE incarca_date && Construieste crs_autopass_comenzi + crs_autopass_operatii, aplica situatia gateway si reimprospateaza gridul * US-002 + US-005: extrage comenzile+operatiile facturate din perioada, aplica * pre-validarea locala (deja facuta in autopass_cursor_comenzi/operatii), calculeaza * nr. de operatii per comanda si coreleaza cu situatia gateway-ului. LOCAL lcHeader, lcDetaliu, lcCount WAIT WINDOW 'Se incarca comenzile facturate din perioada...' NOWAIT lcHeader = autopass_cursor_comenzi(Thisform.ddatainceput, Thisform.ddatasfarsit) IF EMPTY(lcHeader) WAIT CLEAR MESSAGEBOX('Nu s-au putut extrage comenzile pentru perioada aleasa (vezi LOG.txt).', 48, 'AUTOPASS') RETURN ENDIF lcDetaliu = autopass_cursor_operatii(lcHeader) *-- lbifat/ncntop/cstatusro/cverdict sunt incluse direct la crearea cursorului in *-- autopass_cursor_comenzi() - cursorul ramane "remote"-tainted, ALTER TABLE pica. IF !EMPTY(lcDetaliu) AND USED(lcDetaliu) lcCount = 'crs_autopass_nrop' IF USED(lcCount) USE IN (lcCount) ENDIF SELECT id_ordl, COUNT(*) AS ncnt FROM (lcDetaliu) WHERE lvalid_op GROUP BY id_ordl INTO CURSOR (lcCount) READWRITE INDEX ON id_ordl TAG id_ordl SET ORDER TO id_ordl IN (lcCount) SELECT (lcHeader) SCAN IF SEEK(id_ordl, lcCount) REPLACE ncntop WITH &lcCount..ncnt ELSE REPLACE ncntop WITH 0 ENDIF ENDSCAN USE IN (lcCount) ENDIF SELECT (lcHeader) REPLACE ALL lbifat WITH .F., cstatusro WITH 'Netransmis', cverdict WITH '' GO TOP WAIT CLEAR *-- situatia gateway-ului (US-005), auto-refresh la incarcarea perioadei LOCAL lcEroareSituatie lcEroareSituatie = '' IF autopass_situatie(Thisform.ddatainceput, Thisform.ddatasfarsit, @lcEroareSituatie) autopass_coreleaza_situatie(lcHeader) SELECT (lcHeader) SCAN REPLACE cstatusro WITH Thisform.eticheta_status(status_autopass) ENDSCAN SELECT (lcHeader) GO TOP ELSE Thisform.LblProgres1.Caption = 'Situatia gateway indisponibila: ' + ; IIF(EMPTY(lcEroareSituatie), 'motiv necunoscut (vezi LOG.txt).', lcEroareSituatie) Thisform.LblProgres1.ForeColor = RGB(180,0,0) ENDIF Thisform.GrdComenzi1.RecordSource = lcHeader Thisform.GrdComenzi1.Refresh() Thisform.ButSelecteazaTot1.Setup() Thisform.ButSelecteazaTot1.nselectate = 0 Thisform.ButSelecteazaTot1.schimba_caption() IF RECCOUNT(lcHeader) = 0 Thisform.LblProgres1.Caption = 'Nu exista comenzi facturate in perioada aleasa.' Thisform.ButTransmite1.Enabled = .F. Thisform.ButValideazaDryrun1.Enabled = .F. ELSE Thisform.ButTransmite1.Enabled = Thisform.lpingok Thisform.ButValideazaDryrun1.Enabled = Thisform.lpingok ENDIF Thisform.recalculeaza_acoperire() ENDPROC PROCEDURE incarca_lot_din_grid && Construieste array de obiecte {vin,nrinmat,data_prestatie,odometru_final,prestatii[],obs,id_ordl} pt un lot de max nMaxLot randuri bifate * Construieste array de obiecte {vin,nrinmat,data_prestatie,odometru_final,prestatii[],obs,id_ordl} * pentru AutopassClient.TrimiteLot()/Valideaza(), pe baza id_ordl-urilor primite (un lot, * max nMaxLot elemente - impartirea pe loturi e responsabilitatea formei). LPARAMETERS taIdLot LOCAL lnCount, i, loComanda, lcDataPrest, laPrestatii(1), lnNrOp LOCAL ARRAY laLot(1) lnCount = ALEN(taIdLot,1) DIMENSION laLot(lnCount) FOR i = 1 TO lnCount SELECT (Thisform.ccursorheader) LOCATE FOR id_ordl = taIdLot(i) loComanda = CREATEOBJECT('empty') ADDPROPERTY(loComanda, 'id_ordl', id_ordl) ADDPROPERTY(loComanda, 'vin', ALLTRIM(series)) ADDPROPERTY(loComanda, 'nrinmat', ALLTRIM(nrinmat)) DO CASE CASE VARTYPE(dataoravalid) = 'T' lcDataPrest = STR(YEAR(TTOD(dataoravalid)),4) + '-' + PADL(MONTH(TTOD(dataoravalid)),2,'0') + '-' + PADL(DAY(TTOD(dataoravalid)),2,'0') CASE VARTYPE(dataoravalid) = 'D' lcDataPrest = STR(YEAR(dataoravalid),4) + '-' + PADL(MONTH(dataoravalid),2,'0') + '-' + PADL(DAY(dataoravalid),2,'0') OTHERWISE lcDataPrest = '' ENDCASE ADDPROPERTY(loComanda, 'data_prestatie', lcDataPrest) ADDPROPERTY(loComanda, 'odometru_final', kmint) ADDPROPERTY(loComanda, 'obs', autopass_obs(nrord, nrfact)) lnNrOp = 0 IF USED(Thisform.ccursordetaliu) SELECT (Thisform.ccursordetaliu) SCAN FOR id_ordl = taIdLot(i) AND lvalid_op lnNrOp = lnNrOp + 1 DIMENSION laPrestatii(lnNrOp) laPrestatii(lnNrOp) = CREATEOBJECT('empty') ADDPROPERTY(laPrestatii(lnNrOp), 'cod_op_service', ALLTRIM(codop)) ADDPROPERTY(laPrestatii(lnNrOp), 'denumire', ALLTRIM(denop)) ENDSCAN ENDIF IF lnNrOp = 0 DIMENSION laPrestatii(1) ENDIF loComanda.AddProperty('prestatii') loComanda.prestatii = laPrestatii laLot(i) = loComanda ENDFOR RETURN laLot ENDPROC PROCEDURE Init LOCAL loConfig DODEFAULT() This.WindowState = 2 Thisform.ddatainceput = GOMONTH(DATE(), -1*(DAY(DATE())-1)) Thisform.ddatasfarsit = DATE() Thisform.AddProperty('cMediuActual', '') loConfig = autopass_get_config() Thisform.PnlConfigurare1.TxtUrl1.Value = loConfig.cUrlGateway Thisform.PnlConfigurare1.TxtCheie1.Value = loConfig.cApiKey DO CASE CASE LOWER(ALLTRIM(loConfig.cRarEnv)) == 'test' Thisform.PnlConfigurare1.CboMediu1.Value = 'Testare' CASE LOWER(ALLTRIM(loConfig.cRarEnv)) == 'prod' Thisform.PnlConfigurare1.CboMediu1.Value = 'Productie' OTHERWISE Thisform.PnlConfigurare1.CboMediu1.Value = 'Implicit cont (gol)' ENDCASE Thisform.lconfigok = loConfig.lconfigok IF !Thisform.lconfigok Thisform.do_toggle_configurare() Thisform.PnlConfigurare1.LblConfigMesaj1.Caption = 'Completeaza cheia API (si URL-ul, daca e nevoie) si apasa Salveaza.' ENDIF *-- fail-closed pana raspunde ping-ul (US-004) Thisform.ButTransmite1.Enabled = .F. Thisform.ButValideazaDryrun1.Enabled = .F. Thisform.do_test_conexiune() Thisform.incarca_date() ENDPROC PROCEDURE Load * Precreeaza crs_autopass_comenzi INAINTE ca GrdComenzi1 sa fie instantiat (Load * ruleaza inaintea obiectelor continute) - altfel coloanele cu ControlSource * alias-calificat arunca "Alias not found" la deschiderea formei (Column1 are * Sparse=.F., care forteaza rezolvarea eager a alias-ului la creare). LOCAL lcHeader Thisform.ddatainceput = GOMONTH(DATE(), -1*(DAY(DATE())-1)) Thisform.ddatasfarsit = DATE() lcHeader = autopass_cursor_comenzi(Thisform.ddatainceput, Thisform.ddatasfarsit) IF !EMPTY(lcHeader) autopass_cursor_operatii(lcHeader) *-- lbifat/ncntop/cstatusro/cverdict sunt incluse direct la crearea cursorului in *-- autopass_cursor_comenzi() - cursorul ramane "remote"-tainted, ALTER TABLE pica. ENDIF ENDPROC PROCEDURE obtine_id_bifate && Array cu id_ordl ale randurilor bifate din crs_autopass_comenzi LPARAMETERS taId LOCAL lnCount lnCount = 0 IF USED(Thisform.ccursorheader) SELECT (Thisform.ccursorheader) SCAN FOR lbifat lnCount = lnCount + 1 DIMENSION taId(lnCount) taId(lnCount) = id_ordl ENDSCAN ENDIF RETURN lnCount ENDPROC PROCEDURE recalculeaza_acoperire && Recalculeaza N/M/K si actualizeaza LblAcoperire1 * "Declarabile in perioada: N | Transmise (sent): M | Blocate/nedeclarabile: K" - * singura metrica ce raspunde la "suntem conformi?" (US-004). LOCAL lnDeclarabile, lnTransmise, lnBlocate lnDeclarabile = 0 lnTransmise = 0 lnBlocate = 0 IF USED(Thisform.ccursorheader) SELECT (Thisform.ccursorheader) COUNT FOR lvalid TO lnDeclarabile COUNT FOR status_autopass == 'sent' TO lnTransmise COUNT FOR !lvalid OR INLIST(status_autopass,'error','held','needs_mapping','needs_data') TO lnBlocate ENDIF Thisform.LblAcoperire1.Caption = 'Declarabile in perioada: ' + TRANSFORM(lnDeclarabile) + ; ' | Transmise: ' + TRANSFORM(lnTransmise) + ; ' | Blocate/nedeclarabile: ' + TRANSFORM(lnBlocate) Thisform.LblAcoperire1.ForeColor = IIF(lnBlocate > 0, RGB(180,0,0), RGB(0,0,0)) ENDPROC PROCEDURE salveaza_config LOCAL lcEnv, llOk DO CASE CASE Thisform.PnlConfigurare1.CboMediu1.Value == 'Testare' lcEnv = 'test' CASE Thisform.PnlConfigurare1.CboMediu1.Value == 'Productie' lcEnv = 'prod' OTHERWISE lcEnv = '' ENDCASE llOk = autopass_salveaza_config(ALLTRIM(Thisform.PnlConfigurare1.TxtUrl1.Value), ; ALLTRIM(Thisform.PnlConfigurare1.TxtCheie1.Value), lcEnv) IF !llOk MESSAGEBOX('Salvarea configurarii AUTOPASS a esuat.', 48, 'AUTOPASS') RETURN ENDIF *-- config-ul se reciteste, ping-ul se reia automat, badge-ul si starea butoanelor *-- se actualizeaza fara a inchide fereastra Thisform.do_test_conexiune() IF Thisform.lpingok Thisform.do_actualizeaza_statusuri() ENDIF ENDPROC PROCEDURE ButActualizeaza1.Click Thisform.do_actualizeaza_perioada() ENDPROC PROCEDURE ButActualizeazaStatusuri1.Click Thisform.do_actualizeaza_statusuri() ENDPROC PROCEDURE ButConfigurare1.Click Thisform.do_toggle_configurare() ENDPROC PROCEDURE ButDeschideDashboard1.Click Thisform.do_deschide_dashboard() ENDPROC PROCEDURE ButRenuntaActiuni1.Click * In timpul unei transmiteri/dry-run: opreste dupa lotul curent. Altfel: inchide fereastra * (acelasi comportament ca BUT_TERMIN1 din titlu, mostenit din _frmbase). IF Thisform.loperatieincurs Thisform.lanulare = .T. ELSE Thisform.do_termin() ENDIF ENDPROC PROCEDURE ButTransmite1.Click Thisform.do_transmite() ENDPROC PROCEDURE ButValideazaDryrun1.Click Thisform.do_valideaza_dryrun() ENDPROC PROCEDURE GrdComenzi1.AfterRowColChange LPARAMETERS nColIndex IF USED(Thisform.ccursorheader) AND RECCOUNT(Thisform.ccursorheader) > 0 SELECT (Thisform.ccursorheader) Thisform.TxtMotivRand1.Value = ALLTRIM(motiv_invalid) + ; IIF(!EMPTY(motiv_autopass), IIF(!EMPTY(motiv_invalid),' | ','') + ALLTRIM(motiv_autopass), '') ENDIF ENDPROC PROCEDURE PnlConfigurare1.ButAratacheie1.Click Thisform.do_toggle_arata_cheie() ENDPROC PROCEDURE PnlConfigurare1.ButSalveazaConfig1.Click Thisform.salveaza_config() ENDPROC PROCEDURE PnlConfigurare1.ButTestConexiune1.Click Thisform.do_test_conexiune() ENDPROC ENDDEFINE