MntOpt.apl.bak 32 KB

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