#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:= '
' If HttpSession->Tipo = 'S' cTopo+= '
' cTopo+= ' ' cTopo+= '
' Endif //Filtros cTopo+= '
' cTopo+= '
' cTopo+= ' ' cTopo+= '
' cTopo+= '
' cTopo+= ' ' cTopo+= ' ' cTopo+= ' ' cTopo+= ' ' cTopo+= ' Filtrar' cTopo+= ' ' cTopo+= '
' 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 return cRet