AddCliente.apl 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. #include "PROTHEUS.CH"
  2. #include "RWMAKE.CH"
  3. #include "APWEBEX.CH"
  4. #include "TOPCONN.CH"
  5. #include "TBICONN.CH"
  6. #DEFINE SMSDEBUG
  7. /*__________________________________________________________________________
  8. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  9. ¦¦+-----------------------------------------------------------------------+¦¦
  10. ¦¦¦Funçäo ¦ AddCliente ¦ Autor ¦ Lucilene Mendes ¦ Data ¦01.12.20 ¦¦¦
  11. ¦¦+----------+------------------------------------------------------------¦¦¦
  12. ¦¦¦Descriçäo ¦ Criação de cadastro de cliente simplificado. ¦¦¦
  13. ¦¦+-----------------------------------------------------------------------+¦¦
  14. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  15. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  16. User Function AddCliente()
  17. Local cHtml
  18. Local a:= 0
  19. Local f:= 0
  20. Private cDirPortal := ""
  21. Private cEndServ := "" // Endereço do servidor da pagina de Portal
  22. Private cCodVend := ""
  23. Private cNomeVend := ""
  24. Private cOpcao := ""
  25. Private cTipo := ""
  26. Private cComboTipo := ""
  27. Private cCNPJ := ""
  28. Private cNome := ""
  29. Private cNReduz := ""
  30. Private cEndereco := ""
  31. Private cBairro := ""
  32. Private cCidade := ""
  33. Private cEstado := ""
  34. Private cCep := ""
  35. Private cDDD := ""
  36. Private cTelefone := ""
  37. Private cTelex := ""
  38. Private cEmail := ""
  39. Private cContato := ""
  40. Private cOptMun := ""
  41. Private cDisabled := ' disabled '
  42. Private nPosTipo := 0
  43. Private aTipo := {}
  44. Private aEstado := {}
  45. Private cSite := "u_PortalLogin.apw"
  46. Private cPagina := "Cadastro de Cliente"
  47. Private cMenus := ""
  48. Private cTitle := "Portal SMS"
  49. Private cBotoes := ""
  50. Private cCodLogin := ""
  51. Private cVendLogin:= ""
  52. Web Extended Init cHtml Start U_inSite()
  53. cVendLogin := u_GetUsrPR()
  54. cCodLogin := U_SetParPR(cVendLogin)
  55. If Empty(HttpSession->CodVend)
  56. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL='+cSite+'">'
  57. Return cHtml
  58. Else
  59. If !Empty(HttpSession->Superv) .and. HttpSession->Superv <> HttpSession->CodVend
  60. HttpSession->CodVend:= HttpSession->Superv
  61. Endif
  62. Endif
  63. // Pega do parâmetro com o Titulo do Portal
  64. cTitle := SuperGetMV("PS_TITLE", .T., "Portal SMS")
  65. // Define a funcao a ser chama no link
  66. cSite := "u_SMSPortal.apw?PR="+cCodLogin
  67. // Monta o cabeçalho para a pagina
  68. cHeader := U_PSHeader(cTitle, cSite)
  69. //Função que atualiza os menus
  70. cMenus := U_GetMenus(AllTrim(Upper(Procname())), cVendLogin)
  71. //Atualiza as variáveis
  72. cEndServ := GetMv('MV_WFBRWSR')
  73. cCodVend := cVendLogin //HttpSession->CodVend
  74. cNomeVend:= HttpSession->Nome
  75. //Tipo do Cliente
  76. aCombo:= StrTokArr(Posicione('SX3',2,'A1_TIPO','X3CBox()'),";")
  77. For a:= 1 to Len(aCombo)
  78. aAdd(aTipo,{Left(aCombo[a],1),aCombo[a]})
  79. Next
  80. //aTipo:= {{"F","Consumidor Final"},{"L","Produtor Rural"},{"R","Revendedor"},{"S","Solidário"},{"X","Exportação"}}
  81. cTipo:='<select class="form-control mb-md" name="A1_TIPO" id="A1_TIPO" required="" aria-required="true" value="" onchange="javascript:vldTipo();" >'
  82. cTipo+=' <option value=""></option>'
  83. For a:= 1 to Len(aTipo)
  84. cTipo+=' <option value="'+aTipo[a,1]+'">'+aTipo[a,2]+'</option>'
  85. Next
  86. cTipo+='</select>'
  87. //Estado
  88. dbSelectArea("SX5")
  89. dbSeek(xFilial("SX5")+'12')
  90. While SX5->(!Eof()) .and. SX5->X5_FILIAL = xFilial("SX5") .and. SX5->X5_TABELA = '12'
  91. aAdd(aEstado,{SX5->X5_CHAVE,SX5->X5_DESCRI})
  92. SX5->(dbSkip())
  93. End
  94. cEstado:='<select data-plugin-selectTwo class="form-control populate mb-md" name="A1_EST" id="A1_EST" onchange="javascript:SetCidade()" value="" disabled>'
  95. cEstado+=' <option value=""></option>'
  96. For f:= 1 to Len(aEstado)
  97. cEstado+=' <option value="'+alltrim(aEstado[f,1])+'">'+alltrim(aEstado[f,2])+'</option>'
  98. Next
  99. cEstado+='</select>'
  100. //Adiciona os botões da página
  101. cBotoes+='<input class="btn btn-primary" type="button" id="btSalvar" name="btSalvar" value="Salvar"/>'+chr(13)+chr(10)
  102. cBotoes+='<input class="btn btn-primary" type="button" id="btVoltar" name="btVoltar" value="Voltar" onclick="javascript: location.href='+"'"+'u_LimiteCredito.apw?PR='+cCodLogin+"';"+'"/>'+chr(13)+chr(10)
  103. //Retorna o HTML para construção da página
  104. cHtml := H_AddCliente()
  105. Web Extended End
  106. Return (cHTML)
  107. /*__________________________________________________________________________
  108. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  109. ¦¦+-----------------------------------------------------------------------+¦¦
  110. ¦¦¦Funçäo ¦ fVldCGC ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.12.20 ¦¦¦
  111. ¦¦+----------+------------------------------------------------------------¦¦¦
  112. ¦¦¦Descriçäo ¦ Função utilizada no Ajax para validar o CPF/CNPJ ¦¦¦
  113. ¦¦+-----------------------------------------------------------------------+¦¦
  114. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  115. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  116. User Function fVldCGC()
  117. Local cCGC := HttpPost->CGC
  118. Local cTipo := HttpPost->tipo
  119. Local cHtml := ""
  120. Web Extended Init cHtml Start U_inSite()
  121. If !Empty(cCgc)
  122. //Remove os separadores
  123. cCgc:= StrTran(StrTran(StrTran(cCGC,".",""),"-",""),"/","")
  124. //Verifica se num é válido
  125. If cTipo <> "X"
  126. SA1->(dbSetOrder(3))
  127. If SA1->(dbSeek(xFilial("SA1")+cCGC))
  128. cHtml:= SA1->A1_COD+'/'+SA1->A1_LOJA
  129. Endif
  130. Endif
  131. Endif
  132. Web Extended end
  133. Return cHtml
  134. /*__________________________________________________________________________
  135. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  136. ¦¦+-----------------------------------------------------------------------+¦¦
  137. ¦¦¦Funçäo ¦ fSetCidade ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.12.20 ¦¦¦
  138. ¦¦+----------+------------------------------------------------------------¦¦¦
  139. ¦¦¦Descriçäo ¦ Localiza as cidades do estado selecionado ¦¦¦
  140. ¦¦+-----------------------------------------------------------------------+¦¦
  141. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  142. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  143. User Function fSetCidade()
  144. Local cEstado := Alltrim(HttpPost->estado)
  145. Local cCombo := ""
  146. Local cHtml := ""
  147. Web Extended Init cHtml Start U_inSite()
  148. If !Empty(cEstado)
  149. dbSelectArea("CC2")
  150. CC2->(dbSeek(xFilial("CC2")+cEstado))
  151. cCombo+=' <option value=""></option>'
  152. While CC2->(!Eof()) .and. CC2->CC2_EST = cEstado
  153. cCombo+=' <option value="'+CC2->CC2_CODMUN+'">'+CC2->CC2_MUN+'</option>'
  154. CC2->(dbSkip())
  155. End
  156. Endif
  157. cHtml:= cCombo
  158. Web Extended end
  159. Return cHtml
  160. /*__________________________________________________________________________
  161. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  162. ¦¦+-----------------------------------------------------------------------+¦¦
  163. ¦¦¦Funçäo ¦ SlvCliente ¦ Autor ¦ Lucilene Mendes ¦ Data ¦02.12.20 ¦¦¦
  164. ¦¦+----------+------------------------------------------------------------¦¦¦
  165. ¦¦¦Descriçäo ¦ Gera o cadastro do cliente. ¦¦¦
  166. ¦¦+-----------------------------------------------------------------------+¦¦
  167. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  168. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  169. User Function SlvCliente()
  170. Local cHtml
  171. Local cDirErro := "erro\"
  172. Local cDestMail := ""
  173. Local aCliente := ""
  174. Private lMsErroAuto:= .F.
  175. Web Extended Init cHtml Start U_inSite()
  176. // #IFDEF SMSDEBUG
  177. // conOut(Procname()+"("+ltrim(str(procline()))+") *** Portal ")
  178. // aInfo := HttpGet->aGets
  179. // For nI := 1 to len(aInfo)
  180. // conout('GET '+str(nI,3)+' = '+aInfo[nI]+' -> '+&("HTTPGET->"+aInfo[nI]))
  181. // Next
  182. // aInfo := HttpPost->aPost
  183. // For nI := 1 to len(aInfo)
  184. // conout('POST '+str(nI,3)+' = '+aInfo[nI]+' -> '+&("HTTPPOST->"+aInfo[nI]))
  185. // Next
  186. // #ENDIF
  187. //Verifica se não perdeu a sessão
  188. If type("HttpSession->CodVend") = "U" .or. Empty(HttpSession->CodVend)
  189. conout(Procname()+"("+ltrim(str(procline()))+") *** Portal "+"Sessao encerrada")
  190. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_SMSPortal.apw">'
  191. return cHtml
  192. Else
  193. //Posiciona no vendedor
  194. SA3->(dbSeek(xFilial("SA3")+HttpSession->CodVend))
  195. Endif
  196. cCnpj:= StrTran(StrTran(StrTran(HttpPost->A1_CGC,".",""),"-",""),"/","")
  197. cTipo:= Iif(HttpPost->A1_TIPO = "F" .and. !Empty(HttpPost->A1_INSCR),"S",HttpPost->A1_TIPO)
  198. cDDD:= Iif(Type("HttpPost->A1_TEL") = "U","",Left(StrTran(StrTran(HttpPost->A1_TEL,"(",""),")",""),2))
  199. cTel:= Iif(Type("HttpPost->A1_TEL") = "U","",Alltrim(Substr(StrTran(StrTran(HttpPost->A1_TEL,"(",""),")",""),3)))
  200. cFax:= Iif(Type("HttpPost->A1_TELEX") = "U","",Substr(StrTran(StrTran(HttpPost->A1_TELEX,"(",""),")",""),3))
  201. cCep:= Iif(Type("HttpPost->A1_CEP") = "U","",StrTran(HttpPost->A1_CEP,"-",""))
  202. cEndereco:= Iif(Type("HttpPost->A1_END") = "U","",Upper(HttpPost->A1_END))
  203. cEndereco+= Iif(Type("HttpPost->A1_NR_END") = "U","",", "+HttpPost->A1_NR_END)
  204. cComplem:= Iif(Type("HttpPost->A1_COMPLEM") = "U","",ALLTRIM(HttpPost->A1_COMPLEM))
  205. cBairro:= Iif(Type("HttpPost->A1_BAIRRO") = "U","",ALLTRIM(Upper(HttpPost->A1_BAIRRO)))
  206. cEmail:= Iif(Type("HttpPost->A1_EMAIL") = "U","",ALLTRIM(Lower(HttpPost->A1_EMAIL)))
  207. cInscricao:= Iif(Type("HttpPost->A1_INSCR") = "U","",Iif(Empty(HttpPost->A1_INSCR),'ISENTO',HttpPost->A1_INSCR))
  208. cContato:= Iif(Type("HttpPost->A1_CONTATO") = "U","",Upper(HttpPost->A1_CONTATO))
  209. cMsBlock:= '1'
  210. cNatureza:= GetNewPar("PR_NATCLI","10101")
  211. cCtaContabil:= GetNewPar("PR_CTACLI","11201002")
  212. // Verifica se o cliente ja esta cadastrado
  213. dbSelectArea("SA1")
  214. SA1->(DbSetOrder(3)) // A1_FILIAL+A1_CGC
  215. if SA1->(dbSeek(xFilial("SA1")+cCNPJ))
  216. cHtml:= "erro"
  217. return cHtml
  218. endif
  219. SA1->(DbSetOrder(1)) // A1_FILIAL+A1_COD+A1_LOJA
  220. //Dados para cadastrar o cliente
  221. cCodCli:= GetSXeNum("SA1","A1_COD")
  222. ConfirmSX8()
  223. aCliente:= {{"A1_COD" ,cCodCli ,Nil},;
  224. {"A1_LOJA" ,'01' ,Nil},;
  225. {"A1_CGC" ,cCNPJ ,Nil},;
  226. {"A1_NOME" ,ALLTRIM(Upper(HttpPost->A1_NOME)) ,Nil},;
  227. {"A1_PESSOA" ,Iif(Len(cCNPJ)>11,"J","F") ,Nil},;
  228. {"A1_NREDUZ" ,ALLTRIM(Upper(HttpPost->A1_NREDUZ)) ,Nil},;
  229. {"A1_TIPO" ,cTipo ,Nil},;
  230. {"A1_CEP" ,cCep ,Nil},;
  231. {"A1_END" ,cEndereco ,Nil},;
  232. {"A1_EST" ,ALLTRIM(HttpPost->A1_EST) ,Nil},;
  233. {"A1_COD_MUN" ,ALLTRIM(HttpPost->A1_COD_MUN) ,Nil},;
  234. {"A1_BAIRRO" ,Left(cBairro,30) ,Nil},;
  235. {"A1_COMPLEM" ,cComplem ,Nil},;
  236. {"A1_INSCR" ,cInscricao ,Nil},;
  237. {"A1_DDD" ,cDDD ,Nil},;
  238. {"A1_TEL" ,StrTran(cTel,"-","") ,Nil},;
  239. {"A1_TELEX" ,StrTran(cFax,"-","") ,Nil},;
  240. {"A1_EMAIL" ,cEmail ,Nil},;
  241. {"A1_PAIS" ,"105" ,Nil},;
  242. {"A1_CODPAIS" ,"01058" ,Nil},;
  243. {"A1_MSBLQL" ,cMsBlock ,Nil},;
  244. {"A1_DTINIV" ,date() ,Nil},;
  245. {"A1_CONTA" ,cCtaContabil ,Nil},;
  246. {"A1_VEND" ,SA3->A3_COD ,Nil},; //{"A1_VEND2" ,SA3->A3_SUPER ,Nil},;//{"A1_VEND3" ,SA3->A3_GEREN ,Nil},;
  247. {"A1_CONTATO" ,cContato ,Nil},;
  248. {"A1_NATUREZ" ,cNatureza ,Nil},;
  249. {"A1_XCLIFID" ,'N' ,Nil}}
  250. lMsErroAuto := .F.
  251. MSExecAuto({|x,y| Mata030(x,y)},aCliente,3)
  252. If lMsErroAuto
  253. If !ExistDir(cDirErro)
  254. MakeDir(cDirErro)
  255. Endif
  256. cDirErro+=dtos(date())
  257. If !ExistDir(cDirErro)
  258. MakeDir(cDirErro)
  259. Endif
  260. //Grava o erro
  261. cMsg:= MostraErro(cDirErro,"erro_cliente_"+cCNPJ+'_'+strtran(time(),":","")+".txt")
  262. cHtml:= "erro"
  263. //Envio de e-mail avisando do cadastro
  264. cDestMail:= GetNewPar("PR_MCADCLE")
  265. u_MailCM("ERRO CADASTRO DE CLIENTE",{cDestMail},{},"ERRO NOVO CLIENTE PORTAL",cMsg,"","")
  266. Else
  267. SA1->(dbSetOrder(3))
  268. SA1->(dbSeek(xFilial("SA1")+cCNPJ))
  269. cHtml:= "Cliente cadastrado com sucesso! <br>Aguarde a libera&ccedil;&atilde;o do cliente pelo setor Financeiro. <br><br>C&oacute;digo: "+SA1->A1_COD+'/'+SA1->A1_LOJA+".<br><br>"
  270. //Envio de e-mail avisando do cadastro
  271. cDestMail:= GetNewPar("PR_MCADCLI")
  272. cMsg:= "Um novo cadastro de cliente foi gerado pelo Portal do Representante.<br><br>"
  273. cMsg+= "Vendedor: "+HttpSession->CodVend+" - "+Alltrim(Posicione("SA3",1,xFilial("SA3")+HttpSession->CodVend,"A3_NOME"))+"<br>"
  274. cMsg+= "Cliente: "+SA1->A1_COD+"/"+SA1->A1_LOJA+" - "+SA1->A1_NOME+"<br>"
  275. aCombo:= StrTokArr(Posicione('SX3',2,'A1_TIPO','X3CBox()'),";")
  276. nPos:= aScan(aCombo,{|x| Left(x,1)== SA1->A1_TIPO})
  277. cMsg+= "Tipo: "+Substr(aCombo[nPos],3)+"<br>"
  278. u_MailCM("CADASTRO DE CLIENTE",{cDestMail},{},"NOVO CLIENTE PORTAL: "+SA1->A1_COD+"/"+SA1->A1_LOJA+" - "+;
  279. trim(SA1->A1_NOME),cMsg,"","")
  280. Endif
  281. Web Extended End
  282. Return cHTML
  283. /*__________________________________________________________________________
  284. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  285. ¦¦+-----------------------------------------------------------------------+¦¦
  286. ¦¦¦Funçäo ¦ fCEPEnd ¦ Autor ¦ Lucilene Mendes ¦ Data ¦22.12.20 ¦¦¦
  287. ¦¦+----------+------------------------------------------------------------¦¦¦
  288. ¦¦¦Descriçäo ¦ Busca o endereço pelo CEP. ¦¦¦
  289. ¦¦+-----------------------------------------------------------------------+¦¦
  290. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  291. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  292. User Function fCEPEnd()
  293. Local cHtml := ""
  294. Local cCep:= ""
  295. Local aRet:= {}
  296. Web Extended Init cHtml Start U_inSite()
  297. cCep:= StrTran(HttpPost->CEP,"-","")
  298. If len(cCep) < 8
  299. cHtml:= "F#CEP inv&aacute;lido."
  300. Else
  301. aRet:= u_fbuscaCEP(cCep,.T.)
  302. If !aRet[1]
  303. cHtml:= "F#"+aRet[2]
  304. Else
  305. cHtml:= "T#"+Upper(aRet[2])+"#"+Substr(aRet[3],3)+"#"+Upper(NoAcento(Left(aRet[5],40)))+"#"+Upper(NoAcento(aRet[6]))
  306. Endif
  307. Endif
  308. Web Extended End
  309. Return cHTML