Advertisement
cchenrique

U_zCHHRec

Oct 22nd, 2019
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.45 KB | None | 0 0
  1. #include 'protheus.ch'
  2.  
  3. /*/{Protheus.doc} zCCHRec
  4. Retorna os dados básicos de um CNPJ a partir da Receita Federal
  5. @author Caio César Henrique
  6. @since 22/10/2019
  7. @version 1.0
  8. @type function
  9. @example U_zCCHRec()
  10. /*/
  11.  
  12. User Function zCCHRec()
  13.  
  14.     /* Variáveis Locais */
  15.     Local aPergs     := {}
  16.     Local aRetorn    := {}
  17.     Local cLoad      := "00001"
  18.     Local lCanSave   := .T.
  19.     Local lUserSave  := .T.
  20.     Local cTitulo    := "TOTVS x Receita Federal"
  21.     Local bOk        := {|| .T.}
  22.     Local aButtons   := {}
  23.     Local lCentered  := .T.
  24.     Local nPosx
  25.     Local nPosy
  26.    
  27.     /* Variável Privada */
  28.     Private cCNPJ    := Space(14)
  29.  
  30.     /* Abro a empresa TESTE, caso faça uso via debug
  31.        Remover para utilizar dentro do Protheus*/
  32.     RpcSetEnv('99','01')
  33.  
  34.     /* Adiciono a pergunta do Parambox */
  35.     aAdd(aPergs, {1, "CNPJ" , cCNPJ  , "", ".T.", "", ".T.", 80, .F.})
  36.  
  37.     /* Se a pergunta for confirmada */
  38.     If ParamBox(aPergs, cTitulo, aRetorn, bOk, aButtons, lCentered, nPosx,nPosy, /*oMainDlg*/ , cLoad, lCanSave, lUserSave)
  39.         cCNPJ := aRetorn[1]
  40.  
  41.         /* Busca os dados com o CNPJ digitado */
  42.         BuscaDados(cCNPJ)
  43.     EndIf
  44.  
  45. Return ( Nil )
  46.  
  47. /*/{Protheus.doc} zCCHRec
  48. Retorna os dados básicos de um CNPJ a partir da Receita Federal
  49. @author Caio César Henrique
  50. @since 22/10/2019
  51. @version 1.0
  52. @type function
  53. @example U_zCCHRec()
  54. /*/
  55.  
  56. Static Function BuscaDados(cCNPJ)
  57.  
  58.     /* Variáveis Locais */
  59.     Local cJson      := ""
  60.     Local cGetParms  := ""
  61.     Local cHeaderGet := ""
  62.     Local nTimeOut   := 200
  63.     Local aHeadStr   := {"Content-Type: application/json"}
  64.  
  65.     /* Variável Privada */
  66.     Private oObjJson   := Nil
  67.  
  68.     /* Utiliza HTTPGET para retornar os dados da Receita Federal */
  69.     cJson := HttpGet('https://www.receitaws.com.br/v1/cnpj/'+ cCNPJ, cGetParms, nTimeOut, aHeadStr, @cHeaderGet )
  70.    
  71.     /* Transforma retorno do JSON em objeto estilo array */
  72.     If !FWJsonDeserialize(cJson,@oObjJson)
  73.         MsgStop("Ocorreu erro no processamento do Json")
  74.         Return
  75.     Else
  76.         /* Gera Excel */
  77.         GeraExcel(oObjJson)    
  78.     EndIf
  79.  
  80. Return ( Nil )
  81.  
  82. /*/{Protheus.doc} zCCHRec
  83. Retorna os dados básicos de um CNPJ a partir da Receita Federal
  84. @author Caio César Henrique
  85. @since 22/10/2019
  86. @version 1.0
  87. @type function
  88. @example U_zCCHRec()
  89. /*/
  90.  
  91. Static Function GeraExcel(oObjJson)
  92.  
  93.     //Variáveis para Geração Excel
  94.     Local oFwMsEx    := NIL
  95.     Local cArq       := ""
  96.     Local cDir       := GetSrvProfString("Startpath","")
  97.     Local cWorkSheet := oObjJson:CNPJ
  98.     Local cTable     := "Informações de: "+oObjJson:FANTASIA
  99.     Local cDirTmp    := GetTempPath()
  100.     Local cCadastro  := "Relatório - Receita Federal"
  101.  
  102.     /* Inicializa objeto do Excel */
  103.     oFwMsEx := FWMsExcel():New()
  104.     oFwMsEx:AddWorkSheet( cWorkSheet )
  105.     oFwMsEx:AddTable( cWorkSheet, cTable )
  106.  
  107.     /* Define os cabeçalhos das colunas */
  108.     oFwMsEx:AddColumn( cWorkSheet, cTable , "Abertura"          , 2,1)
  109.     oFwMsEx:AddColumn( cWorkSheet, cTable , "Bairro"            , 2,1)
  110.     oFwMsEx:AddColumn( cWorkSheet, cTable , "Capital Social"    , 2,3)
  111.     oFwMsEx:AddColumn( cWorkSheet, cTable , "CEP"               , 2,1)
  112.     oFwMsEx:AddColumn( cWorkSheet, cTable , "Data Situação"     , 2,1)
  113.     oFwMsEx:AddColumn( cWorkSheet, cTable , "Natureza Jurídica" , 2,1)
  114.  
  115.     /* Alimenta com os itens */
  116.     oFwMsEx:AddRow( cWorkSheet, cTable, {      oObjJson:ABERTURA      ,;
  117.                                                oObjJson:BAIRRO        ,;
  118.                                                oObjJson:CAPITAL_SOCIAL,;
  119.                                                oObjJson:CEP           ,;
  120.                                                oObjJson:DATA_SITUACAO ,;
  121.                                                DecodeUTF8(oObjJson:NATUREZA_JURIDICA,"cp1252")})
  122.  
  123.     /* Ativa o objeto */
  124.     oFwMsEx:Activate()
  125.  
  126.     /* Cria XML temporário */
  127.     cArq := CriaTrab( Nil, .F. ) + ".xml"
  128.  
  129.     /* Processo o Excel-XML */
  130.     MsgRun( "Gerando o arquivo, aguarde...", cCadastro, {|| oFwMsEx:GetXMLFile( cArq ) } )
  131.  
  132.     /* Copia do servidor para a máquina do usuário e abre o Excel */
  133.     If __CopyFile( cArq, cDirTmp + cArq )
  134.         oExcelApp := MsExcel():New()
  135.         oExcelApp:WorkBooks:Open( cDirTmp + cArq )
  136.         oExcelApp:SetVisible(.T.)
  137.         oExcelApp:Destroy()
  138.     Else
  139.         MsgInfo( "Arquivo não copiado para temporário do usuário." )
  140.     Endif
  141.  
  142. Return ( Nil )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement