MntOpt.apl 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956
  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 ¦ MntOpt ¦ Autor ¦ Lucilene Mendes ¦ Data ¦28.08.17 ¦¦¦
  11. ¦¦+----------+------------------------------------------------------------¦¦¦
  12. ¦¦¦Descriçäo ¦ Manutenção de Oportunidade de Venda. ¦¦¦
  13. ¦¦+-----------------------------------------------------------------------+¦¦
  14. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  15. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  16. User Function MntOpt()
  17. Local cHtml
  18. Local nOpc := 0
  19. Local nRecAD1 := 0
  20. Local F := 0
  21. local i
  22. Private aAnTemp := {}
  23. Private cFilVen := ""
  24. Private cCodLogin := ""
  25. Private cVendLogin := ""
  26. Private cVendedor := ""
  27. Private cSite := "u_PortalLogin.apw"
  28. Private cPagina := "Homologação"
  29. Private cTitle := "Portal SMS"
  30. Private cMenus := ""
  31. Private cAnexos := ""
  32. Private cDirOpt := "anexosPortal\oportunidade\"
  33. Private cDirPortal := ""
  34. Private cEndServ := "" // Endereço do servidor da pagina de Portal
  35. Private cItensHid := ""
  36. Private cBotoes := ""
  37. Private cBtAddAnex := ""
  38. Private cCodOpt := ""
  39. Private cDescri := ""
  40. Private cComplem := ""
  41. Private cCliente := ""
  42. Private cContato := ""
  43. Private cEmail := ""
  44. Private cParceiro := ""
  45. Private cUF := ""
  46. Private cCidade := ""
  47. Private cEndereco := ""
  48. Private cRegional := ""
  49. Private cInicio := ""
  50. Private cFim := ""
  51. Private cNotas := ""
  52. Private cStatus := ""
  53. Private cEspecif := ""
  54. Private cContEsp := ""
  55. Private cStatusHom := ""
  56. Private cRT := ""
  57. Private cSegmento := ""
  58. Private cNivel := ""
  59. Private cEncer := ""
  60. Private cMotivo := ""
  61. Private cOptMun := ""
  62. Private lNewOpt := .F.
  63. Private lEdit := .F.
  64. Private lCopy := .F.
  65. Private aStatus := {}
  66. Private aStHom := {}
  67. Private aSegmen := {}
  68. Private aNivel := {}
  69. Private aAnexos := {}
  70. Web Extended Init cHtml Start U_inSite()
  71. cVendLogin := u_GetUsrPR()
  72. cCodLogin := U_SetParPR(cVendLogin)
  73. If Empty(HttpSession->CodVend)
  74. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL='+cSite+'">'
  75. Return cHtml
  76. Else
  77. If !Empty(HttpSession->Superv) .and. HttpSession->Superv <> HttpSession->CodVend
  78. HttpSession->CodVend:= HttpSession->Superv
  79. Endif
  80. Endif
  81. // Pega do parâmetro com o Titulo do Portal
  82. cTitle := SuperGetMV("PS_TITLE", .T., "Portal SMS")
  83. // Define a funcao a ser chama no link
  84. cSite := "u_SMSPortal.apw?PR="+cCodLogin
  85. // Monta o cabeçalho para a pagina
  86. cHeader := U_PSHeader(cTitle, cSite)
  87. //Função que atualiza os menus
  88. cMenus := U_GetMenus(AllTrim(Upper(Procname())), cVendLogin)
  89. //Atualiza as variáveis
  90. cEndServ := GetMv('MV_WFBRWSR')
  91. cCodVend := cVendLogin
  92. cNomeVend:= HttpSession->Nome
  93. cOpcao := HttpGet->opc
  94. if !empty(HttpGet->rec)
  95. nRecAD1 := val(HttpGet->rec)
  96. EndIf
  97. lEdit := .F.
  98. lDele := .F.
  99. Do Case
  100. Case cOpcao == "view"
  101. nOpc:= 2
  102. cPagina += " - Visualizar"
  103. Case cOpcao == "edit"
  104. nOpc:= 4
  105. cPagina += " - Alterar"
  106. lEdit := .T.
  107. Case cOpcao == "dele"
  108. nOpc:= 5
  109. cPagina += " - Excluir"
  110. lDele := .T.
  111. Case cOpcao == "copy"
  112. nOpc = 3
  113. cPagina += " - Copiar"
  114. lEdit := .T.
  115. lCopy := .T.
  116. EndCase
  117. //Posiciona no Orçamento
  118. If !Empty(nRecAD1)
  119. dbSelectArea("AD1")
  120. AD1->(dbGoTo(nRecAD1))
  121. //Troca de filial
  122. u_PTChgFil(AD1->AD1_FILIAL)
  123. dbSelectArea("AD1")
  124. AD1->(dbGoTo(nRecAD1))
  125. dbSelectArea("SA1")
  126. SA1->(DbSetOrder(1))
  127. SA1->(dbgotop())
  128. SA1->(dbSeek(xFilial("SA1")+AD1->AD1_CODCLI+AD1->AD1_LOJCLI))
  129. Endif
  130. //Filial
  131. cCodOpt:= '<div class="row form-group">'
  132. cCodOpt+= ' <div class="col-lg-2">'
  133. cCodOpt+= ' <label class="control-label">Filial</label>'
  134. cCodOpt+= ' <input id="AD1_FILIAL" name="AD1_FILIAL" class="form-control" value="'+AD1->AD1_FILIAL+'" disabled >'
  135. cCodOpt+= ' <input type="hidden" name="OPCAO" id="OPCAO" value="'+cValtoChar(nOpc)+'" />'
  136. cCodOpt+= ' </div>'
  137. //Num Oportunidade
  138. cCodOpt+= ' <div class="col-lg-2">'
  139. cCodOpt+= ' <label class="control-label">Número</label>'
  140. cCodOpt+= ' <input id="AD1_NROPOR" name="AD1_NROPOR" class="form-control" value="'+AD1->AD1_NROPOR+'" disabled >'
  141. //cCodOpt+= ' <input id="AD1_VEND" name="AD1_VEND" type="hidden" value="'+AD1->AD1_VEND+'">'
  142. cCodOpt+= ' </div>'
  143. cCodOpt+= '</div>'
  144. cDescri:= '<input id="AD1_DESCRI" name="AD1_DESCRI" class="form-control text-uppercase" maxlength="'+cvaltochar(GetSX3Cache("AD1_DESCRI","X3_TAMANHO"))+'" '
  145. cDescri+= 'value="'+Alltrim(AD1->AD1_DESCRI)+'" '
  146. cDescri+= Iif(!lCopy .and. !lEdit,'disabled','')+'>'
  147. //cComplem:= '<input id="AD1_DESCOP" name="AD1_DESCOP" class="form-control" maxlength="'+cvaltochar(GetSX3Cache("AD1_DESCOP","X3_TAMANHO"))+'" '
  148. //cComplem+= 'value="'+Alltrim(AD1->AD1_DESCOP)+'" '
  149. //cComplem+= Iif(!lCopy .and. !lEdit,'disabled','')+'>'
  150. //Cliente
  151. cCliente:='<select data-plugin-selectTwo class="form-control populate placeholder" data-plugin-options='+"'"
  152. cCliente+='{ "placeholder": "Selecione um Cliente", "allowClear": false }'+"'"+' name="AD1_CODCLI" id="AD1_CODCLI" '
  153. cCliente+=' disabled >' //value='+AD1->AD1_CODCLI+AD1->AD1_LOJCLI+'
  154. cCliente+=' <option value="'+AD1->AD1_CODCLI+AD1->AD1_LOJCLI+'">'+AD1->AD1_CODCLI+'/'+AD1->AD1_LOJCLI+' - '+Alltrim(Posicione("SA1",1,xFilial("SA1")+AD1->AD1_CODCLI+AD1->AD1_LOJCLI,"A1_NOME"))+'</option>'
  155. cCliente+='</select>'
  156. HttpSession->Cliente:= AD1->AD1_CODCLI+AD1->AD1_LOJCLI
  157. //Contato
  158. cContato:= '<input id="AD1_CONTCL" name="AD1_CONTCL" class="form-control text-uppercase" maxlength="'+cvaltochar(GetSX3Cache("AD1_CONTCL","X3_TAMANHO"))+'" '
  159. cContato+= ' value="'+Alltrim(AD1->AD1_CONTCL)+'" '
  160. cContato+= Iif(!lCopy .and. !lEdit,'disabled','')+'>'
  161. //Email
  162. //cEmail:= '<input id="AD1_EMAIL1" name="AD1_EMAIL1" class="form-control" maxlength="'+cvaltochar(GetSX3Cache("AD1_EMAIL1","X3_TAMANHO"))+'" '
  163. //cEmail+= ' value="'+Alltrim(AD1->AD1_EMAIL1)+'" '
  164. //cEmail+= Iif(!lCopy .and. !lEdit,'disabled','')+'>'
  165. //Parceiro
  166. //cParceiro:= '<input id="AD1_PARC1" name="AD1_PARC1" class="form-control text-uppercase" maxlength="'+cvaltochar(GetSX3Cache("AD1_PARC1","X3_TAMANHO"))+'" '
  167. //cParceiro+= ' value="'+Alltrim(AD1->AD1_PARC1)+'" '
  168. //cParceiro+= Iif(!lCopy .and. !lEdit,'disabled','')+'>'
  169. //Seleciona os estados disponíveis no combo
  170. cUF:='<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  171. cUF+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="AD1_UF" id="AD1_UF" '
  172. cUF+='required="" aria-required="true" '+Iif(lCopy .or. lEdit,'','disabled')+' onchange="javascript:SetCidade();">'
  173. cUF+=' <option value="'+AD1->AD1_UF+'">'+AD1->AD1_UF+" - "+fDesc("SX5","12"+AD1->AD1_UF,"X5_DESCRI")+'</option>'
  174. If lEdit
  175. //Seleciona as opções do combo
  176. cQry:= " Select X5_CHAVE, X5_DESCRI "
  177. cQry+= " From "+RetSqlName("SX5")+" SX5 "
  178. cQry+= " Where X5_FILIAL = '"+xFilial("SX5")+"' "
  179. cQry+= " And X5_TABELA = '12' "
  180. cQry+= " And X5_CHAVE <> '"+AD1->AD1_UF+"' "
  181. cQry+= " And SX5.D_E_L_E_T_ = ' ' "
  182. If Select("QRP") > 0
  183. QRP->(dbCloseArea())
  184. Endif
  185. TcQuery cqry New Alias "QRP"
  186. While QRP->(!Eof())
  187. cUF+=' <option value="'+QRP->X5_CHAVE+'"'+Iif(Alltrim(QRP->X5_CHAVE) == AllTrim(AD1->AD1_UF),'selected','')+'>'+Alltrim(QRP->X5_CHAVE)+" - "+Alltrim(QRP->X5_DESCRI)+'</option>'
  188. QRP->(dbSkip())
  189. End
  190. QRP->(dbCloseArea())
  191. Endif
  192. cUF+='</select>'
  193. //Cidade
  194. cCidade:= '<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  195. cCidade+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="AD1_CIDADE" id="AD1_CIDADE" '
  196. cCidade+='required="" aria-required="true" disabled>'
  197. cCidade+=' <option value="'+AD1->AD1_CIDADE+'">'+Alltrim(AD1->AD1_DESCCI)+'</option>'
  198. cCidade+='</select>'
  199. //Endereço
  200. cEndereco:= '<input id="AD1_ENDER" name="AD1_ENDER" class="form-control text-uppercase" maxlength="'+cvaltochar(GetSX3Cache("AD1_ENDER","X3_TAMANHO"))+'" '
  201. cEndereco+= ' value="'+Alltrim(AD1->AD1_ENDER)+'" '
  202. cEndereco+= Iif(!lCopy .and. !lEdit,'disabled','')+'>'
  203. //Início
  204. cInicio:= '<input id="AD1_DTINI" name="AD1_DTINI" class="form-control" '
  205. cInicio+= ' value="'+dtoc(AD1->AD1_DTINI)+'" disabled>'
  206. //Fim
  207. cDiaIni:= cvaltochar(DateDiffDay(date(),AD1->AD1_DTINI))
  208. cFim:= '<input data-plugin-datepicker="" data-plugin-options='+"'"+'{"startDate": "-'+cDiaIni+'d","autoclose": "true", "language": "pt-BR",'
  209. cFim+= '"daysOfWeekDisabled": "","daysOfWeekHighlighted":"[0]"}'+"'"+' '
  210. cFim+= 'id="AD1_DTFIM" name="AD1_DTFIM" class="form-control only-numbers" type="text" '
  211. cFim+= ' value="'+dtoc(AD1->AD1_DTFIM)+'" '
  212. cFim+= Iif(!lCopy .and. !lEdit,'disabled','')+' onblur="javascript:vldDtFim();">'
  213. //Regional
  214. cRegional:= '<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  215. cRegional+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="AD1_REGION" id="AD1_REGION" '
  216. cRegional+='required="" aria-required="true" '+Iif(lCopy .or. lEdit,'','disabled')+'>'
  217. cRegional+=' <option value="'+AD1->AD1_REGION+'">'+AD1->AD1_REGION+' - '+AD1->AD1_DESCRE+'</option>'
  218. If lEdit
  219. //Seleciona as opções do combo
  220. cRegional+= u_ListaVend(.T.,AD1->AD1_REGION)
  221. Endif
  222. cRegional+='</select>'
  223. //Vendedor
  224. cVendedor:= '<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  225. cVendedor+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="AD1_VEND" id="AD1_VEND" '
  226. cVendedor+='required="" aria-required="true" '+Iif(lCopy .or. lEdit,'','disabled')+'>'
  227. cVendedor+=' <option value="'+AD1->AD1_VEND+'">'+AD1->AD1_VEND+' - '+fDesc("SA3",AD1->AD1_VEND,"A3_NOME")+'</option>'
  228. If lEdit
  229. //Seleciona as opções do combo
  230. cVendedor+= u_ListaVend(.F.,AD1->AD1_VEND)
  231. Endif
  232. cVendedor+='</select>'
  233. //Especificadora
  234. cEspecif:='<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  235. cEspecif+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="AD1_PERCEI" id="AD1_PERCEI" '
  236. cEspecif+='required="" aria-required="true" '+Iif(lCopy .or. lEdit,'','disabled')+'>'
  237. cEspecif+=' <option value="'+AD1->AD1_PERCEI+'">'+AD1->AD1_PERCEI+" - "+fDesc("AC4",AD1->AD1_PERCEI,"AC4_NOME")+'</option>'
  238. If lEdit
  239. //Seleciona as opções do combo
  240. cQry:= " Select AC4_PARTNE, AC4_NOME "
  241. cQry+= " From "+RetSqlName("AC4")+" AC4 "
  242. cQry+= " Where AC4_FILIAL = '"+xFilial("AC4")+"' "
  243. cQry+= " And AC4_MSBLQL <> '1' "
  244. cQry+= " And AC4.D_E_L_E_T_ = ' ' "
  245. If Select("QRP") > 0
  246. QRP->(dbCloseArea())
  247. Endif
  248. TcQuery cqry New Alias "QRP"
  249. While QRP->(!Eof())
  250. cEspecif+=' <option value="'+QRP->AC4_PARTNE+'"'+Iif(Alltrim(QRP->AC4_PARTNE) == AllTrim(AD1->AD1_PERCEI),'selected','')+'>'+Alltrim(QRP->AC4_PARTNE)+" - "+Alltrim(QRP->AC4_NOME)+'</option>'
  251. QRP->(dbSkip())
  252. End
  253. QRP->(dbCloseArea())
  254. Endif
  255. cEspecif+='</select>'
  256. //Contato Especificadora
  257. cContEsp:='<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  258. cContEsp+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="AD1_CONTAT" id="AD1_CONTAT" '
  259. cContEsp+='required="" aria-required="true" '+Iif(lCopy .or. lEdit,'','disabled')+'>'
  260. CONOUT(AD1->AD1_CONTAT)
  261. CONOUT(AD1->AD1_NROPOR)
  262. cContEsp+=' <option value="'+AD1->AD1_CONTAT+'">'+AD1->AD1_CONTAT+" - "+fDesc("SU5",AD1->AD1_CONTAT,"U5_CONTAT")+'</option>'
  263. If lEdit
  264. //Seleciona as opções do combo
  265. cQry:= " Select U5_CODCONT, U5_CONTAT "
  266. cQry+= " From "+RetSqlName("SU5")+" SU5 "
  267. cQry+= " Where U5_FILIAL = '"+xFilial("SU5")+"' "
  268. cQry+= " And U5_MSBLQL <> '1' "
  269. cQry+= " And SU5.D_E_L_E_T_ = ' ' "
  270. If Select("QRP") > 0
  271. QRP->(dbCloseArea())
  272. Endif
  273. TcQuery cqry New Alias "QRP"
  274. While QRP->(!Eof())
  275. cContEsp+=' <option value="'+QRP->U5_CODCONT+'"'+Iif(Alltrim(QRP->U5_CODCONT) == AllTrim(AD1->AD1_CONTAT),'selected','')+'>'+Alltrim(QRP->U5_CODCONT)+" - "+Alltrim(QRP->U5_CONTAT)+'</option>'
  276. QRP->(dbSkip())
  277. End
  278. QRP->(dbCloseArea())
  279. Endif
  280. cContEsp+='</select>'
  281. //Status Homologação
  282. aStHom:= RetSx3Box(Posicione('SX3',2,'AD1_HOMOLO','X3CBox()'),,,1)
  283. cStatusHom:='<select data-plugin-selectTwo class="form-control poulatemb-md" data-plugin-options='+"'"+'{"placeholder": "Selecione...","minimumResultsForSearch": "-1"}'+"'"'
  284. cStatusHom+=' name="AD1_HOMOLO" id="AD1_HOMOLO" '
  285. cStatusHom+= Iif(!lEdit,'disabled','')+'>'
  286. If lEdit
  287. For f:= 1 to Len(aStHom)
  288. cStatusHom+=' <option value="'+aStHom[f,2]+'" '+Iif(AllTrim(aStHom[f,2]) == AllTrim(AD1->AD1_HOMOLO),'selected','')+'>'+aStHom[f,3]+'</option>'
  289. Next
  290. Else
  291. nPos:= aScan(aStHom,{|x|x[1]==AD1->AD1_HOMOLO})
  292. If nPos = 0
  293. nPos:= 1
  294. Endif
  295. cStatusHom+=' <option value="'+AD1->AD1_HOMOLO+'">'+aStHom[nPos,3]+'</option>'
  296. Endif
  297. cStatusHom+='</select>'
  298. //% RT
  299. cRT:= '<input id="AD1_COMIRT" name="AD1_COMIRT" class="form-control text-right percentual" maxlength="'+cvaltochar(GetSX3Cache("AD1_COMIRT","X3_TAMANHO"))+'" '
  300. cRT+= ' value="'+cvaltochar(AD1->AD1_COMIRT)+'" placeholder="0,00" '
  301. cRT+= Iif(!lCopy .and. !lEdit,'disabled','')+'>'
  302. //Segmento
  303. aSegmen:= RetSx3Box(Posicione('SX3',2,'AD1_SEGMEN','X3CBox()'),,,1)
  304. cSegmento:='<select data-plugin-selectTwo class="form-control poulatemb-md" data-plugin-options='+"'"+'{"placeholder": "Selecione...","minimumResultsForSearch": "-1"}'+"'"'
  305. cSegmento+=' name="AD1_SEGMEN" id="AD1_SEGMEN" '
  306. cSegmento+= Iif(!lEdit,'disabled','')+'>'
  307. If lEdit
  308. For f:= 1 to Len(aSegmen)
  309. cSegmento+=' <option value="'+aSegmen[f,1]+'" '+Iif(AllTrim(aSegmen[f,1]) == AllTrim(AD1->AD1_SEGMEN),'selected','')+'>'+aSegmen[f,1]+'</option>'
  310. Next
  311. Else
  312. nPos:= aScan(aSegmen,{|x|x[1]==AD1->AD1_SEGMEN})
  313. If nPos = 0
  314. nPos:= 1
  315. Endif
  316. cSegmento+=' <option value="'+AD1->AD1_SEGMEN+'">'+aSegmen[nPos,1]+'</option>'
  317. Endif
  318. cSegmento+='</select>'
  319. //Nivel
  320. aNivel:= RetSx3Box(Posicione('SX3',2,'AD1_NIVOPO','X3CBox()'),,,1)
  321. cNivel:='<select data-plugin-selectTwo class="form-control poulatemb-md" data-plugin-options='+"'"+'{"placeholder": "Selecione...","minimumResultsForSearch": "-1"}'+"'"'
  322. cNivel+=' name="AD1_NIVOPO" id="AD1_NIVOPO" '
  323. cNivel+= Iif(!lEdit,'disabled','')+'>'
  324. If lEdit
  325. For f:= 1 to Len(aNivel)
  326. cNivel+=' <option value="'+aNivel[f,1]+'" '+Iif(AllTrim(aNivel[f,1]) == AllTrim(AD1->AD1_NIVOPO),'selected','')+'>'+aNivel[f,1]+'</option>'
  327. Next
  328. Else
  329. nPos:= aScan(aNivel,{|x|x[1]==Alltrim(AD1->AD1_NIVOPO)})
  330. If nPos = 0
  331. nPos:= 1
  332. Endif
  333. cNivel+=' <option value="'+AD1->AD1_NIVOPO+'">'+aNivel[nPos,1]+'</option>'
  334. Endif
  335. cNivel+='</select>'
  336. //Observação Notas
  337. //cNotas:= MSMM(AD1->AD1_CODMEM)
  338. //Status
  339. aStatus:= RetSx3Box(Posicione('SX3',2,'AD1_STATUS','X3CBox()'),,,1)
  340. cStatus:='<select data-plugin-selectTwo class="form-control poulatemb-md" data-plugin-options='+"'"+'{"placeholder": "Selecione...","minimumResultsForSearch": "-1"}'+"'"'
  341. cStatus+=' name="AD1_STATUS" id="AD1_STATUS" onchange="javascript:vldStatus();" '
  342. cStatus+= Iif(!lEdit,'disabled','')+'>'
  343. If lEdit
  344. For f:= 1 to Len(aStatus)
  345. cStatus+=' <option value="'+aStatus[f,2]+'" '+Iif(AllTrim(aStatus[f,2]) == AllTrim(AD1->AD1_STATUS),'selected','')+'>'+aStatus[f,3]+'</option>'
  346. Next
  347. Else
  348. nPos:= aScan(aStatus,{|x|x[1]==AD1->AD1_STATUS})
  349. If nPos = 0
  350. nPos:= 1
  351. Endif
  352. cStatus+=' <option value="'+AD1->AD1_STATUS+'">'+aStatus[nPos,3]+'</option>'
  353. Endif
  354. cStatus+='</select>'
  355. //cEncerramento
  356. cEncer:= '<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  357. cEncer+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="AD1_ENCERR" id="AD1_ENCERR" '
  358. cEncer+='required="" aria-required="true" '+Iif((lCopy .or. lEdit) .and. AD1->AD1_STATUS $ "2|3",'','disabled')+'>'
  359. If !Empty(AD1->AD1_ENCERR)
  360. cEncer+=' <option value="'+AD1->AD1_ENCERR+'">'+AD1->AD1_ENCERR+" - "+fDesc("SUN",AD1->AD1_ENCERR,"UN_DESC")+'</option>'
  361. Endif
  362. If lEdit
  363. //Seleciona as opções do combo
  364. cQry:= " Select UN_ENCERR, UN_DESC "
  365. cQry+= " From "+RetSqlName("SUN")+" SUN "
  366. cQry+= " Where UN_FILIAL = '"+xFilial("SUN")+"' "
  367. cQry+= " And UN_MSBLQL <> '1' "
  368. cQry+= " And SUN.D_E_L_E_T_ = ' ' "
  369. If Select("QRP") > 0
  370. QRP->(dbCloseArea())
  371. Endif
  372. TcQuery cqry New Alias "QRP"
  373. cEncer+=' <option value=""></option>'
  374. While QRP->(!Eof())
  375. cEncer+=' <option value="'+QRP->UN_ENCERR+'"'+Iif(Alltrim(QRP->UN_ENCERR) == AllTrim(AD1->AD1_ENCERR),'selected','')+'>'+Alltrim(QRP->UN_ENCERR)+" - "+Alltrim(QRP->UN_DESC)+'</option>'
  376. QRP->(dbSkip())
  377. End
  378. QRP->(dbCloseArea())
  379. Endif
  380. cEncer+='</select>'
  381. //Motivo Encerramento //AD1_MEMENC AD1_MTVENC
  382. cMotivo:= '<textarea class="form-control" rows="3" data-plugin-maxlength="" maxlength="240" id="AD1_MTVENC" name="AD1_MTVENC" '+Iif(lEdit .and. AD1->AD1_STATUS $ "2|3",'','disabled')+'>'+AD1->AD1_MTVENC+'</textarea>'
  383. //Adiciona os botões da página
  384. If lEdit
  385. cBotoes+='<input class="btn btn-primary" type="button" id="btSalvar" name="btSalvar" value="Salvar"/>'+chr(13)+chr(10)
  386. Elseif lDele
  387. cBotoes+='<input class="btn btn-primary " type="button" id="btExcluir" name="btExcluir" value="Excluir"/>'+chr(13)+chr(10)
  388. Endif
  389. cBotoes+='<input class="btn btn-primary" type="button" id="btVoltar" name="btVoltar" value="Voltar" onclick="javascript: location.href='+"'"+'U_Oportunidade.apw?PR='+cCodLogin+"';"+'"/>'+chr(13)+chr(10)
  390. //Botão para adicionar anexos
  391. cBtAddAnex+= '<div class="form-row">'
  392. cBtAddAnex+= ' <div class="col-sm-1">'
  393. cBtAddAnex+= ' <span class="btn btn-primary" id="btAddAnex" name="btAddAnex" onclick="javascript: Anexar('+"'"+cCodLogin+"'"+');">'
  394. cBtAddAnex+= ' <i class="fa fa-paperclip"></i> Anexar</button>'
  395. cBtAddAnex+= ' </span>'
  396. cBtAddAnex+= ' </div>'
  397. cBtAddAnex+= '</div>'
  398. //Retorna o HTML para construção da página
  399. //Seleciona as opções do combo
  400. cNewDir := "\dirdoc_fileserver\co"+cEmpAnt+"\shared\"
  401. cQry:= " SELECT ACB_OBJETO "
  402. cQry+= " From "+RetSqlName("AC9")+" AC9 "
  403. cQry+= " INNER JOIN "+RetSqlName("ACB")+" ACB ON ACB_CODOBJ = AC9_CODOBJ AND ACB_FILIAL = AC9_FILIAL "
  404. cQry+= " Where AC9_ENTIDA = 'AD1' "
  405. cQry+= " AND ACB.R_E_C_D_E_L_ = '0' "
  406. cQry+= " AND AC9_CODENT = '"+AD1->AD1_NROPOR+"' "
  407. cQry+= " AND AC9.D_E_L_E_T_ = '' "
  408. If Select("QRM") > 0
  409. QRM->(dbCloseArea())
  410. Endif
  411. APWExOpenQuery(ChangeQuery(cQry),'QRM',.T.)
  412. While QRM->(!Eof())
  413. aAnTemp := DIRECTORY(cNewDir+ALLTRIM(QRM->ACB_OBJETO))
  414. For i:= 1 to Len(aAnTemp)
  415. aadd(aAnexos,aAnTemp[i])
  416. Next
  417. QRM->(dbSkip())
  418. End
  419. QRM->(dbCloseArea())
  420. //Localiza os arquivos para download
  421. //Arquivos
  422. If Len(aAnexos) > 0
  423. cAnexos:= U_GetAnexos(aAnexos,cNewDir)
  424. Else
  425. cAnexos := "Sem arquivos para download."
  426. EndIf
  427. cHtml := H_AddOpt()
  428. Web Extended End
  429. Return (cHTML)
  430. /*__________________________________________________________________________
  431. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  432. ¦¦+-----------------------------------------------------------------------+¦¦
  433. ¦¦¦Funçäo ¦ ExcOpt ¦ Autor ¦ Lucilene Mendes ¦ Data ¦10.12.17 ¦¦¦
  434. ¦¦+----------+------------------------------------------------------------¦¦¦
  435. ¦¦¦Descriçäo ¦ Exclui a Oportunidade ¦¦¦
  436. ¦¦+-----------------------------------------------------------------------+¦¦
  437. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  438. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  439. User Function ExcOpt()
  440. Local cHtml
  441. Local nOpc := 5 // 3- Incluir / 4- Alterar / 5- Excluir
  442. Local cCliente := ""
  443. Local cLoja := ""
  444. Local cNumOpt := ""
  445. Local cDirErro := "\erro\"
  446. Private aCabAD1 :={}
  447. Private lMsErroAuto:= .F.
  448. Private cCodLogin := ""
  449. Private cVendLogin:= ""
  450. Private INCLUI:= .F.
  451. Private ALTERA:= .F.
  452. Web Extended Init cHtml Start U_inSite()
  453. //Verifica se não perdeu a sessão
  454. If type("HttpSession->CodVend") = "U" .or. Empty(HttpSession->CodVend)
  455. conout(Procname()+"("+ltrim(str(procline()))+") *** Portal "+"Sessao encerrada")
  456. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_SMSPortal.apw">'
  457. return cHtml
  458. Endif
  459. cVendLogin := u_GetUsrPR()
  460. cCodLogin := U_SetParPR(cVendLogin)
  461. //Variáveis do cabeçalho
  462. cCliente:= HttpPost->AD1_CODCLI
  463. cLoja:= HttpPost->AD1_LOJCLI
  464. cNumOpt:= HttpPost->AD1_NROPOR
  465. //Posiciona nas tabelas
  466. If !Empty(cCliente)
  467. Posicione("SA1",1,xFilial("SA1")+Alltrim(cCliente+cLoja),"A1_COD")
  468. Endif
  469. //Posiciona no orçamento
  470. Posicione("AD1",1,xFilial("AD1")+cNumOpt,"AD1_NROPOR")
  471. cFilAnt:= AD1->AD1_FILIAL
  472. //Monta o cabeçalho
  473. aadd(aCabAD1,{"AD1_NROPOR",cNumOpt,Nil})
  474. aadd(aCabAD1,{"AD1_CLIENTE",SA1->A1_COD,Nil})
  475. aadd(aCabAD1,{"AD1_LOJA", SA1->A1_LOJA ,Nil})
  476. lMsErroAuto:= .F.
  477. //Chama execauto para inclusão da oportunidade
  478. If Len(aCabAD1) > 0
  479. MSExecAuto({|x,y|FATA300(x,y)},nOpc,aCabAD1)
  480. Else
  481. conout(Procname()+"("+ltrim(str(procline()))+") *** Portal "+"FALHA AO EXCLUIR A OPORTUNIDADE!")
  482. lMsErroAuto:= .T.
  483. Endif
  484. If lMsErroAuto
  485. If !ExistDir(cDirErro)
  486. MakeDir(cDirErro)
  487. Endif
  488. cDirErro+=dtos(date())
  489. If !ExistDir(cDirErro)
  490. MakeDir(cDirErro)
  491. Endif
  492. //Grava o erro
  493. MostraErro(cDirErro,"erro_oportunidade_"+strtran(time(),":","")+".txt")
  494. cHtml:= "erro"
  495. Else
  496. AD1->(dbGoBottom())
  497. cHtml:= AD1->AD1_NROPOR
  498. EndIf
  499. Web Extended End
  500. Return (cHTML)
  501. /*__________________________________________________________________________
  502. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  503. ¦¦+-----------------------------------------------------------------------+¦¦
  504. ¦¦¦Funçäo ¦ SlvOpt ¦ Autor ¦ Lucilene Mendes ¦ Data ¦17.08.17 ¦¦¦
  505. ¦¦+----------+------------------------------------------------------------¦¦¦
  506. ¦¦¦Descriçäo ¦ Gera a oportunidade. ¦¦¦
  507. ¦¦+-----------------------------------------------------------------------+¦¦
  508. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  509. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  510. */
  511. User Function SlvOpt()
  512. Local cHtml
  513. local i
  514. Local nOpc := 3 // 3- Incluir / 4- Alterar / 5- Excluir
  515. Local cFilAD1 := ""
  516. Local cNumAD1 := ""
  517. Local cDescri := ""
  518. Local cComplem := ""
  519. Local cCliente := ""
  520. Local cLoja := ""
  521. Local cContCli := ""
  522. Local cEmail := ""
  523. Local cParceiro := ""
  524. Local cUF := ""
  525. Local cCidade := ""
  526. Local cEndereco := ""
  527. Local dDtInicio := ""
  528. Local dDtTermino:= ""
  529. Local cRegional := ""
  530. Local cVend := ""
  531. Local cEspecif := ""
  532. Local cContato := ""
  533. Local nRT := ""
  534. Local cStatusHom:= ""
  535. Local cSegmento := ""
  536. Local cNivel := ""
  537. Local cNota := ""
  538. Local cStatus := ""
  539. Local cMotivo := ""
  540. Local cEncerr := ""
  541. Local cDirOpt := "\anexosPortal\oportunidade\"
  542. Local cDirErro := "\erro\"
  543. Local lEnvEmail := .f.
  544. Local aArquivos := {}
  545. Private aCabAnexo :={}
  546. Private aCabAD1 :={}
  547. Private lMsErroAuto:= .F.
  548. Private cCodLogin := ""
  549. Private cVendLogin:= ""
  550. Private INCLUI:= .F.
  551. Private ALTERA:= .F.
  552. Web Extended Init cHtml Start U_inSite()
  553. cVendLogin := u_GetUsrPR()
  554. cCodLogin := U_SetParPR(cVendLogin)
  555. //Verifica se não perdeu a sessão
  556. If type("HttpSession->CodVend") = "U" .or. Empty(HttpSession->CodVend)
  557. conout(Procname()+"("+ltrim(str(procline()))+") *** Portal "+"Sessao encerrada")
  558. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_SMSPortal.apw">'
  559. return cHtml
  560. Endif
  561. nOpc:= Val(HttpPost->OPCAO)
  562. conout("### SlvOpt ###")
  563. conout(nOpc)
  564. //Variáveis do cabeçalho
  565. If nOpc = 3
  566. cFilAD1:= "01" //HttpPost->AD1_FILIAL
  567. cNumAD1:= GetSXENum("AD1","AD1_NROPOR") //HttpPost->AD1_NROPOR
  568. INCLUI:= .T.
  569. Else
  570. cFilAD1:= HttpPost->AD1_FILIAL
  571. cNumAD1:= HttpPost->AD1_NROPOR
  572. ALTERA:= .T.
  573. Endif
  574. cDescri:= Iif(Type("HttpPost->AD1_DESCRI") <> "U",Upper(HttpPost->AD1_DESCRI),"")
  575. cComplem:= Iif(Type("HttpPost->AD1_DESCOP") <> "U",HttpPost->AD1_DESCOP,"")
  576. cCliente:= Left(HttpPost->AD1_CODCLI,6)
  577. cLoja:= Right(HttpPost->AD1_CODCLI,2)
  578. cContCli:= Iif(Type("HttpPost->AD1_CONTCL") <> "U",HttpPost->AD1_CONTCL,"")
  579. cEmail:= Iif(Type("HttpPost->AD1_EMAIL1") <> "U",HttpPost->AD1_EMAIL1,"")
  580. cParceiro:= Iif(Type("HttpPost->AD1_PARC1") <> "U",HttpPost->AD1_PARC1,"")
  581. cUF:= Alltrim(Iif(Type("HttpPost->AD1_UF") <> "U",HttpPost->AD1_UF,""))
  582. cCidade:= Iif(Type("HttpPost->AD1_CIDADE") <> "U",HttpPost->AD1_CIDADE,"")
  583. cEndereco:= Iif(Type("HttpPost->AD1_ENDER") <> "U",Upper(HttpPost->AD1_ENDER),"")
  584. dDtInicio := CTOD(HttpPost->AD1_DTINI)
  585. dDtTermino := CTOD(HttpPost->AD1_DTFIM)
  586. cRegional := Iif(Type("HttpPost->AD1_REGION") <> "U",HttpPost->AD1_REGION,"")
  587. cVend := Iif(Type("HttpPost->AD1_VEND") <> "U",HttpPost->AD1_VEND,"")
  588. cEspecif := Iif(Type("HttpPost->AD1_PERCEI") <> "U",HttpPost->AD1_PERCEI,"")
  589. cContato := Iif(Type("HttpPost->AD1_CONTAT")<>"U",HttpPost->AD1_CONTAT,"")
  590. nRT:= Val(StrTran(StrTran(HttpPost->AD1_COMIRT,'.',''),',','.'))
  591. cStatusHom := Iif(Type("HttpPost->AD1_HOMOLO")<>"U",HttpPost->AD1_HOMOLO,"")
  592. cSegmento:= Iif(Type("HttpPost->AD1_SEGMEN")<>"U",HttpPost->AD1_SEGMEN,"")
  593. cNivel:= Iif(Type("HttpPost->AD1_NIVOPO")<>"U",HttpPost->AD1_NIVOPO,"")
  594. cNota:= Iif(Type("HttpPost->AD1_MEMO")<>"U",HttpPost->AD1_MEMO,"")
  595. cStatus:= Iif(Type("HttpPost->AD1_STATUS")<>"U",HttpPost->AD1_STATUS,"")
  596. cEncerr:= Iif(Type("HttpPost->AD1_ENCERR")<>"U",HttpPost->AD1_ENCERR,"")
  597. cMotivo:= Iif(Type("HttpPost->AD1_MTVENC") <> "U",HttpPost->AD1_MTVENC,"")
  598. //Posiciona nas tabelas
  599. If !Empty(cCliente)
  600. Posicione("SA1",1,xFilial("SA1")+Alltrim(cCliente+cLoja),"A1_COD")
  601. Endif
  602. //Monta o cabeçalho
  603. If !Empty(cNumAD1) .and. nOpc = 4// ALTERAÇÃO
  604. AD1->(dbSetOrder(1))
  605. if AD1->(dbSeek(cFilAD1+cNumAD1))
  606. cFilAnt := cFilAD1
  607. Endif
  608. // aadd(aCabAD1,{"CJ_FILIAL",xFilial("AD1"),Nil})
  609. aadd(aCabAD1,{"AD1_NROPOR",cNumAD1,Nil})
  610. EndIf
  611. aadd(aCabAD1,{"AD1_NROPOR", cNumAD1, Nil})
  612. aadd(aCabAD1,{"AD1_DESCRI", decodeutf8(cDescri), Nil})
  613. If !Empty(cComplem)
  614. aadd(aCabAD1,{"AD1_DESCOP", decodeutf8(cComplem), Nil})
  615. Endif
  616. //aadd(aCabAD1,{"AD1_DTINI" ,dDtInicio,Nil})
  617. If nOpc == 4
  618. aadd(aCabAD1,{"AD1_DTFIM" ,dDtTermino,Nil})
  619. Endif
  620. aadd(aCabAD1,{"AD1_VEND",cVend ,Nil})
  621. aadd(aCabAD1,{"AD1_REGION",cRegional ,Nil})
  622. aadd(aCabAD1,{"AD1_CODCLI", SA1->A1_COD ,Nil})
  623. aadd(aCabAD1,{"AD1_LOJCLI", SA1->A1_LOJA ,Nil})
  624. If !Empty(cEndereco)
  625. aadd(aCabAD1,{"AD1_ENDER" ,cEndereco,Nil})
  626. Endif
  627. aadd(aCabAD1,{"AD1_UF" ,cUF,Nil})
  628. aadd(aCabAD1,{"AD1_CIDADE" ,cCidade,Nil})
  629. If !Empty(cContCli)
  630. aadd(aCabAD1,{"AD1_CONTCL",cContCli ,Nil})
  631. Endif
  632. If !Empty(cEmail)
  633. aadd(aCabAD1,{"AD1_EMAIL1",cEmail ,Nil})
  634. Endif
  635. If !Empty(cParceiro)
  636. aadd(aCabAD1,{"AD1_PARC1",cParceiro ,Nil})
  637. Endif
  638. If !Empty(cNota)
  639. aadd(aCabAD1,{"AD1_MEMO",AllTrim(decodeutf8(cNota)),Nil})
  640. Endif
  641. If !Empty(cEspecif)
  642. aadd(aCabAD1,{"AD1_PERCEI",cEspecif ,Nil})
  643. Endif
  644. If !Empty(cContato)
  645. aadd(aCabAD1,{"AD1_CONTAT",cContato ,Nil})
  646. Endif
  647. aadd(aCabAD1,{"AD1_COMIRT",nRT ,Nil})
  648. aadd(aCabAD1,{"AD1_HOMOLO",cStatusHom ,Nil})
  649. aadd(aCabAD1,{"AD1_SEGMEN",cSegmento ,Nil})
  650. aadd(aCabAD1,{"AD1_NIVOPO",cNivel ,Nil})
  651. aadd(aCabAD1,{"AD1_STATUS",cStatus ,Nil})
  652. If !Empty(cEncerr)
  653. aadd(aCabAD1,{"AD1_ENCERR",cEncerr ,Nil})
  654. Endif
  655. If !Empty(cMotivo)
  656. aadd(aCabAD1,{"AD1_MTVENC",AllTrim(decodeutf8(cMotivo)),Nil})
  657. Endif
  658. lMsErroAuto:= .F.
  659. MSExecAuto({|x,y|FATA300(x,y)},nOpc,aCabAD1)
  660. If lMsErroAuto
  661. RollbackSx8()
  662. If !ExistDir(cDirErro)
  663. MakeDir(cDirErro)
  664. Endif
  665. cDirErro+=dtos(date())
  666. If !ExistDir(cDirErro)
  667. MakeDir(cDirErro)
  668. Endif
  669. //Grava o erro
  670. cMsg:= MostraErro(cDirErro,"erro_oportunidade_"+strtran(time(),":","")+"_"+cFilAnt+".txt")
  671. cDestMail:= GetNewPar("PR_DESTOPE ","lucilene@smsti.com.br")
  672. u_MailCM("ERRO HOMOLOGACAO",{cDestMail},{},"ERRO HOMOLOGACAO NO PORTAL",cMsg,"","")
  673. cHtml:= "erro"
  674. Else
  675. ConfirmSX8()
  676. cHtml:= AD1->AD1_NROPOR
  677. fRunProcOportunidade(CNUMAD1 ,httpPost->anexos, cVendLogin)
  678. cDestOpt := GetNewPar("PR_DESTORC","")
  679. //Envia e-mail informando a inclusão da oportunidade
  680. If !Empty(cDestOpt) .and. (nOpc = 3 .or. lEnvEmail)
  681. cMsg:= "Uma nova homologação foi gerada pelo Portal do Representante.<br><br>"
  682. cMsg+= "Filial: "+AD1->AD1_FILIAL+"<br>"
  683. cMsg+= "Número: "+AD1->AD1_NROPOR+"<br> "
  684. cMsg+= "Descrição: "+AD1->AD1_DESCRI+"<br> "
  685. cMsg+= "Vendedor: "+AD1->AD1_VEND+" - "+Alltrim(Posicione("SA3",1,xFilial("SA3")+AD1->AD1_VEND,"A3_NOME"))+"<br>"
  686. u_MailCM("HOMOLOGACAO",{cDestOpt},{},"NOVA HOMOLOGACAO PORTAL: "+AD1->AD1_FILIAL+"/"+AD1->AD1_NROPOR,cMsg,"","")
  687. Endif
  688. Endif
  689. Web Extended End
  690. Return (cHTML)
  691. /*__________________________________________________________________________
  692. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  693. ¦¦+-----------------------------------------------------------------------+¦¦
  694. ¦¦¦Funçäo ¦ SlvOpt ¦ Autor ¦ Lucilene Mendes ¦ Data ¦17.08.17 ¦¦¦
  695. ¦¦+----------+------------------------------------------------------------¦¦¦
  696. ¦¦¦Descriçäo ¦ Gera a oportunidade. ¦¦¦
  697. ¦¦+-----------------------------------------------------------------------+¦¦
  698. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  699. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  700. Static Function fRunProcOportunidade(cNumOportunidade, cAnexos, cVendLogin)
  701. Local cProxObj
  702. Local cAliasAtu := "AD1"
  703. local cNewDir
  704. local cDirAnexos
  705. local i
  706. cNewDir := "\dirdoc_fileserver\co"+cEmpAnt+"\shared\"
  707. cDirAnexos:="\web\PortalSMS\upload\"+dtos(date())+"\"+cVendLogin+"\"
  708. //Verifica se possui anexos
  709. aAnexos := DIRECTORY(cDirAnexos+"*.*")
  710. For i:= 1 to Len(aAnexos)
  711. If !Empty(aAnexos[i,1])
  712. //renomeia com o código do documento no início
  713. if FRename(cDirAnexos+aAnexos[i,1], cNewDir+ Upper(STRTRAN(U_NoAcMI(aAnexos[i,1])," ","_"))) == 0
  714. DbSelectArea("AD1")
  715. AD1->(DbSetOrder(1))
  716. If AD1->(DbSeek(xFilial('AD1')+cNumOportunidade))
  717. cProxObj := GetSxeNum("ACB","ACB_CODOBJ")
  718. If ! ACB->(DbSeek(xFilial('ACB')+cProxObj))
  719. Reclock("ACB", .T.)
  720. ACB->ACB_FILIAL := xFilial('ACB')
  721. ACB->ACB_CODOBJ := cProxObj
  722. ACB->ACB_OBJETO := aAnexos[i,1]
  723. ACB->ACB_DESCRI := aAnexos[i,1]
  724. ACB->(MsUnlock())
  725. ConfirmSX8()
  726. Else
  727. //TRATAR
  728. EndIf
  729. DbSelectArea("AC9")
  730. AC9->(DbSetOrder(1))
  731. If ! AC9->(DbSeek(xFilial('AC9') + cProxObj + cNumOportunidade))
  732. Reclock("AC9", .T.)
  733. AC9->AC9_FILIAL := xFilial('AC9')
  734. AC9->AC9_FILENT := xFilial('AD1')
  735. AC9->AC9_ENTIDA := cAliasAtu
  736. AC9->AC9_CODENT := cNumOportunidade
  737. AC9->AC9_CODOBJ := cProxObj
  738. AC9->(MsUnlock())
  739. EndIf
  740. Else
  741. conout("Número de Oportunidade inválido: " + cNumOportunidade, "Atenção")
  742. EndIf
  743. else
  744. // tratar erro
  745. endif
  746. Endif
  747. Next
  748. Return
  749. // Função para anexar os arquivos no Portal - Joab Rodrigues - 05/03/2012
  750. User Function uploadfile()
  751. Local cDrive, cDir:='', cNome, cExt
  752. Local cDirAnx:= '\web\PortalSMS\upload\'
  753. Local cHtml:= ""
  754. Local nI:= 0
  755. Private cSite := "u_PortalLogin.apw"
  756. Private cLoginGet:= ""
  757. Web Extended Init cHtml
  758. cVendLogin := u_GetUsrPR()
  759. cCodLogin := U_SetParPR(cVendLogin)
  760. aInfo := HttpPost->aPost
  761. if valtype(aInfo) == "A"
  762. If !ExistDir(cDirAnx)
  763. MakeDir(cDirAnx)
  764. Endif
  765. cDirAnx+=dtos(dDataBase)
  766. If !ExistDir(cDirAnx)
  767. MakeDir(cDirAnx)
  768. Endif
  769. cDirAnx+='\'+cVendLogin
  770. If !ExistDir(cDirAnx)
  771. MakeDir(cDirAnx)
  772. Endif
  773. cDirAnx+='\'
  774. For nI := 1 to len(aInfo)
  775. conout('POST '+str(nI,3)+' = '+aInfo[nI]+' -> '+&("HTTPPOST->"+aInfo[nI]))
  776. SplitPath( &("HTTPPOST->"+aInfo[nI]), @cDrive, @cDir, @cNome, @cExt )
  777. cNomeArq := STRTRAN(FWnoAccent(decodeUTF8(cNome))," ","_")
  778. If(FRenameEx(&("HTTPPOST->"+aInfo[nI]),cDirAnx+cNomeArq+cExt)==-1)
  779. conout(FError())
  780. EndIf
  781. cHtml:=cNomeArq+cExt+"|"
  782. Next
  783. EndIf
  784. Web Extended End
  785. Return cHtml
  786. /*__________________________________________________________________________
  787. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  788. ¦¦+-----------------------------------------------------------------------+¦¦
  789. ¦¦¦Funçäo ¦ DelDoctos ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 14.09.22 ¦¦¦
  790. ¦¦+----------+------------------------------------------------------------¦¦¦
  791. ¦¦¦Descriçäo ¦ deleta os arquivos da pasta upload ¦¦¦
  792. ¦¦+-----------------------------------------------------------------------+¦¦
  793. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  794. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  795. User Function DelDoctos()
  796. Local cHtml:= ""
  797. Local cDirAnexos:= '\web\PortalSMS\upload\'+cvaltochar(Year(dDataBase))
  798. Local aArqDel:= {}
  799. Local aAnexos:= {}
  800. Local i:= 0
  801. Private cSite := "u_PortalLogin.apw"
  802. Private cLoginGet:= ""
  803. Web Extended Init cHtml Start U_inSite()
  804. cVendLogin := u_GetUsrPR()
  805. cDirAnexos+= +'\'+cVendLogin+"\"
  806. aArqDel:= Separa(HttpPost->anexos,"|")
  807. //Exclui os arquivos da pasta
  808. aAnexos := DIRECTORY(cDirAnexos+"*.*")
  809. For i:= 1 to Len(aAnexos)
  810. If aScan(aArqDel,{|x|Upper(STRTRAN(U_NoAcMI(x)," ","_"))==aAnexos[i][1]}) > 0
  811. FErase(cDirAnexos+aAnexos[i][1])
  812. Endif
  813. Next
  814. Web Extended End
  815. Return (cHTML)