Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Programa en ADVPL para consumo de API (Opcional).


#INCLUDE"PROTHEUS.CH"
#include#INCLUDE "FWBROWSE.CH"


UserFunctionAPIRUCPY()
   LocalcRUC  :=PARAMIXB[1]
   LocalcVar  :=PARAMIXB[2]
   LocaloMod  :=PARAMIXB[3]
   LocaloRest:=FwRest():New("https://turuc.com.py/api/contribuyente")
   LocaloJson:=JsonObject():New()
   LocalaHead:= {'accept: */*'}
   LocalcRest:=""
   LocalcRed  :=""
   LocalcNom  :=""
   LocallRet  :=.F.
   oRest:SetPath("?ruc="+Trim(cRUC))
   FWMsgRun(Nil,{|| lRet:=oRest:Get(aHead)},Nil,oRest:CHOST)
   IflRet//Achou
      cRest:=DecodeUtf8(oRest:GetResult())
      If ! Empty(cRest) .And.Empty(oJson:fromJson(cRest))
         //oJson["data"]["ruc"] = CODIGO + DV
         //oJson["data"]["estado"] = A1_ATIVO
         //oJson["data"]["esPersonaJuridica"] = A1_PESSOA      
         cNom:=oJson["data"]["razonSocial"]
         If (", ")$(cNom)
            cRed:=AllTrim(SubStr(cNom,At(", ",cNom)+1,Len(cNom)))
         Else
            cRed:=AllTrim(SubStr(cNom,1,At(" ",cNom)))
         Endif
         IfcVar=="M->A2_CGC"//Proveedor
            iif(Empty(oMod),M->A2_NOME   :=cNom,FWFldPut("A2_NOME",   cNom))
            iif(Empty(oMod),M->A2_NREDUZ:=cRed,FWFldPut("A2_NREDUZ",cRed))
         ElseIfcVar=="M->A1_CGC"//Cliente
            iif(Empty(oMod),M->A1_NOME   :=cNom,FWFldPut("A1_NOME",   cNom))
            iif(Empty(oMod),M->A1_NREDUZ:=cRed,FWFldPut("A1_NREDUZ",cRed))
         Endif
      Endif
   Endif
   FreeObj(oRest)
Return(lRet)

...

//Dicionario SX3 (Modulo SIGACFG >> Base de Datos >> Diccionarios de Datos >> Editar >> Campos >> X3_F3 = 'RUCPAR')  
//X3_CAMPO (A1_CGC e y A2_CGC)
//X3_F3 = RUCPAR


//Consulta Padrao - F3
UserFunctionXBRUCPAR() // --> L
   LocalcCod:=""
   LocalcVar:=ReadVar()
   LocallRet:=RUCBrowse(&(cVar),@cCod)
   IflRet
      VAR_IXB:=cCod
   Endif
Return(lRet)


StaticFunctionRUCBrowse(cGet,cCod)
   LocaloDlg,oBrw,oCol,oPan,oGet,oBtn
   LocaloFnt:=TFont():New("Arial",,020,,.F.,,,,,.F.,.F.)
   LocalbEnd:= {|| lRet:=.T.,oDlg:End()}
   LocallRet:=.F.
   LocalnPag:=0
   LocalaRow:= {}
   cGet:=PadR(cGet,50," ")
   DEFINEMSDIALOGoDlgTITLE"Consulta turuc.com.py"FROM0,0To400,820PIXEL
   oPan:=TPanel():New(0,0,,oDlg,,,,,,410,20,.F.,.F.)
   oPan:Align:=CONTROL_ALIGN_TOP
   DEFINEFWBROWSEoBrwDATAARRAYARRAYaRowNOCONFIGNOREPORTLINEHEIGHT21OFoDlg
   @ 003,005MSGEToGetVARcGetSIZE240,012OFoPanPICTURE"@!"FONToFntVALID (iif(oGet:LMODIFIED,aRow:=SetBrwRow(oBrw,cGet,0),Nil),nPag:=0,.T.) PIXEL
   @ 004,250BUTTON"&Consulta"       SIZE035,012OFoPanACTION {|| nPag:=0,aRow:=SetBrwRow(oBrw,cGet,nPag),oBtn:SetFocus()} PIXEL
   @ 004,290BUTTON"&Seguinte"       SIZE035,012OFoPanWHENLen(aRow) >10ACTION {|| ++nPag,aRow:=SetBrwRow(oBrw,cGet, @nPag)} PIXEL
   @ 004,330BUTTON"Sitio &Web"      SIZE035,012OFoPanWHEN.T.            ACTION {|| ShellBrw("https://turuc.com.py/#consulta")} PIXEL
   @ 004,370BUTTONoBtnPROMPT"&OK"SIZE035,012OFoPanWHEN ! Empty(aRow)  ACTIONEval(bEnd) PIXEL
   oBrw:SetDoubleClick(bEnd)
   oBrw:SetFontBrowse(TFont():New("Arial",,-14,,.F.))
   oBrw:NPOSSIBLEROWS:=15
   ADDMARKCOLUMNoColDATA {|| oBrw:oData:aArray[oBrw:At(),4]} OFoBrw
   ADDCOLUMNoColDATA {|| oBrw:oData:aArray[oBrw:At(),1]} TITLE"NOMBRE"   TYPE"C"SIZE50DECIMAL0PICTURE""HEADERCLICK {|| aSort(aRow,,,{|x,y| x[1]<y[1]}),oBrw:Refresh(.T.)} ALIGN1OFoBrw
   ADDCOLUMNoColDATA {|| oBrw:oData:aArray[oBrw:At(),2]} TITLE"RUC"      TYPE"C"SIZE10DECIMAL0PICTURE""HEADERCLICK {|| aSort(aRow,,,{|x,y| x[2]<y[2]}),oBrw:Refresh(.T.)} ALIGN1OFoBrw
   ADDCOLUMNoColDATA {|| oBrw:oData:aArray[oBrw:At(),3]} TITLE"ESTADO"   TYPE"C"SIZE12DECIMAL0PICTURE""HEADERCLICK {|| aSort(aRow,,,{|x,y| x[3]<y[3]}),oBrw:Refresh(.T.)} ALIGN1OFoBrw
   aRow:=SetBrwRow(oBrw,cGet,0)
   oBrw:Activate()
   IfEmpty(cGet)
      oGet:SetFocus()
   Else
      oBrw:SetFocus()
   Endif
   oBrw:Refresh(.T.)
   ACTIVATEMSDIALOGoDlgCENTERED
   IflRet
      cCod:=AllTrim(aRow[oBrw:nAt,2])
   Endif
   FreeObj(oBrw)
Return(lRet)


StaticFunctionSetBrwRow(oBrw,cGet,nPag)
   LocalaRow:= {}
   LocalnPos:=0
   LocalnMax:=0
   LocalcRaz:=""
   LocalcEst:=""
   LocalcRuc:=""
   LocalcMar:=""
   LocaljRow:=Nil
   FWMsgRun(Nil,{|| jRow:=TURUCAPIS(cGet, @nPag, @nMax)},Nil,"Consulta - turuc.com.py")
   If ! Empty(jRow)
      FornPos:=1ToLen(jRow)
         cRaz:=jRow[nPos]["razonSocial"]
         cRuc:=jRow[nPos]["ruc"]
         cEst:=jRow[nPos]["estado"]
         cMar:=iif(cEst=="ACTIVO","ENABLE","DISABLE")
         aAdd(aRow, {cRaz,cRuc,cEst,cMar})
      NextnPos
   Endif
   //Generico RUC
   IfEmpty(aRow)
      aAdd(aRow, {"Consumidor Final IC",  "44444401-7","Generico","ENABLE"})
      aAdd(aRow, {"Clientes Exportación","66666601-6","Generico","ENABLE"})
      aAdd(aRow, {"Agentes Diplomáticos","77777701-0","Generico","ENABLE"})
      aAdd(aRow, {"Clientes Exterior",    "88888801-5","Generico","ENABLE"})
      aAdd(aRow, {"Proveedores Exterior","99999901-0","Generico","ENABLE"})
      nMax:=1
   Endif
   //Ajusta Browse
   oBrw:SetArray(aRow)
   IfValType(oBrw:oBrowse) =="O"
      oBrw:oBrowse:cToolTip:="Pagina: "+cValToChar(nPag+1) +"/"+cValToChar(nMax)
      IfnPag>=nMax
         nPag:=0
      Endif
   Endif
   oBrw:Refresh(.T.)
Return(aRow)


StaticFunctionTURUCAPIS(cKey,nPag,nMax)
   LocaloRest:=FwRest():New("https://turuc.com.py")
   LocaloJson:=JsonObject():New()
   LocalaHead:= {'accept: application/json;charset=UTF-8'}
   LocaljRes  :=Nil
   LocalcRes  :=Nil
   cKey:=AllTrim(cKey)
   IfLen(cKey) >=3
      oRest:SetPath("/api/contribuyente/search?page="+cValToChar(nPag)+"&search="+escape(cKey))
      IfoRest:Get(aHead)
         cRes:=DecodeUtf8(oRest:GetResult())
      Else
         MsgInfo(oRest:GetLastError(),"Atencion")
      EndIf
   Endif
   If ! Empty(cRes) .And.Empty(oJson:fromJson(cRes))
      nMax:=oJson["data"]["paginas"]
      jRes:=oJson["data"]["contribuyentes"]
   Else
      nPag:=0
      nMax:=0
      jRes:=""
   Endif
Return(jRes)


StaticFunctionShellBrw(cUrl)
   LocalcBrw,cAux
   LocalnRem:=GetRemoteType(@cAux)
   IfnRem==2
      cBrw:=GetPvProfString("CONFIG","HELPBROWSER","firefox",GetRemoteIniName())
      IfEmpty(cBrw)
         cBrw:=GetSrvProfString("HELPBROWSER","firefox")
      EndIf
      If ! Empty(cBrw)
         WaitRun(cBrw+" "+cUrl)
      ElseIf"MAC" $(Upper(cAux))
         MsgInfo("Web browser not found for: "+cAux)
      Else
         ShellExecute("Browser","/usr/bin/firefox",cUrl,"/",1)
      Endif
   Else//Windows
      ShellExecute("open",cUrl,"","",1)
   Endif
Return(Nil)

...