#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