#include "PROTHEUS.CH"
#include "RWMAKE.CH"
#include "APWEBEX.CH"
#include "TOPCONN.CH"
#include "TBICONN.CH"
/*__________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦Funçäo ¦ Oportunidade ¦ Autor ¦ Lucilene Mendes ¦ Data ¦23.08.24 ¦¦¦
¦¦+----------+------------------------------------------------------------¦¦¦
¦¦¦Descriçäo ¦ Grid com as oportunidades do vendedor. ¦¦¦
¦¦+-----------------------------------------------------------------------+¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
User Function Oportunidade()
Local cHtml
Local cLink := ""
Local cCombo := ""
Local cDataDe := ""
Local cDataAte := ""
Local cFiltDe := ""
Local cFilAte := ""
Local cLinkDet := ""
Local aStatus:= {}
Private cColunas:= ""
Private cItens := ""
Private cTopo := ""
Private cSite := "u_PortalLogin.apw"
Private cPagina := "Homologações"
Private cTitle := ""
Private lTableTools:= .T.
Private lSidebar:= .F.
Private cCodLogin := ""
Private cVendLogin:= ""
Web Extended Init cHtml Start U_inSite()
If Empty(HttpSession->CodVend)
cHtml:= ''
Return cHtml
Else
If !Empty(HttpSession->Superv) .and. HttpSession->Superv <> HttpSession->CodVend
HttpSession->CodVend:= HttpSession->Superv
Endif
Endif
cVendLogin := u_GetUsrPR()
cCodLogin := U_SetParPR(cVendLogin)
// 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)
//Tratamento dos filtros
If type("HttpPost->DataDe") <> "U"
//Se vazio, usa as datas padrão para evitar erro na query
If Empty(HttpPost->DataDe) .or. Empty(HttpPost->DataAte)
cDataDe:= dtos(date()-30)
cDataAte:= dtos(date())
Else
cDataDe:= dtos(ctod(HttpPost->DataDe))
cDataAte:= dtos(ctod(HttpPost->DataAte))
Endif
//Atualiza as variáveis no valor do filtro
cFiltDe:= dtoc(stod(cDataDe))
cFilAte:= dtoc(stod(cDataAte))
Else
//Variáveis dos input dos filtros
cFiltDe:= dtoc(date()-30)
cFilAte:= dtoc(date())
//Variáveis de filtro da query
cDataDe:= dtos(date()-30)
cDataAte:= dtos(date())
Endif
//Topo da janela
//Botão incluir novo orçamento
cTopo:= '
'
cQry:= " Select DISTINCT AD1_FILIAL, AD1_NROPOR, AD1_DESCRI, AD1_DESCOP, AD1_CODCLI, AD1_LOJCLI, A1_NOME, A1_EMAIL, AD1_DTINI, AD1_DTFIM, AD1_HOMOLO, AD1_VEND, AD1_REGION, AD1_DESCRE, "
cQry+= " AD1_DESCCI, AD1_UF, AD1_STATUS, AD1_REVISA, AD1.R_E_C_N_O_ RECAD1 "
cQry+= " From "+RetSqlName("AD1")+" AD1 "
cQry+= " Inner Join "+RetSqlName("SA1")+" SA1 On A1_FILIAL = '"+xFilial("SA1")+"' AND A1_COD = AD1_CODCLI AND A1_LOJA = AD1_LOJCLI AND SA1.D_E_L_E_T_ = ' ' "
cQry+= " Where AD1.D_E_L_E_T_ = ' ' "
/*
If HttpSession->Tipo = 'S' //Supervisor acessa todos os orçamentos da sua equipe
cQry+= " AND AD1_VEND in "+FormatIn(HttpSession->Equipe,"|")+" "
Else
cQry+= " AND AD1_VEND = '"+cVendLogin+"' "
Endif
*/
If !Empty(cDataAte)
cQry+= " And AD1_DTINI between '"+cDataDe+"' and '"+cDataAte+"' "
Endif
cQry+= " Order by AD1_DTINI, AD1_NROPOR, AD1_CODCLI, AD1_LOJCLI "
If Select("QRY") > 0
QRY->(dbCloseArea())
Endif
APWExOpenQuery(ChangeQuery(cQry),'QRY',.T.)
//Cabeçalho do grid
cColunas+='Filial | '
cColunas+='Número | '
cColunas+='Descrição | '
//cColunas+='Complemento | '
cColunas+='Status | '
cColunas+='Revisão | '
cColunas+='Início | '
cColunas+='Fim | '
cColunas+='Cliente | '
cColunas+='Nome | '
cColunas+='Cidade/UF | '
cColunas+='Regional | '
If HttpSession->Tipo = 'S'
cColunas+='Vendedor | '
Endif
cColunas+=' | '
aStatus:= RetSx3Box(Posicione('SX3',2,'AD1_STATUS','X3CBox()'),,,1)
While QRY->(!Eof())
//Atualiza os controles do grid
cLink:= "U_MntOpt.apw?PR="+cCodLogin+"&rec="+cValtoChar(QRY->RECAD1)
cLinkDet := '"onclick="window.document.location='+"'"+cLink+"&opc=view'"+';"'
cItens+=''
cItens+=' '+QRY->AD1_FILIAL+' | '
cItens+=' '+QRY->AD1_NROPOR+' | '
If (nSeek := Ascan(aStatus, { |x| x[ 2 ] == QRY->AD1_STATUS })) > 0
cCombo := AllTrim( aStatus[nSeek,3])
Endif
cItens+=' '+Upper(QRY->AD1_DESCRI)+' | '
//cItens+=' '+QRY->AD1_DESCOP+' | '
cItens+=' '+cCombo+' | '
cItens+=' '+QRY->AD1_REVISA+' | '
cItens+=' '+dtoc(stod(QRY->AD1_DTINI))+' | '
cItens+=' '+dtoc(stod(QRY->AD1_DTFIM))+' | '
cItens+=' '+QRY->AD1_CODCLI+'/'+QRY->AD1_LOJCLI+' | '
cItens+=' '+Alltrim(QRY->A1_NOME)+' | '
cItens+=' '+Alltrim(QRY->AD1_DESCCI+" / "+QRY->AD1_UF)+' | '
cItens+=' '+Alltrim(QRY->AD1_DESCRE)+' | '
If HttpSession->Tipo = 'S'
cItens+=' '+QRY->AD1_VEND+' - '+Posicione("SA3",1,xFilial("SA3")+QRY->AD1_VEND,"A3_NREDUZ")+' | '
Endif
cItens+=' '
//cItens+= ' '
If QRY->AD1_STATUS $ "1/3"
cItens+=' '
If Empty(QRY->AD1_REVISA)
cItens+=' '
Endif
EndIf
cItens+=' | '
cItens+='
'
QRY->(dbSkip())
End
//Retorna o HTML para construção da página
cHtml := H_SMSGrid()
Web Extended End
Return (cHTML)
// Montar o formulário para mandar por e-mail
static function montarForm(cTitulo, cSubm)
Local cRet:=""
Local cEmail:= ""
cRet+= ''+CRLF
cRet+= ' '+CRLF
cRet+= '
'+CRLF
cRet+= ' '+CRLF
cRet+= ' Enviar '+cTitulo+' por e-mail
'+CRLF
cRet+= ' '+CRLF
cRet+= ' '+CRLF
cRet+= '
'+CRLF
cRet+= '
'+CRLF
cRet+= ' '+CRLF
cRet+= ' '+CRLF
cRet+= '
'+CRLF
return cRet