#include "PROTHEUS.CH"
#include "RWMAKE.CH"
#include "APWEBEX.CH"
#include "TOPCONN.CH"
#include "TBICONN.CH"
#DEFINE SMSDEBUG
/*__________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Funçäo ¦ AddCliente ¦ Autor ¦ Lucilene Mendes ¦ Data ¦01.12.20 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçäo ¦ Criação de cadastro de cliente simplificado. ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
User Function AddCliente()
Local cHtml
Local a:= 0
Local f:= 0
Private cDirPortal := ""
Private cEndServ := "" // Endereço do servidor da pagina de Portal
Private cCodVend := ""
Private cNomeVend := ""
Private cOpcao := ""
Private cTipo := ""
Private cComboTipo := ""
Private cCNPJ := ""
Private cNome := ""
Private cNReduz := ""
Private cEndereco := ""
Private cBairro := ""
Private cCidade := ""
Private cEstado := ""
Private cCep := ""
Private cDDD := ""
Private cTelefone := ""
Private cTelex := ""
Private cEmail := ""
Private cContato := ""
Private cOptMun := ""
Private cDisabled := ' disabled '
Private nPosTipo := 0
Private aTipo := {}
Private aEstado := {}
Private cSite := "u_PortalLogin.apw"
Private cPagina := "Cadastro de Cliente"
Private cMenus := ""
Private cTitle := "Portal SMS"
Private cBotoes := ""
Private cCodLogin := ""
Private cVendLogin:= ""
Web Extended Init cHtml Start U_inSite()
cVendLogin := u_GetUsrPR()
cCodLogin := U_SetParPR(cVendLogin)
If Empty(HttpSession->CodVend)
cHtml:= ''
Return cHtml
Else
If !Empty(HttpSession->Superv) .and. HttpSession->Superv <> HttpSession->CodVend
HttpSession->CodVend:= HttpSession->Superv
Endif
Endif
// Pega do parâmetro com o Titulo do Portal
cTitle := SuperGetMV("PS_TITLE", .T., "Portal SMS")
// Define a funcao a ser chama no link
cSite := "u_SMSPortal.apw?PR="+cCodLogin
// Monta o cabeçalho para a pagina
cHeader := U_PSHeader(cTitle, cSite)
//Função que atualiza os menus
cMenus := U_GetMenus(AllTrim(Upper(Procname())), cVendLogin)
//Atualiza as variáveis
cEndServ := GetMv('MV_WFBRWSR')
cCodVend := cVendLogin //HttpSession->CodVend
cNomeVend:= HttpSession->Nome
//Tipo do Cliente
aCombo:= StrTokArr(Posicione('SX3',2,'A1_TIPO','X3CBox()'),";")
For a:= 1 to Len(aCombo)
aAdd(aTipo,{Left(aCombo[a],1),aCombo[a]})
Next
//aTipo:= {{"F","Consumidor Final"},{"L","Produtor Rural"},{"R","Revendedor"},{"S","Solidário"},{"X","Exportação"}}
cTipo:=''
//Estado
dbSelectArea("SX5")
dbSeek(xFilial("SX5")+'12')
While SX5->(!Eof()) .and. SX5->X5_FILIAL = xFilial("SX5") .and. SX5->X5_TABELA = '12'
aAdd(aEstado,{SX5->X5_CHAVE,SX5->X5_DESCRI})
SX5->(dbSkip())
End
cEstado:=''
//Adiciona os botões da página
cBotoes+=''+chr(13)+chr(10)
cBotoes+=''+chr(13)+chr(10)
//Retorna o HTML para construção da página
cHtml := H_AddCliente()
Web Extended End
Return (cHTML)
/*__________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Funçäo ¦ fVldCGC ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.12.20 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçäo ¦ Função utilizada no Ajax para validar o CPF/CNPJ ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
User Function fVldCGC()
Local cCGC := HttpPost->CGC
Local cTipo := HttpPost->tipo
Local cHtml := ""
Web Extended Init cHtml Start U_inSite()
If !Empty(cCgc)
//Remove os separadores
cCgc:= StrTran(StrTran(StrTran(cCGC,".",""),"-",""),"/","")
//Verifica se num é válido
If cTipo <> "X"
SA1->(dbSetOrder(3))
If SA1->(dbSeek(xFilial("SA1")+cCGC))
cHtml:= SA1->A1_COD+'/'+SA1->A1_LOJA
Endif
Endif
Endif
Web Extended end
Return cHtml
/*__________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Funçäo ¦ fSetCidade ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.12.20 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçäo ¦ Localiza as cidades do estado selecionado ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
User Function fSetCidade()
Local cEstado := Alltrim(HttpPost->estado)
Local cCombo := ""
Local cHtml := ""
Web Extended Init cHtml Start U_inSite()
If !Empty(cEstado)
dbSelectArea("CC2")
CC2->(dbSeek(xFilial("CC2")+cEstado))
cCombo+=' '
While CC2->(!Eof()) .and. CC2->CC2_EST = cEstado
cCombo+=' '
CC2->(dbSkip())
End
Endif
cHtml:= cCombo
Web Extended end
Return cHtml
/*__________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Funçäo ¦ SlvCliente ¦ Autor ¦ Lucilene Mendes ¦ Data ¦02.12.20 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçäo ¦ Gera o cadastro do cliente. ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
User Function SlvCliente()
Local cHtml
Local cDirErro := "erro\"
Local cDestMail := ""
Local aCliente := ""
Private lMsErroAuto:= .F.
Web Extended Init cHtml Start U_inSite()
// #IFDEF SMSDEBUG
// conOut(Procname()+"("+ltrim(str(procline()))+") *** Portal ")
// aInfo := HttpGet->aGets
// For nI := 1 to len(aInfo)
// conout('GET '+str(nI,3)+' = '+aInfo[nI]+' -> '+&("HTTPGET->"+aInfo[nI]))
// Next
// aInfo := HttpPost->aPost
// For nI := 1 to len(aInfo)
// conout('POST '+str(nI,3)+' = '+aInfo[nI]+' -> '+&("HTTPPOST->"+aInfo[nI]))
// Next
// #ENDIF
//Verifica se não perdeu a sessão
If type("HttpSession->CodVend") = "U" .or. Empty(HttpSession->CodVend)
conout(Procname()+"("+ltrim(str(procline()))+") *** Portal "+"Sessao encerrada")
cHtml:= ''
return cHtml
Else
//Posiciona no vendedor
SA3->(dbSeek(xFilial("SA3")+HttpSession->CodVend))
Endif
cCnpj:= StrTran(StrTran(StrTran(HttpPost->A1_CGC,".",""),"-",""),"/","")
cTipo:= Iif(HttpPost->A1_TIPO = "F" .and. !Empty(HttpPost->A1_INSCR),"S",HttpPost->A1_TIPO)
cDDD:= Iif(Type("HttpPost->A1_TEL") = "U","",Left(StrTran(StrTran(HttpPost->A1_TEL,"(",""),")",""),2))
cTel:= Iif(Type("HttpPost->A1_TEL") = "U","",Alltrim(Substr(StrTran(StrTran(HttpPost->A1_TEL,"(",""),")",""),3)))
cFax:= Iif(Type("HttpPost->A1_TELEX") = "U","",Substr(StrTran(StrTran(HttpPost->A1_TELEX,"(",""),")",""),3))
cCep:= Iif(Type("HttpPost->A1_CEP") = "U","",StrTran(HttpPost->A1_CEP,"-",""))
cEndereco:= Iif(Type("HttpPost->A1_END") = "U","",Upper(HttpPost->A1_END))
cEndereco+= Iif(Type("HttpPost->A1_NR_END") = "U","",", "+HttpPost->A1_NR_END)
cComplem:= Iif(Type("HttpPost->A1_COMPLEM") = "U","",ALLTRIM(HttpPost->A1_COMPLEM))
cBairro:= Iif(Type("HttpPost->A1_BAIRRO") = "U","",ALLTRIM(Upper(HttpPost->A1_BAIRRO)))
cEmail:= Iif(Type("HttpPost->A1_EMAIL") = "U","",ALLTRIM(Lower(HttpPost->A1_EMAIL)))
cInscricao:= Iif(Type("HttpPost->A1_INSCR") = "U","",Iif(Empty(HttpPost->A1_INSCR),'ISENTO',HttpPost->A1_INSCR))
cContato:= Iif(Type("HttpPost->A1_CONTATO") = "U","",Upper(HttpPost->A1_CONTATO))
cMsBlock:= '1'
cNatureza:= GetNewPar("PR_NATCLI","10101")
cCtaContabil:= GetNewPar("PR_CTACLI","11201002")
// Verifica se o cliente ja esta cadastrado
dbSelectArea("SA1")
SA1->(DbSetOrder(3)) // A1_FILIAL+A1_CGC
if SA1->(dbSeek(xFilial("SA1")+cCNPJ))
cHtml:= "erro"
return cHtml
endif
SA1->(DbSetOrder(1)) // A1_FILIAL+A1_COD+A1_LOJA
//Dados para cadastrar o cliente
cCodCli:= GetSXeNum("SA1","A1_COD")
ConfirmSX8()
aCliente:= {{"A1_COD" ,cCodCli ,Nil},;
{"A1_LOJA" ,'01' ,Nil},;
{"A1_CGC" ,cCNPJ ,Nil},;
{"A1_NOME" ,ALLTRIM(Upper(HttpPost->A1_NOME)) ,Nil},;
{"A1_PESSOA" ,Iif(Len(cCNPJ)>11,"J","F") ,Nil},;
{"A1_NREDUZ" ,ALLTRIM(Upper(HttpPost->A1_NREDUZ)) ,Nil},;
{"A1_TIPO" ,cTipo ,Nil},;
{"A1_CEP" ,cCep ,Nil},;
{"A1_END" ,cEndereco ,Nil},;
{"A1_EST" ,ALLTRIM(HttpPost->A1_EST) ,Nil},;
{"A1_COD_MUN" ,ALLTRIM(HttpPost->A1_COD_MUN) ,Nil},;
{"A1_BAIRRO" ,Left(cBairro,30) ,Nil},;
{"A1_COMPLEM" ,cComplem ,Nil},;
{"A1_INSCR" ,cInscricao ,Nil},;
{"A1_DDD" ,cDDD ,Nil},;
{"A1_TEL" ,StrTran(cTel,"-","") ,Nil},;
{"A1_TELEX" ,StrTran(cFax,"-","") ,Nil},;
{"A1_EMAIL" ,cEmail ,Nil},;
{"A1_PAIS" ,"105" ,Nil},;
{"A1_CODPAIS" ,"01058" ,Nil},;
{"A1_MSBLQL" ,cMsBlock ,Nil},;
{"A1_DTINIV" ,date() ,Nil},;
{"A1_CONTA" ,cCtaContabil ,Nil},;
{"A1_VEND" ,SA3->A3_COD ,Nil},; //{"A1_VEND2" ,SA3->A3_SUPER ,Nil},;//{"A1_VEND3" ,SA3->A3_GEREN ,Nil},;
{"A1_CONTATO" ,cContato ,Nil},;
{"A1_NATUREZ" ,cNatureza ,Nil},;
{"A1_XCLIFID" ,'N' ,Nil}}
lMsErroAuto := .F.
MSExecAuto({|x,y| Mata030(x,y)},aCliente,3)
If lMsErroAuto
If !ExistDir(cDirErro)
MakeDir(cDirErro)
Endif
cDirErro+=dtos(date())
If !ExistDir(cDirErro)
MakeDir(cDirErro)
Endif
//Grava o erro
cMsg:= MostraErro(cDirErro,"erro_cliente_"+cCNPJ+'_'+strtran(time(),":","")+".txt")
cHtml:= "erro"
//Envio de e-mail avisando do cadastro
cDestMail:= GetNewPar("PR_MCADCLE")
u_MailCM("ERRO CADASTRO DE CLIENTE",{cDestMail},{},"ERRO NOVO CLIENTE PORTAL",cMsg,"","")
Else
SA1->(dbSetOrder(3))
SA1->(dbSeek(xFilial("SA1")+cCNPJ))
cHtml:= "Cliente cadastrado com sucesso! Aguarde a liberação do cliente pelo setor Financeiro.
Código: "+SA1->A1_COD+'/'+SA1->A1_LOJA+".
"
//Envio de e-mail avisando do cadastro
cDestMail:= GetNewPar("PR_MCADCLI")
cMsg:= "Um novo cadastro de cliente foi gerado pelo Portal do Representante.
"
cMsg+= "Vendedor: "+HttpSession->CodVend+" - "+Alltrim(Posicione("SA3",1,xFilial("SA3")+HttpSession->CodVend,"A3_NOME"))+" "
cMsg+= "Cliente: "+SA1->A1_COD+"/"+SA1->A1_LOJA+" - "+SA1->A1_NOME+" "
aCombo:= StrTokArr(Posicione('SX3',2,'A1_TIPO','X3CBox()'),";")
nPos:= aScan(aCombo,{|x| Left(x,1)== SA1->A1_TIPO})
cMsg+= "Tipo: "+Substr(aCombo[nPos],3)+" "
u_MailCM("CADASTRO DE CLIENTE",{cDestMail},{},"NOVO CLIENTE PORTAL: "+SA1->A1_COD+"/"+SA1->A1_LOJA+" - "+;
trim(SA1->A1_NOME),cMsg,"","")
Endif
Web Extended End
Return cHTML
/*__________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Funçäo ¦ fCEPEnd ¦ Autor ¦ Lucilene Mendes ¦ Data ¦22.12.20 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçäo ¦ Busca o endereço pelo CEP. ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
User Function fCEPEnd()
Local cHtml := ""
Local cCep:= ""
Local aRet:= {}
Web Extended Init cHtml Start U_inSite()
cCep:= StrTran(HttpPost->CEP,"-","")
If len(cCep) < 8
cHtml:= "F#CEP inválido."
Else
aRet:= u_fbuscaCEP(cCep,.T.)
If !aRet[1]
cHtml:= "F#"+aRet[2]
Else
cHtml:= "T#"+Upper(aRet[2])+"#"+Substr(aRet[3],3)+"#"+Upper(NoAcento(Left(aRet[5],40)))+"#"+Upper(NoAcento(aRet[6]))
Endif
Endif
Web Extended End
Return cHTML