AddOrc.apl.bak 118 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136
  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 ¦ AddOrc ¦ Autor ¦ Lucilene Mendes ¦ Data ¦28.08.17 ¦¦¦
  11. ¦¦+----------+------------------------------------------------------------¦¦¦
  12. ¦¦¦Descriçäo ¦ Inclusão de Orçamento de Venda. ¦¦¦
  13. ¦¦+-----------------------------------------------------------------------+¦¦
  14. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  15. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  16. */
  17. User Function AddOrc()
  18. Local cHtml
  19. Local cItem := ""
  20. Local cCondNot := ""
  21. Local nPosFrete := 0
  22. Local nPerCom := 0
  23. Local nValCom := 0
  24. Local nOpc := 0
  25. Local nLin := 0
  26. Local f := 0
  27. Local lMoeda := .F.
  28. Local lNumber := .F.
  29. Local aTpFrete := {}
  30. Private cFilVen := ""
  31. Private cCodLogin := ""
  32. Private cVendLogin := ""
  33. Private cVendedor := ""
  34. Private cSite := "u_PortalLogin.apw"
  35. Private cPagina := "Orçamento de Venda"
  36. Private cTitle := "Portal SMS"
  37. Private cMenus := ""
  38. Private cAnexos := ""
  39. Private cDirOrc := "\anexosPortal\orcamentos\"
  40. Private cDirPortal := ""
  41. Private cEndServ := "" // Endereço do servidor da pagina de Portal
  42. Private cOrcCabec := ""
  43. Private cOrcItens := ""
  44. Private cItensHid := ""
  45. Private cBotoes := ""
  46. Private cBtnItens := ""
  47. Private cOptProd := ""
  48. Private cOptCond := ""
  49. Private cOptCli := ""
  50. Private cOptUF := ""
  51. Private cOptMun := ""
  52. Private cTblDesc := ""
  53. private cParUs := ""
  54. Private cFilOrc := ""
  55. Private cCodOrc := ""
  56. Private cCliente := ""
  57. Private cContato := ""
  58. Private cContDDD := ""
  59. Private cContTel := ""
  60. Private cTpCliente := ""
  61. Private cGrpTrib := ""
  62. Private cCondPag := ""
  63. Private cLocalEnt := ""
  64. Private cObra := ""
  65. Private cStatusObra := ""
  66. Private cIntermed := ""
  67. Private cOport := ""
  68. Private cRevOpt := ""
  69. Private cRegional := ""
  70. Private cTpFrete := ""
  71. Private cValFre := ""
  72. Private cPrazoEmb := ""
  73. Private cEstudo := ""
  74. Private cNumEst := ""
  75. Private cPrevFecha := ""
  76. Private cMargemCont := ""
  77. Private cTransp := ""
  78. Private cTotalReg := ""
  79. //Private cEntrega := ""
  80. //Private cValidade := ""
  81. Private nTVlrUnit := 0
  82. Private nTVlrSDesc := 0
  83. Private nTQtdItem := 0
  84. Private nTTotal := 0
  85. Private nTComiss := 0
  86. Private nTImpostos := 0
  87. Private nTAcresc := 0
  88. Private nTFrete := 0
  89. Private nItens := 0
  90. Private lNewOrc := .T.
  91. Private lEdit := .F.
  92. Private lCopy := .F.
  93. Private cShowDesc := "false"
  94. Private aItens := {}
  95. Private aAnexos := {}
  96. Web Extended Init cHtml Start U_inSite()
  97. cVendLogin := u_GetUsrPR()
  98. cCodLogin := U_SetParPR(cVendLogin)
  99. If Empty(HttpSession->CodVend)
  100. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL='+cSite+'">'
  101. Return cHtml
  102. Else
  103. If !Empty(HttpSession->Superv) .and. HttpSession->Superv <> HttpSession->CodVend
  104. HttpSession->CodVend:= HttpSession->Superv
  105. Endif
  106. Endif
  107. // Pega do parâmetro com o Titulo do Portal
  108. cTitle := SuperGetMV("PS_TITLE", .T., "Portal SMS")
  109. // Define a funcao a ser chama no link
  110. cSite := "u_SMSPortal.apw?PR="+cCodLogin
  111. // Monta o cabeçalho para a pagina
  112. cHeader := U_PSHeader(cTitle, cSite)
  113. //Função que atualiza os menus
  114. cMenus := U_GetMenus(AllTrim(Upper(Procname())), cVendLogin)
  115. //Atualiza as variáveis
  116. cEndServ := GetMv('MV_WFBRWSR')
  117. cParUs := GetMv('LC_FA074G1')
  118. cCodVend:=cVendLogin
  119. cNomeVend:= HttpSession->Nome
  120. cItem := StrZero(1,TamSX3("CK_ITEM")[1])
  121. cFilOrc:= '<div class="row form-group" style="display:none;">'
  122. cFilOrc+= ' <div class="col-lg-2">'
  123. cFilOrc+= ' <label class="control-label">Filial</label>'
  124. cFilOrc+= ' <input id="CJ_FILIAL" name="CJ_FILIAL" class="form-control" value="" disabled >'
  125. //cFilOrc+= ' <input id="CJ_VEND" name="CJ_VEND" type="hidden" value="'+cVendLogin+'">'
  126. cFilOrc+= ' </div>'
  127. cCodOrc:= ' <div class="col-lg-2" style="display:none;">'
  128. cCodOrc+= ' <label class="control-label">Número</label>'
  129. cCodOrc+= ' <input id="CJ_NUM" name="CJ_NUM" class="form-control" value="" disabled >'
  130. cCodOrc+= ' <input type="hidden" id="RECCJANT" name="RECCJANT" value="" >'
  131. cCodOrc+= ' </div>'
  132. cCodOrc+= '</div>'
  133. cCliente:=' <div class="flexContainer">
  134. cCliente+=' <input type="text" class="form-control smsediticon" placeholder="Digite o código, CPF/CNPJ ou Razão Social..." '
  135. cCliente+=' name="CJ_CLIENTE" id="CJ_CLIENTE"'
  136. cCliente+=' aria-required="true" data-live-search="true" '
  137. cCliente+=' autocomplete="off" value="" />'
  138. cCliente+=' <button class="btSearchCli" id="btSearchCli">'
  139. cCliente+=' <i class="fa fa-search" alt="Pesquisar"></i>'
  140. cCliente+=' </button>
  141. cCliente+=' </div>
  142. cOptCli+= u_ListaCli(cVendLogin,"")
  143. /*
  144. cCliente:='<select data-plugin-selectTwo class="form-control populate placeholder" data-plugin-options='+"'"
  145. cCliente+='{ "placeholder": "Selecione um Cliente", "allowClear": false }'+"'"+' name="CJ_CLIENTE" id="CJ_CLIENTE" '
  146. cCliente+='onchange="javascript:SelCliente()" required="" aria-required="true"> '
  147. cCliente+=' <option value=""> </option>'
  148. // Localiza os clientes
  149. cOptCli+= u_ListaCli(cVendLogin,"")
  150. cCliente+= cOptCli
  151. cCliente+='</select>'
  152. */
  153. //Oportunidade
  154. cOport:='<select data-plugin-selectTwo class="form-control poulate placeholder mb-md" data-plugin-options='+"'"+'{"placeholder": "Selecione..."}'+"'"'
  155. cOport+=' name="CJ_NROPOR" id="CJ_NROPOR" onchange="javascript:atuRevOpt();" disabled>'
  156. cOport+='<option value=""></option>'
  157. //Busca a lista de oportunidades
  158. cOport+= u_ListaOpt(cVendLogin,"")
  159. cOport+='</select>'
  160. cRevOpt:= '<input id="CJ_REVISA" name="CJ_REVISA" class="form-control" value="" disabled>'
  161. //Combo da tabela de preço
  162. cTabPadrao:= GetNewPar("PR_TABPADR","001")
  163. cTabela:='<select data-plugin-selectTwo class="form-control populate placeholder" data-plugin-options='+"'"
  164. cTabela+='{ "placeholder": "Selecione", "allowClear": false }'+"'"+' name="CJ_TABELA" id="CJ_TABELA" '
  165. cTabela+='</select>'
  166. //Tabela de preço por filial
  167. cQry:= "SELECT DA0_CODTAB, DA0_DESCRI "
  168. cQry+= "FROM "+RetSqlName("DA0")+" DA0 "
  169. cQry+= "WHERE DA0_FILIAL = '"+xFilial("DA0")+"'
  170. cQry+= "AND DA0_ATIVO = '1' "
  171. cQry+= "AND (DA0_DATATE = '' OR DA0_DATATE >= '"+dtos(dDataBase)+"') "
  172. cQry+= "AND DA0.D_E_L_E_T_ = ' ' "
  173. If Select("QFIL") > 0
  174. QFIL->(dbCloseArea())
  175. Endif
  176. TcQuery cQry New Alias "QFIL"
  177. While QFIL->(!Eof())
  178. cTabela+=' <option value="'+Alltrim(QFIL->DA0_CODTAB)+'" '+Iif(QFIL->DA0_CODTAB == cTabPadrao,'selected','')+'>'+Alltrim(QFIL->DA0_CODTAB)+' - '+Alltrim(QFIL->DA0_DESCRI)+'</option>'
  179. QFIL->(dbSkip())
  180. End
  181. cTabela+='</select>'
  182. //Tipo de cliente
  183. aTpCli:= RetSx3Box(Posicione('SX3',2,'CJ_TIPOCLI','X3CBox()'),,,1)
  184. cTpCliente:='<select data-plugin-selectTwo class="form-control populate placeholder" data-plugin-options='+"'"
  185. cTpCliente+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="CJ_TIPOCLI" id="CJ_TIPOCLI" '
  186. cTpCliente+=' disabled >'
  187. cTpCliente+=' <option value=""></option>'
  188. For f:= 1 to Len(aTpCli)
  189. cTpCliente+=' <option value="'+aTpCli[f,2]+'">'+aTpCli[f,3]+'</option>'
  190. Next
  191. cTpCliente+='</select>'
  192. //Grupo de tributação do cliente
  193. cGrpTrib:= '<input id="CJ_GRPTRIB" name="CJ_GRPTRIB" class="form-control" value="" disabled>'
  194. //Contato
  195. cContato:= ' <input id="CJ_XCONTAT" name="CJ_XCONTAT" maxlength="'+cvaltochar(GetSX3Cache("CJ_XCONTAT","X3_TAMANHO"))+'" class="form-control text-uppercase" value="" disabled>'
  196. cContDDD:= ' <input id="CJ_XCONDDD" name="CJ_XCONDDD" maxlength="'+cvaltochar(GetSX3Cache("CJ_XCONDDD","X3_TAMANHO"))+'" class="form-control only-numbers" value="" disabled>'
  197. cContTel:= ' <input id="CJ_XCONTEL" name="CJ_XCONTEL" maxlength="'+cvaltochar(GetSX3Cache("CJ_XCONTEL","X3_TAMANHO"))+'" class="form-control only-numbers" value="" disabled>'
  198. //Cliente de Entrega
  199. cCliEntr:='<select data-plugin-selectTwo class="form-control populate placeholder" data-plugin-options='+"'"
  200. cCliEntr+='{ "placeholder": "Selecione um Cliente", "allowClear": false }'+"'"
  201. cCliEntr+=' name="CJ_CLIENT" id="CJ_CLIENT" onchange="javascript:atuLocEnt();" disabled>'
  202. cCliEntr+=' <option data-hidden="true"></option>'
  203. cCliEntr+='</select>'
  204. //Local de entrega
  205. cLocalEnt:= '<div class="flexContainer">'
  206. cLocalEnt+= ' <input id="CJ_UFENT" name="CJ_UFENT" class="form-control" value="" disabled>' //onchange="javascript:atuVlrFrete();"
  207. cLocalEnt+=' <button class="btEndEntrega" id="btEndEntrega" title="Alterar endereço" disabled>'
  208. cLocalEnt+=' <i class="fa fa-exchange"></i>'
  209. cLocalEnt+=' </button>'
  210. cLocalEnt+='</div>'
  211. //Alimenta os estados
  212. cOptUF:= u_ListaUF()
  213. //Nome da obra
  214. cObra:= '<input id="CJ_OBRA" name="CJ_OBRA" maxlength="'+cvaltochar(GetSX3Cache("CJ_OBRA","X3_TAMANHO"))+'" class="form-control text-uppercase" value="" disabled>'
  215. //Status da Obra
  216. aStObra:= RetSx3Box(Posicione('SX3',2,'CJ_VEND6','X3CBox()'),,,1)
  217. cStatusObra:='<select data-plugin-selectTwo class="form-control poulate mb-md" data-plugin-options='+"'"+'{"placeholder": "Selecione...", "minimumResultsForSearch": "-1"}'+"'"'
  218. cStatusObra+=' name="CJ_VEND6" id="CJ_VEND6" disabled>'
  219. cStatusObra+='<option value=""></option>'
  220. For f:= 1 to Len(aStObra)
  221. cStatusObra+=' <option value="'+Left(aStObra[f,1],2)+'">'+aStObra[f,1]+'</option>'
  222. Next
  223. cStatusObra+='</select>'
  224. //Tipo da Obra
  225. cTpObra:= '<input id="CJ_YOBRATP" name="CJ_YOBRATP" maxlength="'+cvaltochar(GetSX3Cache("CJ_YOBRATP","X3_TAMANHO"))+'" class="form-control" value="" disabled>'
  226. //Previsão Fechamento
  227. aPrevisao:= {{"B","Balizador"},{"A","30/120 dias"},{"V","Em 30 dias"},{"M","Após 4 meses"},{"C","Concorrência"}}
  228. cPrevFecha:='<select data-plugin-selectTwo class="form-control poulatemb-md" data-plugin-options='+"'"+'{"placeholder": "Selecione...", "minimumResultsForSearch": "-1"}'+"'"'
  229. cPrevFecha+=' name="CJ_TERMOME" id="CJ_TERMOME" disabled>'
  230. cPrevFecha+='<option value=""></option>'
  231. For f:= 1 to Len(aPrevisao)
  232. cPrevFecha+=' <option value="'+aPrevisao[f,1]+'">'+aPrevisao[f,2]+'</option>'
  233. Next
  234. cPrevFecha+='</select>'
  235. //Seleciona as condições de pagamento disponíveis no combo
  236. cCondPag:='<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  237. cCondPag+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="CJ_CONDPAG" id="CJ_CONDPAG" '
  238. cCondPag+='required="" aria-required="true" onchange="javascript:vldCond()" disabled>'
  239. cCondPag+=' <option value=""></option>'
  240. //Verifica a tabela cadastrada no cliente
  241. SE4->(dbSeek(xFilial("SE4")+SA1->A1_COND))
  242. cCondNot:= GetNewPar("PR_CONDPNO","")
  243. cCondPad:= GetNewPar("PR_CONDPAD","B13")
  244. //Seleciona as condições de pagamento disponíveis no combo
  245. cQry:= " Select E4_CODIGO, E4_DESCRI, E4_ACRSFIN"
  246. cQry+= " From "+RetSqlName("SE4")+" SE4 "
  247. cQry+= " Where E4_FILIAL = '"+xFilial("SE4")+"' "
  248. cQry+= " And E4_MSBLQL <> '1' "
  249. If !Empty(cCondNot)
  250. cQry+= " And E4_CODIGO not in "+FormatIn(cCondNot,"|")+" "
  251. Endif
  252. cQry+= " And SE4.D_E_L_E_T_ = ' ' "
  253. If Select("QRP") > 0
  254. QRP->(dbCloseArea())
  255. Endif
  256. TcQuery cqry New Alias "QRP"
  257. While QRP->(!Eof())
  258. cCondPag+=' <option value="'+QRP->E4_CODIGO+'" '+Iif(QRP->E4_CODIGO == cCondPad,'selected','')+'>'+Alltrim(QRP->E4_CODIGO)+" - "+Alltrim(QRP->E4_DESCRI)+'</option>'
  259. QRP->(dbSkip())
  260. End
  261. QRP->(dbCloseArea())
  262. cCondPag+='</select>'
  263. //Intermediador
  264. cIntermed:='<select class="form-control populate selectpicker" data-live-search="true"'
  265. cIntermed+='title="Selecione..." name="CJ_CLIINTE" id="CJ_CLIINTE" disabled>'
  266. cIntermed+=' <option data-hidden="true"></option>'
  267. cIntermed+='</select>'
  268. //Retorno
  269. nDiasVal:= 0
  270. cRetorno:='<input type="text" id="CJ_RETORNO" name="CJ_RETORNO" data-plugin-datepicker data-plugin-options='+"'"+'{ "startDate": "+'+cvaltochar(nDiasVal)+'d", "language": "pt-BR",'
  271. cRetorno+='"daysOfWeekDisabled": "[0]","daysOfWeekHighlighted":"[0]","autoclose": "true","disabled":"true"}'+"'"+' class="form-control only-numbers" placeholder="__/__/____" '
  272. cRetorno+='value="'+dtoc(date()+nDiasVal)+'" disabled>'
  273. //Estudo Luminotécnico
  274. aEstd:= RetSx3Box(Posicione('SX3',2,'CJ_LUMINOT','X3CBox()'),,,1)
  275. aSort(aEstd)
  276. cEstudo:='<select data-plugin-selectTwo class="form-control poulatemb-md" data-plugin-options='+"'"+'{"placeholder": "Selecione...", "minimumResultsForSearch": "-1"}'+"'"'
  277. cEstudo+=' name="CJ_LUMINOT" id="CJ_LUMINOT" onchange="javascript:vldEstudo()" disabled>'
  278. cEstudo+='<option value=""></option>'
  279. For f:= 1 to Len(aEstd)
  280. cEstudo+=' <option value="'+aEstd[f,2]+'" >'+Upper(aEstd[f,3])+'</option>'
  281. Next
  282. cEstudo+='</select>'
  283. cNumEst:= ' <input id="CJ_REGLUMI" name="CJ_REGLUMI" maxlength="'+cvaltochar(GetSX3Cache("CJ_REGLUMI","X3_TAMANHO"))+'" class="form-control" value="" disabled>'
  284. //Segmento
  285. aSegmen:= RetSx3Box(Posicione('SX3',2,'CJ_SEGMENT','X3CBox()'),,,1)
  286. cSegmento:='<select data-plugin-selectTwo class="form-control poulatemb-md" data-plugin-options='+"'"+'{"placeholder": "Selecione...","minimumResultsForSearch": "-1"}'+"'"'
  287. cSegmento+=' name="CJ_SEGMENT" id="CJ_SEGMENT" disabled>'
  288. cSegmento+=' <option value=""></option>'
  289. For f:= 1 to Len(aSegmen)
  290. cSegmento+=' <option value="'+aSegmen[f,1]+'" >'+aSegmen[f,1]+'</option>'
  291. Next
  292. cSegmento+='</select>'
  293. //Prospecção
  294. aProsp:= RetSx3Box(Posicione('SX3',2,'CJ_PROPECC','X3CBox()'),,,1)
  295. cProsp:='<select data-plugin-selectTwo class="form-control poulatemb-md" data-plugin-options='+"'"+'{"placeholder": "Selecione...", "minimumResultsForSearch": "-1"}'+"'"'
  296. cProsp+=' name="CJ_PROPECC" id="CJ_PROPECC" onchange="javascript:vldProspec()" disabled>'
  297. cProsp+='<option value=""></option>'
  298. For f:= 1 to Len(aProsp)
  299. cProsp+=' <option value="'+aProsp[f,2]+'" >'+Upper(aProsp[f,3])+'</option>'
  300. Next
  301. cProsp+='</select>'
  302. //Prospectado Por
  303. aProsp:= RetSx3Box(Posicione('SX3',2,'CJ_PROSCOD','X3CBox()'),,,1)
  304. aSort(aProsp)
  305. cProspPor:='<select data-plugin-selectTwo class="form-control poulatemb-md" data-plugin-options='+"'"+'{"placeholder": "Selecione...","minimumResultsForSearch": "-1"}'+"'"'
  306. cProspPor+=' name="CJ_PROSCOD" id="CJ_PROSCOD" onchange="javascript:vldProsPor();" disabled>'
  307. cProspPor+=' <option value=""></option>'
  308. For f:= 1 to Len(aProsp)
  309. cProspPor+=' <option value="'+aProsp[f,1]+'">'+aProsp[f,1]+'</option>'
  310. Next
  311. cProspPor+='</select>'
  312. //Regional
  313. cRegional:='<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  314. cRegional+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="CJ_REGIAO" id="CJ_REGIAO" '
  315. cRegional+='required="" aria-required="true" disabled>'
  316. cRegional+='<option value=""></option>'
  317. cRegional+= u_ListaVend(.T.,Posicione("SA3",1,xFilial("SA3")+cVendLogin,"A3_REGIONA"))
  318. cRegional+='</select>'
  319. //Vendedor do cliente
  320. cVend2:= '<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  321. cVend2+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="CJ_VEND" id="CJ_VEND" '
  322. cVend2+='disabled>' //required="" aria-required="true"
  323. cVend2+='<option value=""></option>'
  324. cVend2+= u_ListaVend(.F.,'')
  325. cVend2+='</select>'
  326. //Vendedor da oportunidade
  327. cVend3:= '<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-live-search="true" data-plugin-options='+"'"
  328. cVend3+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="CJ_VEND3" id="CJ_VEND3" disabled>'//required="" aria-required="true"
  329. cVend3+='<option value="">Selecione...</option>'
  330. //cVend3+= u_ListaVend(.F.,SA1->A1_VEND)
  331. cVend3+='</select>'
  332. //Vendedor 4
  333. cVend4:= '<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  334. cVend4+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="CJ_VEND4" id="CJ_VEND4" '
  335. cVend4+=' disabled>' //required="" aria-required="true"
  336. cVend4+='<option value=""></option>'
  337. cVend4+= u_Vend04('')
  338. cVend4+='</select>'
  339. //Especificado por
  340. cEspecif:= '<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  341. cEspecif+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="CJ_CODESP" id="CJ_CODESP" '
  342. cEspecif+='disabled>' //required="" aria-required="true"
  343. cEspecif+='<option value=""></option>'
  344. cEspecif+= u_ListaEsp('')
  345. cEspecif+='</select>'
  346. //Negociadora
  347. cNegociad:= '<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  348. cNegociad+='{ "placeholder": "Selecione...", "allowClear": false }'+"'"+' name="CJ_VEND7" id="CJ_VEND7" '
  349. cNegociad+='disabled>' //required="" aria-required="true"
  350. cNegociad+='<option value=""></option>'
  351. cNegociad+= u_ListaNeg('')
  352. cNegociad+='</select>'
  353. //Validade do Orçamento
  354. nDiasVal:= GetNewPar("PR_DTVALID",10)
  355. cValidade:='<input type="text" id="CJ_VALIDA" name="CJ_VALIDA" data-plugin-datepicker data-plugin-options='+"'"+'{ "startDate": "+'+cvaltochar(nDiasVal)+'d", "language": "pt-BR",'
  356. cValidade+='"daysOfWeekDisabled": "[0]","daysOfWeekHighlighted":"[0]","autoclose": "true","disabled":"true"}'+"'"+' class="form-control only-numbers" placeholder="__/__/____" '
  357. cValidade+='value="'+dtoc(date()+nDiasVal)+'" disabled>'
  358. //Prazo de embarque
  359. cPrazoEmb:= '<input id="CJ_PRZEMB" name="CJ_PRZEMB" maxlength="'+cvaltochar(GetSX3Cache("CJ_PRZEMB","X3_TAMANHO"))+'" class="form-control" value="15" disabled>'
  360. //Tipo de frete
  361. aTpFrete:= {{"S","Sem Frete"},{"C","CIF"},{"F","FOB"}}
  362. cTpFrete:='<select data-plugin-selectTwo class="form-control poulatemb-md" data-plugin-options='+"'"+'{"minimumResultsForSearch": "-1"}'+"'"'
  363. cTpFrete+=' name="CJ_TPFRETE" id="CJ_TPFRETE" onchange="javascript:VldFrete()" disabled>'
  364. For f:= 1 to Len(aTpFrete)
  365. cTpFrete+=' <option value="'+aTpFrete[f,1]+'" >'+aTpFrete[f,2]+'</option>'
  366. Next
  367. cTpFrete+='</select>'
  368. cPFrete:= '<input id="CJ_PERCFRT" name="CJ_PERCFRT" class="form-control text-right percentual" placeholder="0,00" maxlength="'+cvaltochar(GetSX3Cache("CJ_PERCFRT","X3_TAMANHO")+1)+'" '
  369. cPFrete+= 'value="" disabled>'
  370. cValFre:= '<input id="CJ_FRETE" name="CJ_FRETE" class="form-control money text-right" placeholder="0,00" '
  371. cValFre+= 'value="" onchange="javascript:TotalGeral()" disabled>'
  372. //% RT
  373. cComRT:= '<input id="CJ_COMISTR" name="CJ_COMISTR" class="form-control percentual text-right" placeholder="0,00" maxlength="'+cvaltochar(GetSX3Cache("CJ_COMISTR","X3_TAMANHO")+1)+'" '
  374. cComRT+= 'value="" disabled>'
  375. //Observação Comercial
  376. cObsCom:= ""
  377. //Margem de Contribuição
  378. If HttpSession->Tipo <> "R" //Representante
  379. cMargemCont:= ' <div class="col-lg-2"> '
  380. cMargemCont+= ' <label class="control-label">MC</label> '
  381. cMargemCont+= ' <input id="MARGEM" name="MARGEM" class="form-control" value="" disabled >'//'+u_getMCOrc() + "%"+'
  382. cMargemCont+= ' </div>'
  383. Endif
  384. /*
  385. //Transportadora
  386. cTransp:='<select data-plugin-selectTwo class="form-control populate placeholder mb-md" data-plugin-options='+"'" '
  387. cTransp+='{ "placeholder": "Selecione uma Transportadora", "allowClear": false }'+"'"+' name="CJ_XTRANSP" id="CJ_XTRANSP" '
  388. cTransp+='required="" aria-required="true" disabled>'
  389. cTransp+=' <option value=""></option>'
  390. cTransp+='</select>'
  391. //Peso
  392. cPeso:= '<input type="text" id="CJ_XPESO" name="CJ_XPESO" class="form-control text-right only-numbers" placeholder="0" '
  393. cPeso+= 'value="">'
  394. //Volume
  395. cVolume:= '<input type="text" id="CJ_XVOLUME" name="CJ_XVOLUME" class="form-control text-right only-numbers" placeholder="0" '
  396. cVolume+= 'value="">'
  397. //Espécie
  398. cEspecie:= '<input type="text" id="CJ_XESPECI" name="CJ_XESPECI" class="form-control" placeholder="" '
  399. cEspecie+= 'value="" maxlength="10">'
  400. //Itens do orçamento
  401. /*
  402. aItens - array que define o cabeçalho da tabela de produtos
  403. [1] - Nome da coluna
  404. [2] - Nome do campo
  405. [3] - Tamanho
  406. [4] - Alinhamento
  407. [5] - Tipo
  408. [6] - Editável
  409. [7] - Obrigatório
  410. [8] - Moeda
  411. [9] - Placeholder
  412. [10] - Hidden
  413. [11] - MaxLength
  414. */
  415. aAdd(aItens, {"Item","CK_ITEM","*","text-left","C",.F.,.F.,.F.,"",.F.,""})
  416. aAdd(aItens, {"Produto","CK_PRODUTO","300px"," text-left","C",.F.,.T.,.F.,"Selecione...",.F.,""})
  417. aAdd(aItens, {"Quant.","CK_QTDVEN","*"," text-right only-numbers","N",.T.,.T.,.F.,"0",.F.,""})
  418. aAdd(aItens, {"Observação","CK_OBS","*"," text-left","C",.T.,.F.,.F.,"",.F.,"80"})
  419. aAdd(aItens, {"Prazo de Embarque","CK_PRZEMB","70px","text-right only-numbers","N",.F.,.F.,.F.,"",.F.,"3"})
  420. aAdd(aItens, {"Vlr Unitário","CK_PRCVEN","*"," text-right","N",.T.,.F.,.T.,"0,00",.F.,""})
  421. aAdd(aItens, {"Vlr c/ Impostos","CK_XPRCIMP","*","text-right","N",.F.,.F.,.T.,"0,00",.T.,""})
  422. aAdd(aItens, {"Vlr de Venda","iCK_PRCVEN","*"," text-right myformato","N",.F.,.T.,.T.,"0,00",.T.,""})
  423. aAdd(aItens, {"Custo","CK_CUSTO","*"," text-right myformato","N",.F.,.F.,.T.,"0,00",.T.,""})
  424. aAdd(aItens, {"IPI","CK_XVALIPI","*"," text-right","N",.T.,.F.,.T.,"0,00",.T.,""})
  425. aAdd(aItens, {"ICMS","CK_XVALICM","*"," text-right","N",.T.,.F.,.T.,"0,00",.T.,""})
  426. aAdd(aItens, {"ICMS ST","CK_XICMST","*"," text-right","N",.T.,.F.,.T.,"0,00",.T.,""})
  427. aAdd(aItens, {"% Desconto","CK_DESCONT","*"," text-right percentual","N",.T.,.F.,.T.,"0,00",Iif(HttpSession->Tipo <> "R",.F.,.T.) ,"7"})
  428. aAdd(aItens, {"Diretor","CK_NOMDIRE","*"," text-left","C",.T.,.F.,.T.,"",.T.,"12"})
  429. aAdd(aItens, {"% Comissão","PER_COM","*"," text-right ","N",.F.,.F.,.T.,"0,00",.T.,""})
  430. aAdd(aItens, {"Vlr Comissão","VAL_COM","*"," text-right","N",.T.,.F.,.T.,"0,00",.T.,""})
  431. aAdd(aItens, {"Total","CK_VALOR","150px"," text-right","N",.F.,.T.,.T.,"0,00",.F.,""})
  432. aAdd(aItens, {"","ACAO","*"," text-center","X",.T.,.F.,.F.,"",.F.,""})
  433. // Cria o cabeçalho dos Itens
  434. For nLin := 1 to Len(aItens)
  435. cOrcCabec += '<th'+Iif(aItens[nLin,2] == "CK_VALOR",' width="'+aItens[nLin,3]+'"',Iif(aItens[nLin,2] == "CK_PRODUTO",' width="'+aItens[nLin,3]+'"',''))
  436. cOrcCabec+= Iif(aItens[nLin,10],' hidden','')+'>'+Iif(aItens[nLin,7],'<span class="required">*</span>',"")
  437. cOrcCabec+= aItens[nLin][1]+'</th>'
  438. Next
  439. //Preenchimento dos itens
  440. nItens++
  441. cOrcItens += '<tr class="odd" id="linha01">'
  442. For nLin := 1 to Len(aItens)
  443. If aItens[nLin,2] == "ACAO"
  444. cOrcItens += '<td class="actions">'
  445. cOrcItens += ' <i class="fa fa-info fa-lg" data-toggle="tooltip" data-original-title="Detalhes da linha" onclick="detalheOrc('+"'"+cItem+"'"+');"></i>'
  446. cOrcItens += ' <i class="fa fa-times-circle fa-lg" data-toggle="tooltip" data-original-title="Remover a linha" onclick="removeItem('+"'"+cItem+"'"+');"></i>
  447. cOrcItens += '</td>
  448. Else
  449. If aItens[nLin,2] == "CK_PRODUTO"
  450. cOrcItens += '<td>' //class="form-group row pb-4"
  451. Else
  452. cOrcItens += '<td'+Iif(aItens[nLin,10],' hidden','')+'>'
  453. Endif
  454. lMoeda:= aItens[nLin,8] //Indica se é Moeda
  455. lNumber:= aItens[nLin,5] = "N" //Indica que é numérico
  456. xValue:= ""
  457. Do Case
  458. Case aItens[nLin][5] == 'C'
  459. If aItens[nLin,2] == "CK_ITEM"
  460. xValue := "01"
  461. Else
  462. xValue := space(GetSX3Cache(aItens[nLin][2],"X3_TAMANHO"))
  463. Endif
  464. Case aItens[nLin][5] == 'N'
  465. If aItens[nLin,2] == "CK_QTDVEN"
  466. xValue := Iif(lNewOrc,"",Alltrim(PadR(TransForm(QRY->&(aItens[nLin][2]),PesqPict("SCK",aItens[nLin,2])),space(GetSX3Cache(aItens[nLin][2],"X3_TAMANHO")))))
  467. ElseIf aItens[nLin,2] == "PER_COM"
  468. xValue := Iif(lNewOrc,"0",Alltrim(PadR(TransForm(QRY->&(aItens[nLin][2]),PesqPict("SD2","D2_COMIS1")),space(GetSX3Cache(aItens[nLin][2],"X3_TAMANHO")))))
  469. ElseIf aItens[nLin,2] == "VAL_COM"
  470. xValue := Iif(lNewOrc,"0",Alltrim(PadR(TransForm(QRY->&(aItens[nLin][2]),PesqPict("SCK","CK_PRCVEN")),space(GetSX3Cache(aItens[nLin][2],"X3_TAMANHO")))))
  471. Elseif aItens[nLin,2] == "iCK_PRCVEN"
  472. xValue := Iif(lNewOrc,"0",Alltrim(PadR(TransForm(QRY->&(aItens[nLin][2]),PesqPict("SCK","CK_PRCVEN")),space(GetSX3Cache(aItens[nLin][2],"X3_TAMANHO")))))
  473. Else
  474. xValue := Iif(lNewOrc,"0",Alltrim(PadR(TransForm(QRY->&(aItens[nLin][2]),PesqPict("SCK",aItens[nLin,2])),space(GetSX3Cache(aItens[nLin][2],"X3_TAMANHO")))))
  475. Endif
  476. EndCase
  477. If aItens[nLin,6] //Campo Editável
  478. cOrcItens += '<input id="'+aItens[nLin][2]+cItem+'" data-prop="'+aItens[nLin][2]+'" name="'+aItens[nLin][2]+cItem+'" class="form-control '+aItens[nLin,4]
  479. cOrcItens +=If(lMoeda," ",If(lNumber," only-numbers",""))+'" type="text" '
  480. // cOrcItens +=If(lMoeda," money5",If(lNumber," only-numbers",""))+'" type="text" '
  481. cOrcItens += 'placeholder="'+aItens[nLin,9]+'" '
  482. //Atribui as funções javascript
  483. If aItens[nLin,2] == "CK_QTDVEN"
  484. cOrcItens+='onblur="javascript:VldQtd('+"'"+cItem+"'"+') "'
  485. Endif
  486. If aItens[nLin,2] == "iCK_PRCVEN"
  487. cOrcItens+='onblur="javascript:VldValor('+"'"+cItem+"'"+') "'
  488. Endif
  489. If aItens[nLin,2] == "CK_DESCONT"
  490. cVldDesc:= Iif(GetMv("LC_OR1012A",,.F.),'S','N')
  491. cOrcItens+='onblur="javascript:VldValor('+"'"+cItem+"'"+','+"'"+cVldDesc+"'"+')" maxlength="7" '
  492. //cOrcItens+='onkeyup="formate()" onblur="javascript:VldValor('+"'"+cItem+"'"+') "'
  493. Endif
  494. If aItens[nLin,2] $ ("CK_QTDVEN|iCK_PRCVEN|CK_DESCONT")
  495. cOrcItens+='onkeyup="javascript:TotalItem('+"'"+cItem+"'"+') "'
  496. Endif
  497. //Campo obrigatório
  498. cOrcItens += Iif(aItens[nLin][7],'required="" aria-required="true" ','')
  499. //Inicia todos os campos desabilitados
  500. cOrcItens += 'disabled '
  501. cOrcItens += 'value="'+Alltrim(xValue)+'">'
  502. Else
  503. If aItens[nLin,2] = "CK_PRODUTO"
  504. //Cria o select para o produto
  505. cOrcItens +='<div class="form-group">'
  506. cOrcItens +=' <div class="col-md-12">
  507. cOrcItens +=' <div class="flexContainer">
  508. cOrcItens +=' <input type="text" class="form-control smsediticon" placeholder="Digite o código ou descrição..." '
  509. cOrcItens +=' name="CK_PRODUTO'+cItem+'" id="CK_PRODUTO'+cItem+'"'
  510. cOrcItens += Iif(aItens[nLin][7],'required="" aria-required="true" ','')+' data-live-search="true" '
  511. cOrcItens +=' autocomplete="off" value="" / disabled>'
  512. cOrcItens +=' <button class="btSearch" id="btSearch"'+cItem+'>'
  513. cOrcItens +=' <i class="fa fa-search" alt="Pesquisar"></i>'
  514. cOrcItens +=' </button>
  515. cOrcItens +=' </div>
  516. cOrcItens +=' </div>
  517. cOrcItens +='</div>
  518. Else
  519. cOrcItens += '<input id="'+aItens[nLin][2]+cItem+'" data-prop="'+aItens[nLin][2]+'" name="'+aItens[nLin][2]+cItem+'" class="form-control '+aItens[nLin,4]+' input-block" '
  520. If aItens[nLin,2] = "CK_ITEM"
  521. cOrcItens += ' size=4 '
  522. Endif
  523. cOrcItens += 'type="text" disabled width="" '
  524. cOrcItens += 'value="'+Alltrim(xValue)+'">'
  525. Endif
  526. Endif
  527. Endif
  528. cOrcItens += '</td>'
  529. Next
  530. //Inputs Hidden
  531. cItensHid += '<input type="hidden" class="" id="ALIQ_ICMS'+cItem+'" name="ALIQ_ICMS'+cItem+'" value="0">'
  532. cItensHid += '<input type="hidden" class="" id="ALIQ_IPI'+cItem+'" name="ALIQ_IPI'+cItem+'" value="0">'
  533. cItensHid += '<input type="hidden" class="" id="ALIQ_ST'+cItem+'" name="ALIQ_ST'+cItem+'" value="0">'
  534. cItensHid += '<input type="hidden" class="" id="VAL_ICMS'+cItem+'" name="VAL_ICMS'+cItem+'" value="0">'
  535. cItensHid += '<input type="hidden" class="" id="VAL_IPI'+cItem+'" name="VAL_IPI'+cItem+'" value="0">'
  536. cItensHid += '<input type="hidden" class="" id="VAL_ST'+cItem+'" name="VAL_ST'+cItem+'" value="0">'
  537. cItensHid += '<input type="hidden" class="" id="BASE_ICMS'+cItem+'" name="BASE_ICMS'+cItem+'" value="0">'
  538. cItensHid += '<input type="hidden" class="" id="BASE_ST'+cItem+'" name="BASE_ST'+cItem+'" value="0">'
  539. cItensHid += '<input type="hidden" class="" id="BASE_IPI'+cItem+'" name="BASE_IPI'+cItem+'" value="0">'
  540. cItensHid += '<input type="hidden" class="" id="IMP_PRCTAB'+cItem+'" name="IMP_PRCTAB'+cItem+'" value="0">'
  541. cItensHid += '<input type="hidden" class="" id="QTD_EMB'+cItem+'" name="QTD_EMB'+cItem+'" value="0">'
  542. cItensHid += '<input type="hidden" class="" id="CK_TES'+cItem+'" name="CK_TES'+cItem+'" value="">'
  543. cItensHid += '<input type="hidden" class="" id="QTDMIN'+cItem+'" name="QTDMIN'+cItem+'" value="">'
  544. cItensHid += '<input type="hidden" class="" id="GRUPO'+cItem+'" name="GRUPO'+cItem+'" value="">'
  545. cItensHid += '<input type="hidden" class="" id="VENCIMENTO'+cItem+'" name="VENCIMENTO'+cItem+'" value="0">'
  546. cOrcItens+=cItensHid
  547. cOrcItens += '<input type="hidden" name="QtdItens" id="QtdItens" value="'+cValtoChar(nItens)+'"/>'
  548. cOrcItens += '<input type="hidden" id="PROXIMO" name="PROXIMO" value="01"/>
  549. cOrcItens += '<input type="hidden" name="CJ_NUM" id="CJ_NUM" value="" />'
  550. cOrcItens += '<input type="hidden" name="OPCAO" id="OPCAO" value="3" />'
  551. cOrcItens += '<input type="hidden" name="DESCCOND" id="DESCCOND" value="" />'
  552. cOrcItens += '<input type="hidden" name="CJ_DSDIRET" id="CJ_DSDIRET" value="0" />'
  553. cOrcItens += '<input type="hidden" name="FRETEMIN" id="FRETEMIN" value="'+cvaltochar(GetNewPar("MV_FRETMIN",0))+'" />'
  554. cOrcItens += '</tr>'
  555. //Adiciona os botões de ações na tabela de itens
  556. cBtnItens+='<div class="row form-group">'
  557. cBtnItens+=' <div class="col-sm-2">'
  558. cBtnItens+=' <button class="btn btn-primary" id="btAddItm" name="btAddItm">'
  559. cBtnItens+=' <i class="fa fa-plus-square"></i> Novo Item</button>'
  560. cBtnItens+=' </div>'
  561. cBtnItens+='</div>'
  562. //Adiciona os botões da página
  563. //cBotoes+='<h5 class="text-primary">Orçamento válido apenas dentro do mês de '+MesExtenso(date())+' de '+cvaltochar(Year(date()))+'.</h5>'
  564. cBotoes+='<input class="btn btn-primary" type="button" id="btSalvar" name="btSalvar" value="Salvar"/>'+chr(13)+chr(10)
  565. cBotoes+='<input class="btn btn-primary" type="button" id="btVoltar" name="btVoltar" value="Voltar" onclick="javascript: location.href='+"'"+'u_orcamento.apw?PR='+cCodLogin+"';"+'"/>'+chr(13)+chr(10)
  566. //Totalizador disponível apenas para regional
  567. If HttpSession->Tipo <> "R"
  568. cTotalReg:='<div class="col-sm-12">'
  569. cTotalReg+=' <label class="">Itens sem Desconto&nbsp;</label>'
  570. cTotalReg+=' <input class="form-control text-right" id="TOTAL_ITENS_NODESC" name="TOTAL_ITENS_NODESC" placeholder="0,00" disabled="" type="text" value="'+Transform(nTVlrSDesc,"@E 999,999,999,999.99")+'"></input>'
  571. cTotalReg+=' &nbsp;&nbsp;&nbsp;&nbsp;'
  572. cTotalReg+=' <label class="">Itens sem Desconto+Impostos&nbsp;</label>'
  573. cTotalReg+=' <input class="form-control text-right" id="TOTAL_NODESC_IMP" name="TOTAL_NODESC_IMP" placeholder="0,00" disabled="" type="text" value="'+Transform(nTVlrSDesc+nTImpostos,"@E 999,999,999,999.99")+'"></input>'
  574. cTotalReg+='</div>'
  575. cTotalReg+='<br>'
  576. cTotalReg+='<br>'
  577. cShowDesc := 'true'
  578. Endif
  579. //Retorna o HTML para construção da página
  580. cHtml := H_AddOrc()
  581. Web Extended End
  582. Return (cHTML)
  583. /*__________________________________________________________________________
  584. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  585. ¦¦+-----------------------------------------------------------------------+¦¦
  586. ¦¦¦Funçäo ¦ ListaUF ¦ Autor ¦ Lucilene Mendes ¦ Data ¦24.08.24 ¦¦¦
  587. ¦¦+----------+------------------------------------------------------------¦¦¦
  588. ¦¦¦Descriçäo ¦ Retorna lista de select com os estados ¦¦¦
  589. ¦¦+-----------------------------------------------------------------------+¦¦
  590. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  591. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  592. User Function ListaUF()
  593. Local cLista:= ""
  594. cQry:= " Select X5_CHAVE, X5_DESCRI "
  595. cQry+= " From "+RetSqlName("SX5")+" SX5 "
  596. cQry+= " Where X5_FILIAL = '"+xFilial("SX5")+"' "
  597. cQry+= " And X5_TABELA = '12' "
  598. cQry+= " And X5_CHAVE <> 'EX' "
  599. cQry+= " And SX5.D_E_L_E_T_ = ' ' "
  600. cQry+= " Order by X5_DESCRI"
  601. APWExOpenQuery(ChangeQuery(cQry),'QRE',.T.)
  602. cLista+=' <option value=""></option>'
  603. While QRE->(!Eof())
  604. cLista+=' <option value="'+Alltrim(QRE->X5_CHAVE)+'">'+Alltrim(QRE->X5_DESCRI)+'</option>'
  605. QRE->(dbSkip())
  606. End
  607. QRE->(dbCloseArea())
  608. Return cLista
  609. /*__________________________________________________________________________
  610. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  611. ¦¦+-----------------------------------------------------------------------+¦¦
  612. ¦¦¦Funçäo ¦ ListaVend ¦ Autor ¦ Lucilene Mendes ¦ Data ¦24.08.24 ¦¦¦
  613. ¦¦+----------+------------------------------------------------------------¦¦¦
  614. ¦¦¦Descriçäo ¦ Retorna lista de select com os vendedores conforme o tipo ¦¦¦
  615. ¦¦+-----------------------------------------------------------------------+¦¦
  616. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  617. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  618. User Function ListaVend(lRegional,cOpcSel)
  619. Local cLista:= ""
  620. Default lRegional:= .F.
  621. cQry:= " Select A3_COD, A3_NOME "
  622. cQry+= " From "+RetSqlName("SA3")+" SA3 "
  623. cQry+= " Where A3_FILIAL = '"+xFilial("SA3")+"' "
  624. If lRegional
  625. cQry+= " And A3_CLASSIF = 'R' "
  626. cQry+= " And SUBSTRING(A3_NOME,1,4) = 'REGI' "
  627. Else
  628. cQry+= " And A3_CLASSIF IN ('V','T') " //VENDEDOR OU TELEVENDAS - (GATILHO VENDEDOR FATA1010)
  629. cQry+= " And SUBSTRING(A3_NOME,1,4) <> 'REGI' "
  630. Endif
  631. cQry+= " And A3_MSBLQL <> '1' "
  632. cQry+= " And SA3.D_E_L_E_T_ = ' ' "
  633. If Select("QRR") > 0
  634. QRR->(dbCloseArea())
  635. Endif
  636. conout("query vendedores:"+cqry)
  637. APWExOpenQuery(ChangeQuery(cQry),'QRR',.T.)
  638. While QRR->(!Eof())
  639. cLista+=' <option value="'+QRR->A3_COD+'"'+Iif(Alltrim(QRR->A3_COD) == AllTrim(cOpcSel),'selected','')+'>'+Alltrim(QRR->A3_COD)+" - "+Alltrim(u_RemEspec(QRR->A3_NOME))+'</option>'
  640. QRR->(dbSkip())
  641. End
  642. QRR->(dbCloseArea())
  643. Return cLista
  644. /*__________________________________________________________________________
  645. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  646. ¦¦+-----------------------------------------------------------------------+¦¦
  647. ¦¦¦Funçäo ¦ Vend04 ¦ Autor ¦ Lucilene Mendes ¦ Data ¦24.08.24 ¦¦¦
  648. ¦¦+----------+------------------------------------------------------------¦¦¦
  649. ¦¦¦Descriçäo ¦ Retorna lista de select com os vendedores 04 ¦¦¦
  650. ¦¦+-----------------------------------------------------------------------+¦¦
  651. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  652. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  653. User Function Vend04(cOpcSel)
  654. Local cLista:= ""
  655. Local cCodVend:= GetNewPar("PR_VEND04","000845/000846")
  656. cQry:= " Select A3_COD, A3_NOME "
  657. cQry+= " From "+RetSqlName("SA3")+" SA3 "
  658. cQry+= " Where A3_FILIAL = '"+xFilial("SA3")+"' "
  659. cQry+= " And A3_COD IN "+FormatIn(cCodVend,"/")+" "
  660. cQry+= " And A3_CLASSIF = 'E' "
  661. cQry+= " And A3_MSBLQL <> '1' "
  662. cQry+= " And SA3.D_E_L_E_T_ = ' ' "
  663. APWExOpenQuery(ChangeQuery(cQry),'QRV',.T.)
  664. While QRV->(!Eof())
  665. cLista+=' <option value="'+QRV->A3_COD+'"'+Iif(Alltrim(QRV->A3_COD) == AllTrim(cOpcSel),'selected','')+'>'+Alltrim(QRV->A3_COD)+" - "+Alltrim(u_RemEspec(QRV->A3_NOME))+'</option>'
  666. QRV->(dbSkip())
  667. End
  668. QRV->(dbCloseArea())
  669. Return cLista
  670. /*__________________________________________________________________________
  671. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  672. ¦¦+-----------------------------------------------------------------------+¦¦
  673. ¦¦¦Funçäo ¦ ListaEsp ¦ Autor ¦ Lucilene Mendes ¦ Data ¦24.08.24 ¦¦¦
  674. ¦¦+----------+------------------------------------------------------------¦¦¦
  675. ¦¦¦Descriçäo ¦ Retorna lista de select com os especificadores ¦¦¦
  676. ¦¦+-----------------------------------------------------------------------+¦¦
  677. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  678. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  679. User Function ListaEsp(cOpcSel)
  680. Local cLista:= ""
  681. cQry:= " Select X5_CHAVE, X5_DESCRI "
  682. cQry+= " From "+RetSqlName("SX5")+" SX5 "
  683. cQry+= " Where X5_FILIAL = '"+xFilial("SX5")+"' "
  684. cQry+= " And X5_TABELA = 'Z1' "
  685. cQry+= " And SX5.D_E_L_E_T_ = ' ' "
  686. APWExOpenQuery(ChangeQuery(cQry),'QRX',.T.)
  687. While QRX->(!Eof())
  688. cLista+=' <option value="'+QRX->X5_CHAVE+'"'+Iif(Alltrim(QRX->X5_CHAVE) == AllTrim(cOpcSel),'selected','')+'>'+Alltrim(QRX->X5_CHAVE)+" - "+Alltrim(u_RemEspec(QRX->X5_DESCRI))+'</option>'
  689. QRX->(dbSkip())
  690. End
  691. QRX->(dbCloseArea())
  692. Return cLista
  693. /*__________________________________________________________________________
  694. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  695. ¦¦+-----------------------------------------------------------------------+¦¦
  696. ¦¦¦Funçäo ¦ ListaCli ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 17.10.23 ¦¦¦
  697. ¦¦+----------+------------------------------------------------------------¦¦¦
  698. ¦¦¦Descriçäo ¦ Busca a lista de clientes ativos ¦¦¦
  699. ¦¦+-----------------------------------------------------------------------+¦¦
  700. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  701. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  702. User Function ListaCli(cCodVend,cSelecionado)
  703. Local cQuery:= ""
  704. Local cLista:= ""
  705. cQuery := " Select A1_COD, A1_LOJA, A1_CGC, A1_NOME, A1_TIPO, A1_CODMUN, A1_MUN, A1_COND "
  706. cQuery += " From "+RetSqlName("SA1")+" SA1 "
  707. cQuery += " Where A1_FILIAL = '"+xFilial("SA1")+"' "
  708. cQuery += " AND ( "
  709. If HttpSession->Tipo = 'S' //Supervisor acessa todos os clientes da sua equipe
  710. cQuery+= " A1_REGIAO = '"+HttpSession->Regional+"' "
  711. //cQuery+= " A1_VEND in "+FormatIn(HttpSession->Equipe,"|")+" "
  712. Else
  713. If !Empty(cCodVend)
  714. cQuery+= " A1_VEND = '"+cCodVend+"'" // OR A1_VEND2 = '"+cCodVend+"' OR A1_VEND3= '"+cCodVend+"' OR A1_VEND4= '"+cCodVend+"' OR A1_VEND5 = '"+cCodVend+"' ) "
  715. Else
  716. cQuery+= " A1_VEND <> '' "
  717. Endif
  718. Endif
  719. cQuery += " OR A1_VEND = ' ' )"
  720. cQuery += " And A1_MSBLQL <> '1' "
  721. cQuery += " And SA1.D_E_L_E_T_ = ' ' "
  722. cQuery += " Order by A1_NOME "
  723. conout("query clientes:"+cquery)
  724. If Select("QRY") > 0
  725. QRY->(dbCloseArea())
  726. Endif
  727. APWExOpenQuery(ChangeQuery(cQuery),'QRY',.T.)
  728. While QRY->(!EOF())
  729. cLista+=' <option value="'+Alltrim(QRY->A1_COD+QRY->A1_LOJA)+'" '+Iif(&(cSelecionado),'selected','')+'>'+QRY->A1_COD+'/'+QRY->A1_LOJA+' - '+Alltrim(u_RemEspec(QRY->A1_NOME))+" - "+Alltrim(QRY->A1_CGC)+'</option>'
  730. QRY->(dbSkip())
  731. End
  732. APWExCloseQuery('QRY')
  733. Return cLista
  734. /*__________________________________________________________________________
  735. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  736. ¦¦+-----------------------------------------------------------------------+¦¦
  737. ¦¦¦Funçäo ¦ ListaOpt ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 17.10.23 ¦¦¦
  738. ¦¦+----------+------------------------------------------------------------¦¦¦
  739. ¦¦¦Descriçäo ¦ Busca a lista de oportunidades ¦¦¦
  740. ¦¦+-----------------------------------------------------------------------+¦¦
  741. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  742. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  743. User Function ListaOpt(cCodVend,cSelecionado)
  744. Local cQuery:= ""
  745. Local cLista:= ""
  746. cQuery := " Select AD1_NROPOR,AD1_REVISA, AD1_DESCRI, AD1_DESCCI, AD1_NOMPAR"
  747. cQuery += " From "+RetSqlName("AD1")+" AD1 "
  748. cQuery += " Where AD1_FILIAL = '"+xFilial("AD1")+"' "
  749. //cQuery += " And AD1_HOMOLO = '3' " //Status homologação = homologado
  750. cQuery += " And AD1.D_E_L_E_T_ = ' ' "
  751. cQuery += " Order by AD1_NROPOR "
  752. conout("query oportunidade:"+cquery)
  753. If Select("QRYAD1") > 0
  754. QRYAD1->(dbCloseArea())
  755. Endif
  756. APWExOpenQuery(ChangeQuery(cQuery),"QRYAD1",.T.)
  757. While QRYAD1->(!EOF())
  758. cLista+='<option value="'+Alltrim(QRYAD1->AD1_NROPOR)+'">'+QRYAD1->AD1_NROPOR+'/'+Alltrim(QRYAD1->AD1_REVISA)+'/'+;
  759. Alltrim(u_RemEspec(QRYAD1->AD1_DESCRI))+'/'+Alltrim(u_RemEspec(QRYAD1->AD1_DESCCI))+'/'+Alltrim(u_RemEspec(QRYAD1->AD1_NOMPAR))+'</option>'
  760. QRYAD1->(dbSkip())
  761. End
  762. APWExCloseQuery('QRYAD1')
  763. Return cLista
  764. /*__________________________________________________________________________
  765. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  766. ¦¦+-----------------------------------------------------------------------+¦¦
  767. ¦¦¦Funçäo ¦ ListaNeg ¦ Autor ¦ Lucilene Mendes ¦ Data ¦24.08.24 ¦¦¦
  768. ¦¦+----------+------------------------------------------------------------¦¦¦
  769. ¦¦¦Descriçäo ¦ Retorna lista de select com os negociadores ¦¦¦
  770. ¦¦+-----------------------------------------------------------------------+¦¦
  771. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  772. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  773. User Function ListaNeg(cOpcSel)
  774. Local cLista:= ""
  775. cQry:= " Select Z68_COD, Z68_NOME "
  776. cQry+= " From "+RetSqlName("Z68")+" Z68 "
  777. cQry+= " Where Z68_FILIAL = '"+xFilial("Z68")+"' "
  778. cQry+= " And Z68_MSBLQL <> '1' "
  779. cQry+= " And Z68.D_E_L_E_T_ = ' ' "
  780. APWExOpenQuery(ChangeQuery(cQry),'QRN',.T.)
  781. While QRN->(!Eof())
  782. cLista+=' <option value="'+QRN->Z68_COD+'"'+Iif(Alltrim(QRN->Z68_COD) == AllTrim(cOpcSel),'selected','')+'>'+Alltrim(QRN->Z68_COD)+" - "+Alltrim(u_RemEspec(QRN->Z68_NOME))+'</option>'
  783. QRN->(dbSkip())
  784. End
  785. QRN->(dbCloseArea())
  786. Return cLista
  787. /*__________________________________________________________________________
  788. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  789. ¦¦+-----------------------------------------------------------------------+¦¦
  790. ¦¦¦Funçäo ¦ RemEspec ¦ Autor ¦ Lucilene Mendes ¦ Data ¦17.08.17 ¦¦¦
  791. ¦¦+----------+------------------------------------------------------------¦¦¦
  792. ¦¦¦Descriçäo ¦ Remove caracteres especiais ¦¦¦
  793. ¦¦+-----------------------------------------------------------------------+¦¦
  794. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  795. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  796. */
  797. User Function RemEspec(cTexto)
  798. Local aNoChar:= {'<','>','+',"'"} //,"'",'"','&','+'}
  799. Local i:= 0
  800. For i:= 1 to Len(aNoChar)
  801. If aNoChar[i] $ cTexto
  802. cTexto:= StrTran(cTexto,aNoChar[i],"")
  803. Endif
  804. Next
  805. Return cTexto
  806. /*__________________________________________________________________________
  807. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  808. ¦¦+-----------------------------------------------------------------------+¦¦
  809. ¦¦¦Funçäo ¦ SlvOrc ¦ Autor ¦ Lucilene Mendes ¦ Data ¦17.08.17 ¦¦¦
  810. ¦¦+----------+------------------------------------------------------------¦¦¦
  811. ¦¦¦Descriçäo ¦ Gera a cotação. ¦¦¦
  812. ¦¦+-----------------------------------------------------------------------+¦¦
  813. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  814. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  815. */
  816. User Function SlvOrc()
  817. Local cHtml
  818. Local nOpc := 3 // 3- Incluir / 4- Alterar / 5- Excluir
  819. Local cCondPag := ""
  820. Local cTabela := ""
  821. Local cCliente := ""
  822. Local cLoja := ""
  823. Local cMsg := ""
  824. Local cTransp := ""
  825. Local cSerieNF := ""
  826. Local dValidade := ""
  827. Local cItens := ""
  828. Local cDestOrc := ""
  829. Local cMsgIn := ""
  830. Local cMensagem := ""
  831. Local x := 0
  832. Local i := 0
  833. Local nTotSck := 0
  834. Local nPosLin := 0
  835. Local nDesc1 := 0
  836. Local cDirOrc := "\anexosPortal\orcamento\"
  837. Local cDirErro := "\erro\"
  838. Local aItens := {}
  839. Local cNumSCJ := ""
  840. Local lRet := .T.
  841. Local cSaveVend
  842. local lEnvEmail := .f.
  843. local lComisTR
  844. Private cReturn
  845. Private aCabSCJ :={}
  846. Private aItemSCJ:={}
  847. Private aLinhaSCJ:={}
  848. Private lMsErroAuto:= .F.
  849. Private cCodLogin := ""
  850. Private cVendLogin:= ""
  851. Private n:= 0
  852. Web Extended Init cHtml Start U_inSite()
  853. cVendLogin := u_GetUsrPR()
  854. cCodLogin := U_SetParPR(cVendLogin)
  855. //Verifica se não perdeu a sessão
  856. If type("HttpSession->CodVend") = "U" .or. Empty(HttpSession->CodVend)
  857. conout(Procname()+"("+ltrim(str(procline()))+") *** Portal "+"Sessao encerrada")
  858. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_SMSPortal.apw">'
  859. return cHtml
  860. Endif
  861. //Verifica se existe pedido lançado para o cliente nos últimos 3 minutos.
  862. /*
  863. If Empty(HttpPost->CJ_NUM)
  864. cQry:= "Select * from "+RetSqlName("SCJ")+" SCJ "
  865. cQry+= "Where CJ_FILIAL = '"+xFilial("SCJ")+"' "
  866. cQry+= "And CJ_CLIENTE = '"+Left(HttpPost->CJ_CLIENTE,9)+"' "
  867. cQry+= "And CJ_LOJA = '"+Right(HttpPost->CJ_CLIENTE,4)+"' "
  868. cQry+= "And CJ_EMISSAO = '"+dtos(dDataBase)+"' "
  869. cQry+= "And CJ_COTCLI >= '"+StrTran(StrZero(SubHoras(Time(),'00:03:00'),5,2),'.',':')+":00"+"' "
  870. cQry+= "And SCJ.D_E_L_E_T_ = ' ' "
  871. If Select("QRH") > 0
  872. QRH->(dbCloseArea())
  873. Endif
  874. conout("Hora: "+Time()+" Vend: "+HttpSession->CodVend+" --> "+cqry)
  875. APWExOpenQuery(ChangeQuery(cQry),'QRH',.T.)
  876. If Contar("QRH","!Eof()") > 0
  877. cHtml:= ""
  878. Return cHtml
  879. Endif
  880. Endif
  881. */
  882. If nOpc = 3
  883. INCLUI := .T.
  884. Else
  885. ALTERA := .T.
  886. Endif
  887. //Variáveis do cabeçalho
  888. lComisTR := GetMv("LC_415TVRT",,.F.)
  889. cFilOrc := Iif(Type("HttpPost->CJ_FILIAL") <> "U",HttpPost->CJ_FILIAL,'')
  890. cNumSCJ := Iif(Type("HttpPost->CJ_NUM") <> "U",HttpPost->CJ_NUM,'')
  891. cTabela:= HttpPost->CJ_TABELA
  892. cCliente:= Left(HttpPost->CJ_CLIENTE,6)
  893. cLoja:= Right(HttpPost->CJ_CLIENTE,6)
  894. cOport:= HttpPost->CJ_NROPOR
  895. cRevOpt:= Iif(Type("HttpPost->CJ_REVISA") <> "U",HttpPost->CJ_REVISA,'')
  896. cGrpTrib:= Iif(Type("HttpPost->CJ_GRPTRIB") <> "U",HttpPost->CJ_GRPTRIB,'')
  897. cContato:= Upper(HttpPost->CJ_XCONTAT)
  898. cContDDD:= HttpPost->CJ_XCONDDD
  899. cContTel:= HttpPost->CJ_XCONTEL
  900. cCliEnt:= Left(HttpPost->CJ_CLIENT,6)
  901. cLjEnt:= Right(HttpPost->CJ_CLIENT,2)
  902. cUFEnt:= Iif(Type("HttpPost->CJ_UFENT")<>"U",HttpPost->CJ_UFENT,"")
  903. cObra:= Iif(Type("HttpPost->CJ_OBRA")<>"U",Upper(HttpPost->CJ_OBRA),"")
  904. cTpObra:= Iif(Type("HttpPost->CJ_YOBRATP")<>"U",Alltrim(HttpPost->CJ_YOBRATP),"")
  905. cVend6:= Iif(Type("HttpPost->CJ_VEND6")<>"U",HttpPost->CJ_VEND6,"")
  906. cTermom:= Iif(Type("HttpPost->CJ_TERMOME")<>"U",HttpPost->CJ_TERMOME,"")
  907. cCondPag:= Iif(Type("HttpPost->CJ_CONDPAG")<>"U",HttpPost->CJ_CONDPAG,"B13")
  908. cCliInt:= Iif(Type("HttpPost->CJ_CLIINTE") <> "U",HttpPost->CJ_CLIINTE,'')
  909. dRetorno:= ctod(Iif(Type("HttpPost->CJ_RETORNO")<>"U",HttpPost->CJ_RETORNO,""))
  910. cEstudo:= Iif(Type("HttpPost->CJ_LUMINOT") <> "U",HttpPost->CJ_LUMINOT,'')
  911. cEstNum:= Iif(Type("HttpPost->CJ_REGLUMI") <> "U",HttpPost->CJ_REGLUMI,'')
  912. cSegmento:= Iif(Type("HttpPost->CJ_SEGMENT") <> "U",HttpPost->CJ_SEGMENT,'')
  913. cProspec:= Iif(Type("HttpPost->CJ_PROPECC") <> "U",HttpPost->CJ_PROPECC,'')
  914. cProspCod:= Iif(Type("HttpPost->CJ_PROSCOD") <> "U",HttpPost->CJ_PROSCOD,'')
  915. cRegional:= Iif(Type("HttpPost->CJ_REGIAO")<>"U",HttpPost->CJ_REGIAO,"")
  916. cVendedor:= Iif(Type("HttpPost->CJ_VEND") <> "U",HttpPost->CJ_VEND,'')
  917. cVend3:= Iif(Type("HttpPost->CJ_VEND3")<>"U",HttpPost->CJ_VEND3,"")
  918. cVend4:= Iif(Type("HttpPost->CJ_VEND4")<>"U",HttpPost->CJ_VEND4,"")
  919. cCodEsp:= Iif(Type("HttpPost->CJ_CODESP")<>"U",HttpPost->CJ_CODESP,"")
  920. cVend7:= Iif(Type("HttpPost->CJ_VEND7")<>"U",HttpPost->CJ_VEND7,"")
  921. dValidade:= ctod(Iif(Type("HttpPost->CJ_VALIDA")<>"U",HttpPost->CJ_VALIDA,""))
  922. cPrzEmb:= Iif(Type("HttpPost->CJ_PRZEMB")<>"U",HttpPost->CJ_PRZEMB,"")
  923. cTipoFrete := Iif(Type("HttpPost->CJ_TPFRETE") <> "U",HttpPost->CJ_TPFRETE,"")
  924. nPercFrete := Iif(Type("HttpPost->CJ_PERCFRT") <> "U",val(HttpPost->CJ_PERCFRT),0)
  925. nFrete:= Iif(Type("HttpPost->CJ_FRETE")<>"U",Val(StrTran(StrTran(HttpPost->CJ_FRETE,'.',''),',','.')),0)
  926. nRT:= Iif(Type("HttpPost->CJ_COMISTR")<>"U",Val(StrTran(StrTran(HttpPost->CJ_COMISTR,'.',''),',','.')),0)
  927. cObs:= Iif(Type("HttpPost->CJ_OBS") <> "U",HttpPost->CJ_OBS,"")
  928. nDescDir:= Iif(Type("HttpPost->CJ_DSDIRET")<>"U",Val(StrTran(StrTran(HttpPost->CJ_DSDIRET,'.',''),',','.')),0)
  929. nTotSck := val(HttpPost->PROXIMO)
  930. cItens:= HttpPost->aItens
  931. nOpc:= Val(HttpPost->OPCAO)
  932. For x:= 1 to nTotSck
  933. nPosLin:= At("||",cItens)-1
  934. If nPosLin > 0
  935. aLinha:= Separa(Substr(cItens,1,nPosLin),";")
  936. cItens:= Substr(cItens,nPosLin+3)
  937. If Len(aLinha) > 0
  938. aAdd(aItens,aLinha)
  939. Endif
  940. Endif
  941. aLinha:= {}
  942. Next
  943. //Posiciona nas tabelas
  944. If !Empty(cCondPag)
  945. Posicione("SE4",1,xFilial("SE4")+cCondPag,"E4_COND")
  946. Endif
  947. If !Empty(cTabela)
  948. Posicione("DA0",1,xFilial("DA0")+cTabela,"DA0_CODTAB")
  949. //lPneu := Iif(DA0->DA0_XPOLIM = '1', .F.,.T.)
  950. Endif
  951. If !Empty(cCliente)
  952. Posicione("SA1",1,xFilial("SA1")+Alltrim(HttpPost->CJ_CLIENTE),"A1_COD")
  953. Endif
  954. If !Empty(cOport)
  955. Posicione("AD1",1,xFilial("AD1")+Alltrim(cOport),"AD1_NROPOR")
  956. Endif
  957. //Monta o cabeçalho
  958. If !Empty(cNumSCJ) .and. nOpc = 4
  959. SCJ->(dbSetOrder(1)) // CJ_FILIAL+CJ_NUM
  960. If SCJ->(dbSeek(cFilOrc+cNumSCJ))
  961. If cFilOrc <> cFilAnt
  962. u_PtTrocaFil(cFilOrc)
  963. Endif
  964. endif
  965. cFilAnt := xFilial("SCJ")
  966. // aadd(aCabSCJ,{"CJ_FILIAL",xFilial("SCJ"),Nil})
  967. aadd(aCabSCJ,{"CJ_NUM",cNumSCJ,Nil})
  968. Else
  969. aadd(aCabSCJ,{"CJ_COTCLI",Time(),Nil})
  970. EndIf
  971. aadd(aCabSCJ,{"CJ_CLIENTE",SA1->A1_COD,Nil})
  972. aadd(aCabSCJ,{"CJ_LOJA", SA1->A1_LOJA ,Nil})
  973. aadd(aCabSCJ,{"CJ_CONDPAG",cCondPag ,Nil})
  974. If !Empty(nDescDir)
  975. aadd(aCabSCJ,{"CJ_DSDIRET" ,nDescDir,Nil})
  976. Endif
  977. aadd(aCabSCJ,{"CJ_UFENT",cUFEnt ,Nil})
  978. aadd(aCabSCJ,{"CJ_OBRA",cObra ,Nil})
  979. aadd(aCabSCJ,{"CJ_YOBRATP",cTpObra ,Nil})
  980. aadd(aCabSCJ,{"CJ_NROPOR",cOport,Nil})
  981. aadd(aCabSCJ,{"CJ_REVISA",cRevOpt ,Nil})
  982. aadd(aCabSCJ,{"CJ_REGIAO",cRegional ,Nil})
  983. aadd(aCabSCJ,{"CJ_VEND",cVendedor ,Nil})
  984. aadd(aCabSCJ,{"CJ_VEND3",cVend3 ,Nil})
  985. aadd(aCabSCJ,{"CJ_VEND4",cVend4 ,Nil})
  986. aadd(aCabSCJ,{"CJ_CODESP",cCodEsp ,Nil})
  987. aadd(aCabSCJ,{"CJ_ESPECIF",fDesc("SX5","Z1"+cCodEsp,"X5_DESCRI"),Nil})
  988. aadd(aCabSCJ,{"CJ_CLIENT",cCliEnt ,Nil})
  989. aadd(aCabSCJ,{"CJ_LOJAENT",cLjEnt ,Nil})
  990. aadd(aCabSCJ,{"CJ_VEND6",cVend6 ,Nil})
  991. aadd(aCabSCJ,{"CJ_VEND7",cVend7 ,Nil})
  992. aadd(aCabSCJ,{"CJ_PRZEMB",cPrzEmb ,Nil})
  993. aadd(aCabSCJ,{"CJ_TPFRETE" ,cTipoFrete,Nil})
  994. //aadd(aCabSCJ,{"CJ_GRPTRIB" ,cGrpTrib,Nil})
  995. aadd(aCabSCJ,{"CJ_OBS",AllTrim(decodeutf8(HttpPost->CJ_OBS)),Nil})
  996. aadd(aCabSCJ,{"CJ_VALIDA",dValidade ,Nil})
  997. aadd(aCabSCJ,{"CJ_COMISTR" ,nRT,Nil})
  998. aadd(aCabSCJ,{"CJ_PERCFRT" ,nPercFrete,Nil})
  999. aadd(aCabSCJ,{"CJ_FRETE" ,nFrete,Nil})
  1000. aadd(aCabSCJ,{"CJ_LUMINOT",cEstudo ,Nil})
  1001. aadd(aCabSCJ,{"CJ_REGLUMI",cEstNum ,Nil})
  1002. aadd(aCabSCJ,{"CJ_SEGMENT",cSegmento ,Nil})
  1003. aadd(aCabSCJ,{"CJ_RETORNO",dRetorno ,Nil})
  1004. aadd(aCabSCJ,{"CJ_TERMOME",cTermom ,Nil})
  1005. aadd(aCabSCJ,{"CJ_CLIINTE",cCliInt ,Nil})
  1006. aadd(aCabSCJ,{"CJ_PROPECC",cProspec ,Nil})
  1007. aadd(aCabSCJ,{"CJ_PROSCOD",cProspCod ,Nil})
  1008. aadd(aCabSCJ,{"CJ_XCONTAT",cContato ,Nil})
  1009. aadd(aCabSCJ,{"CJ_XCONDDD",cContDDD ,Nil})
  1010. aadd(aCabSCJ,{"CJ_XCONTEL",cContTel ,Nil})
  1011. aadd(aCabSCJ,{"CJ_USUARIO",HttpSession->Nome ,Nil})
  1012. //aadd(aCabSCJ,{"CJ_TABELA" ,cTabela,Nil})
  1013. //Cria as variáveis de memória
  1014. //RegtoMemory("SCJ")
  1015. //For i:=1 to Len(aCabSCJ)
  1016. // M->&(aCabSCJ[i,1]) := aCabSCJ[i,2]
  1017. //Next
  1018. //Monta os itens
  1019. dbSelectArea("SB1")
  1020. SB1->(dbSetorder(1))
  1021. If ValType(aItens) == "A" .and. Len(aItens) > 0
  1022. For i:=1 to Len(aItens)
  1023. If ValType(aItens[i,1]) == 'C'
  1024. aLinhaSCJ:={}
  1025. cItem:= StrZero(i,TamSX3("CK_ITEM")[1])
  1026. cProdSck:= PadR(aItens[i,1], TamSX3("CK_PRODUTO")[1])
  1027. nQuantSck := val(StrTran(StrTran(aItens[i,2],".",""),",","."))//val(aItens[i,2])
  1028. cObsSck:= PadR(aItens[i,3], TamSX3("CK_OBS")[1])
  1029. cPrzSck:= aItens[i,4]
  1030. nPrcVen := aItens[i,5]
  1031. nPrcVen := val(StrTran(StrTran(nPrcVen,".",""),",","."))
  1032. nPrcImp := val(StrTran(StrTran(aItens[i,6],".",""),",","."))
  1033. nValIPI := val(StrTran(StrTran(aItens[i,7],".",""),",","."))
  1034. nValICMS := val(StrTran(StrTran(aItens[i,8],".",""),",","."))
  1035. nValST := val(StrTran(StrTran(aItens[i,9],".",""),",","."))
  1036. nAliICMS:= val(StrTran(StrTran(aItens[i,10],".",""),",","."))
  1037. nAliIPI:= val(StrTran(StrTran(aItens[i,11],".",""),",","."))
  1038. nAliST:= val(StrTran(StrTran(aItens[i,12],".",""),",","."))
  1039. cTes:= aItens[i,13]
  1040. nCusto:= val(StrTran(StrTran(aItens[i,14],".",""),",","."))
  1041. cNomDire:= PadR(aItens[i,15], TamSX3("CK_NOMDIRE")[1])
  1042. nPerCom:= val(StrTran(StrTran(aItens[i,16],".",""),",","."))
  1043. nValCom:= val(StrTran(StrTran(aItens[i,17],".",""),",","."))
  1044. nDescont:= Iif(Empty(aItens[i,18]),0,Val(StrTran(aItens[i,18],",",".")))
  1045. If SB1->(dbSeek(xFilial("SB1")+cProdSck)) .and. nQuantSck > 0 .And. nPrcVen > 0 .and. SB1->B1_MSBLQL <> '1'
  1046. aadd(aLinhaScj,{"CK_ITEM" ,cItem,Nil})
  1047. aadd(aLinhaScj,{"CK_PRODUTO",SB1->B1_COD,Nil})
  1048. aadd(aLinhaScj,{"CK_QTDVEN" ,nQuantSck,Nil})
  1049. nPrcVen1:= nPrcVen-(nPrcVen*(nDescont/100))
  1050. aadd(aLinhaScj,{"CK_PRUNIT" ,A410Arred(nPrcVen, "CK_PRUNIT"),Nil})
  1051. aadd(aLinhaScj,{"CK_PRCVEN" ,A410Arred(nPrcVen, "CK_PRCVEN"),Nil})
  1052. //aadd(aLinhaScj,{"CK_PRCVEN" ,A410Arred(nPrcVen1, "CK_PRCVEN"),Nil})
  1053. aadd(aLinhaScj,{"CK_PRTAB" ,A410Arred(nPrcVen, "CK_PRCVEN"),Nil})
  1054. aadd(aLinhaScj,{"CK_VALOR" ,A410Arred(nQuantSck*A410Arred(nPrcVen1, "CK_PRCVEN"),"CK_VALOR"),Nil})
  1055. aadd(aLinhaScj,{"CK_OBS" ,cObsSck,Nil})
  1056. aadd(aLinhaScj,{"CK_DESCONT",nDescont,Nil})
  1057. aadd(aLinhaScj,{"CK_PRZEMB" ,cPrzSck,Nil})
  1058. aadd(aLinhaScj,{"CK_TES" ,cTes,Nil})
  1059. //aadd(aLinhaScj,{"CK_ENTREG" ,dDtEntreg,Nil})
  1060. aadd(aLinhaScj,{"CK_XVALIPI",nValIPI,Nil})
  1061. aadd(aLinhaScj,{"CK_XVALICM",nValICMS,Nil})
  1062. aadd(aLinhaScj,{"CK_XICMST" ,nValST,Nil})
  1063. //aadd(aLinhaScj,{"CK_XALIICM",nAliICMS,Nil})
  1064. //aadd(aLinhaScj,{"CK_XALIIPI",nAliIPI,Nil})
  1065. //aadd(aLinhaScj,{"CK_XALIST ",nAliST,Nil})
  1066. If !Empty(cNomDire)
  1067. aadd(aLinhaScj,{"CK_NOMDIRE",cNomDire,Nil})
  1068. Endif
  1069. If !Empty(nCusto)
  1070. aadd(aLinhaScj,{"CK_CUSTO" ,nCusto,Nil})
  1071. Endif
  1072. aadd(aItemScj,aLinhaScj)
  1073. Else
  1074. lRet:= .F.
  1075. Endif
  1076. Endif
  1077. Next
  1078. //Chama execauto para inclusão do orçamento
  1079. If Len(aCabSCJ) > 0 .and. Len(aItemSCJ) > 0 .and. lRet
  1080. lMsErroAuto:= .F.
  1081. MATA415(aCabSCJ,aItemSCJ,nOpc)
  1082. Else
  1083. If !Empty(cNumSCJ)
  1084. conout(Procname()+"("+ltrim(str(procline()))+") *** Portal "+"FALHA AO INCLUIR O ORÇAMENTO. REFAÇA A OPERAÇÃO!")
  1085. Else
  1086. conout(Procname()+"("+ltrim(str(procline()))+") *** Portal "+"FALHA AO ALTERAR O ORÇAMENTO. REFAÇA A OPERAÇÃO!")
  1087. EndIf
  1088. lRet := .F.
  1089. Endif
  1090. If lMsErroAuto
  1091. If !ExistDir(cDirErro)
  1092. MakeDir(cDirErro)
  1093. Endif
  1094. cDirErro+=dtos(date())
  1095. If !ExistDir(cDirErro)
  1096. MakeDir(cDirErro)
  1097. Endif
  1098. //Grava o erro
  1099. cMsg:= MostraErro(cDirErro,"erro_orcto_"+strtran(time(),":","")+"_"+cFilAnt+".txt")
  1100. cDestMail:= GetNewPar("PR_DESTORE ","lucilene@smsti.com.br")
  1101. u_MailCM("ERRO ORCAMENTO",{cDestMail},{},"ERRO ORCAMENTO NO PORTAL",cMsg,"","")
  1102. cHtml:= "erro"
  1103. Else
  1104. // trata revisoes conforme ORCA1000
  1105. if HttpPost->RECCJANT <> ""
  1106. //Posiciona no orçamento
  1107. dbSelectArea("SCJ")
  1108. conout("ant###**")
  1109. CONOUT(httpPost->RECCJANT)
  1110. SCJ->(dbGoTo(val(httpPost->RECCJANT)))
  1111. Reclock("SCJ",.F.)
  1112. SCJ->CJ_DSCPERD := "REVISAO"
  1113. SCJ->CJ_DTCANC:= dDataBase
  1114. SCJ->CJ_STATUS:= 'C'
  1115. msUnlock()
  1116. // Verifica se existe Etapas da Negociação.
  1117. If Select("QRY") > 0
  1118. QRY->(DbCloseArea())
  1119. Endif
  1120. cQuery := "SELECT * FROM "+RetSQLName('SZW')+" WHERE D_E_L_E_T_ = ' ' AND ZW_ORCAMEN = '" + cNumSCJ + "' AND ZW_FILIAL = "+xFilial('SZW')+" "
  1121. TcQuery cQuery New Alias "QRY"
  1122. While QRY->(!EOF())
  1123. RecLock("SZW",.T.)
  1124. SZW->ZW_FILIAL := '01'
  1125. SZW->ZW_ORCAMEN := cNumSCJ
  1126. SZW->ZW_DATA := SToD(QRY->ZW_DATA)
  1127. SZW->ZW_HORA := QRY->ZW_HORA
  1128. SZW->ZW_USUARIO := QRY->ZW_USUARIO
  1129. SZW->ZW_HISTOR := QRY->ZW_HISTOR
  1130. MsUnlock("SZW")
  1131. QRY->(dbSkip())
  1132. EndDo
  1133. // se comissao rt com parceiro na tabela z81
  1134. If lComisTR
  1135. // copia parceiros da comissao rt
  1136. CopiarZ81(cNumSCJ,SCJ->CJ_NUM)
  1137. Endif
  1138. // Gravar tabelas de Auditoria. Fonseca --> Solicitante Rodrigo.
  1139. cSQLExec := "INSERT INTO AUDIT_SCJ SELECT SYSDATE, '" + Upper(Trim(HttpSession->NomeFull)) + "', '4-REVISAO', SCJ010.* FROM SCJ010 WHERE D_E_L_E_T_ = ' ' AND CJ_NUM = '" + Trim(SCJ->CJ_NUM) + "' AND CJ_FILIAL = '" + xFilial("SCJ") + "'"
  1140. If TCSqlExec(cSQLExec) < 0
  1141. Msgstop('Erro Revisão AUDIT_SCJ. ORCA1000' + Chr(13) + TCSQLError(),'Erro !!!')
  1142. Endif
  1143. cSQLExec := "INSERT INTO AUDIT_SCK SELECT SYSDATE, '" + Upper(Trim(HttpSession->NomeFull)) + "', '4-REVISAO', SCK010.* FROM SCK010 WHERE D_E_L_E_T_ = ' ' AND CK_NUM = '" + Trim(SCJ->CJ_NUM) + "' AND CK_FILIAL = '" + xFilial("SCK") + "'"
  1144. If TCSqlExec(cSQLExec) < 0
  1145. Msgstop('Erro Revisão AUDIT_SCK. ORCA1000' + Chr(13) + TCSQLError(),'Erro !!!')
  1146. Endif
  1147. ENDIF
  1148. cHtml:= cNumSCJ+"<br><br>"
  1149. cDestOrc := GetNewPar("PR_DESTORC","")
  1150. //Envia e-mail informando a inclusão do orçamento
  1151. If !Empty(cDestOrc) .and. (nOpc = 3 .or. lEnvEmail) //não envia para orçamento previsto
  1152. cMsg:= "Um novo orçamento foi gerado pelo Portal do Representante.<br><br>"
  1153. cMsg+= "Filial: "+SCJ->CJ_FILIAL+"<br>"
  1154. cMsg+= "Número: "+cNumSCJ+"<br> "
  1155. cMsg+= "Vendedor: "+SCJ->CJ_VEND+" - "+Alltrim(Posicione("SA3",1,xFilial("SA3")+SCJ->CJ_VEND,"A3_NOME"))+"<br>"
  1156. cMsg+= "Cliente: "+SCJ->CJ_CLIENTE+"/"+SCJ->CJ_LOJA+" - "+Posicione("SA1",1,+xFilial("SA1")+SCJ->CJ_CLIENTE+SCJ->CJ_LOJA,"A1_NOME")+"<br>"
  1157. u_MailCM("ORÇAMENTO",{cDestOrc},{},"NOVO ORCAMENTO PORTAL: "+SCJ->CJ_FILIAL+"/"+cNumSCJ+" - "+;
  1158. trim(Posicione("SA1",1,+xFilial("SA1")+SCJ->CJ_CLIENTE+SCJ->CJ_LOJA,"A1_NOME")),cMsg,"","")
  1159. Endif
  1160. //////////////
  1161. // Envia e-Mail para supervisoras dos clientes que ficaram ativos.
  1162. If Empty(SA1->A1_ULTORCA) .OR. (dDataBase - SA1->A1_ULTORCA) > 365
  1163. cMensagem := "Cliente Ativado pelo Orçamento: " + AllTrim(cNumSCJ) + CRLF+CRLF
  1164. cMensagem += "Cliente: " + AllTrim(SA1->A1_COD)+"-"+AllTrim(SA1->A1_NOME) + CRLF
  1165. cMensagem += "Representante: " + AllTrim(SCJ->CJ_VEND)+'-'+AllTrim(Posicione("SA3",1,xFilial('SA3')+SCJ->CJ_VEND,"A3_NOME")) + CRLF
  1166. cMensagem += "Regional: " + AllTrim(SCJ->CJ_REGIAO)+'-'+AllTrim(Posicione("SA3",1,xFilial('SA3')+SCJ->CJ_REGIAO,"A3_NOME")) + CRLF
  1167. cMensagem += "Pré-Resgate: " + IIF(!Vazio(Trim(SA1->A1_USUPRER)),Trim(SA1->A1_USUPRER)+ " em: "+DToC(SA1->A1_DTPRERE),'-*-*-*-*-') + CRLF
  1168. // (Destino , Com Copia , Com Copia Oculta , assunto , Mensagem Corpo, Anexos)
  1169. U_EnvMail("regiane.almeida@lumicenter.com" , ,"" ,"e-Mail Automático. Cliente Ativado - Engenharia." ,cMensagem,"")
  1170. EndIf
  1171. // Grava data do último orçamento.
  1172. RecLock("SA1",.F.)
  1173. SA1->A1_ULTORCA := dDataBase
  1174. MsUnlock("SA1")
  1175. EndIf
  1176. Else
  1177. cHtml:= "erro"
  1178. Endif
  1179. Web Extended End
  1180. Return (cHTML)
  1181. //Troca a filial logada
  1182. User Function PtTrocaFil(cNovaFil)
  1183. If cNovaFil <> cFilAnt
  1184. HttpSession->Filial:= cNovaFil
  1185. u_InSite(.f.)
  1186. Endif
  1187. Return
  1188. /*__________________________________________________________________________
  1189. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1190. ¦¦+-----------------------------------------------------------------------+¦¦
  1191. ¦¦¦Funçäo ¦ GetLikePro ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1192. ¦¦+----------+------------------------------------------------------------¦¦¦
  1193. ¦¦¦Descriçäo ¦ Busca os produtos de acordo com chave de busca ¦¦¦
  1194. ¦¦+-----------------------------------------------------------------------+¦¦
  1195. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1196. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1197. */
  1198. User Function GetLikePro()
  1199. Local cHtml
  1200. Local cTabela:= HttpPost->TABELA
  1201. Local cProds := ""
  1202. Local cGrupo := ""
  1203. Local cDescDig := HttpPost->DIGIT
  1204. Local lValidaMP := GetMV("LC_FA1059A",, .F.)
  1205. Local cGrpTribNP:= GetMV("LC_FA1059B",, "990/996") //grupos tributarios não permitidos
  1206. Web Extended Init cHtml Start U_inSite()
  1207. // TODO - Pedro 20210208 - Remover???
  1208. If Empty(HttpSession->CodVend)
  1209. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1210. Return cHtml
  1211. endif
  1212. conout("******************* prod busca antes -->> "+cDescDig)
  1213. //Atualiza a variável de sessão
  1214. HttpSession->TABELA := cTabela
  1215. cDescDig:= FwNoAccent(Upper(DecodeUTF8(cDescDig)))
  1216. conout("******************* tabela -->> "+cTabela)
  1217. conout("******************* prod busca -->> "+cDescDig)
  1218. cQry:="Select DA1_CODTAB, B1_GRUPO, BM_DESC, DA1_CODPRO, B1_DESC "
  1219. cQry+=" From "+RetSqlName("DA1")+" DA1"
  1220. cQry+=" INNER JOIN "+RetSqlName("DA0")+" DA0 ON DA0_FILIAL = DA1_FILIAL AND DA0_CODTAB = DA1_CODTAB AND DA0_ATIVO = '1' AND DA0.D_E_L_E_T_ = ' ' "
  1221. cQry+=" INNER JOIN "+RetSqlName("SB1")+" SB1 ON B1_FILIAL = '"+xFilial("SB1")+"' AND B1_COD = DA1_CODPRO AND B1_MSBLQL <> '1' AND SB1.D_E_L_E_T_ = ' ' "
  1222. cQry+=" INNER JOIN "+RetSqlName("SBM")+" SBM ON BM_FILIAL = '"+xFilial("SBM")+"' AND B1_GRUPO = BM_GRUPO AND SBM.D_E_L_E_T_ = ' ' "
  1223. cQry+=" Where DA1_FILIAL = '"+xFilial("DA1")+"' "
  1224. cQry+=" And DA1_CODTAB = '"+cTabela+"' "
  1225. cQry+=" AND DA1_ATIVO = '1' "
  1226. cQry+=" AND DA1_PRCVEN > 0 "
  1227. CQry+=" AND (B1_DESC LIKE '%"+cDescDig+"%' OR B1_COD LIKE '%"+cDescDig+"%') "
  1228. cQry+=" AND B1_GRTRIB NOT IN "+FormatIn(cGrpTribNP,"/")+" "
  1229. cQry+=" AND DA1.D_E_L_E_T_ = ' ' "
  1230. cQry+=" Order by DA1_CODTAB, B1_GRUPO, B1_COD "
  1231. conout("Query Produtos -->"+cQry)
  1232. If Select("QRP") > 0
  1233. QRP->(dbCloseArea())
  1234. Endif
  1235. APWExOpenQuery(ChangeQuery(cQry),'QRP',.T.)
  1236. //Preenche o select de produtos
  1237. While QRP->(!Eof())
  1238. If Empty(cGrupo)
  1239. cProds+= '<optgroup label="'+Alltrim(Strtran(QRP->BM_DESC,"'",""))+'">
  1240. Elseif !Empty(cGrupo) .and. cGrupo <> QRP->B1_GRUPO
  1241. cProds+= '</optgroup>'
  1242. cProds+= '<optgroup label="'+Alltrim(Strtran(QRP->BM_DESC,"'",""))+'">
  1243. Endif
  1244. cProds+=' <option value="'+Alltrim(QRP->DA1_CODPRO)+'">'+Alltrim(QRP->DA1_CODPRO)+' -- '+u_RemEspec(Alltrim(QRP->B1_DESC))+'</option>'
  1245. cGrupo:= QRP->B1_GRUPO
  1246. QRP->(dbSkip())
  1247. End
  1248. If !Empty(cProds)
  1249. cProds+= '</optgroup>'
  1250. Endif
  1251. cHtml:= cProds
  1252. Web Extended end
  1253. Return cHtml
  1254. /*__________________________________________________________________________
  1255. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1256. ¦¦+-----------------------------------------------------------------------+¦¦
  1257. ¦¦¦Funçäo ¦ GetLikeCli ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1258. ¦¦+----------+------------------------------------------------------------¦¦¦
  1259. ¦¦¦Descriçäo ¦ Busca os clientes de acordo com chave de busca ¦¦¦
  1260. ¦¦+-----------------------------------------------------------------------+¦¦
  1261. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1262. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1263. */
  1264. User Function GetLikeCli()
  1265. Local cHtml
  1266. Local cCliente:= Upper(HttpPost->DIGIT)
  1267. Local cCli := ""
  1268. Web Extended Init cHtml Start U_inSite()
  1269. cVendLogin := u_GetUsrPR()
  1270. cCodLogin := U_SetParPR(cVendLogin)
  1271. cCodVend:=cVendLogin
  1272. // TODO - Pedro 20210208 - Remover???
  1273. If Empty(HttpSession->CodVend)
  1274. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1275. Return cHtml
  1276. endif
  1277. cQuery := " Select A1_COD, A1_LOJA, A1_CGC, A1_NOME, A1_BAIRRO, A1_END, A1_MUN, A1_EST, A1_DDD, A1_TEL, A1_COND "
  1278. cQuery += " From "+RetSqlName("SA1")+" SA1 "
  1279. cQuery += " Where A1_FILIAL = '"+xFilial("SA1")+"' "
  1280. If HttpSession->Tipo = 'S' //Supervisor acessa todos os clientes da sua equipe
  1281. cQuery += " AND A1_REGIAO = '"+HttpSession->Regional+"' "
  1282. Else
  1283. If SA3->A3_TIPO <> "I" //vendedor interno deve exibir todos os clientes
  1284. cQuery+= " AND A1_VEND = '"+cCodVend+"'" // OR A1_VEND2 = '"+cCodVend+"' OR A1_VEND3= '"+cCodVend+"' OR A1_VEND4= '"+cCodVend+"' OR A1_VEND5 = '"+cCodVend+"' ) "
  1285. Endif
  1286. Endif
  1287. cQuery += " And A1_MSBLQL <> '1' "
  1288. cQuery += " AND (A1_COD LIKE '%"+cCliente+"%' OR A1_CGC LIKE '%"+cCliente+"%' OR A1_NOME LIKE '%"+cCliente+"%') "
  1289. cQuery += " And SA1.D_E_L_E_T_ = ' ' "
  1290. cQuery += " Order by A1_NOME "
  1291. conout("Query Clientes -->"+cQuery)
  1292. If Select("QRCLI") > 0
  1293. QRCLI->(dbCloseArea())
  1294. Endif
  1295. APWExOpenQuery(ChangeQuery(cQuery),'QRCLI',.T.)
  1296. dbSelectArea("QRCLI")
  1297. //Preenche o select de produtos
  1298. While QRCLI->(!Eof())
  1299. cCli+=' <option value="'+Alltrim(QRCLI->A1_COD+QRCLI->A1_LOJA)+'">'+QRCLI->A1_COD+'/';
  1300. +QRCLI->A1_LOJA+' - '+Alltrim(QRCLI->A1_NOME)+' - '+QRCLI->A1_CGC+' - '+trim(QRCLI->A1_MUN) +'</option>'
  1301. QRCLI->(dbSkip())
  1302. End
  1303. APWExCloseQuery('QRCLI')
  1304. cHtml:= cCli
  1305. Web Extended end
  1306. Return cHtml
  1307. /*__________________________________________________________________________
  1308. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1309. ¦¦+-----------------------------------------------------------------------+¦¦
  1310. ¦¦¦Funçäo ¦ GetMunUF ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1311. ¦¦+----------+------------------------------------------------------------¦¦¦
  1312. ¦¦¦Descriçäo ¦ Busca os municípios para o estado selecionado ¦¦¦
  1313. ¦¦+-----------------------------------------------------------------------+¦¦
  1314. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1315. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1316. */
  1317. User Function GetMunUF()
  1318. Local cHtml:= ""
  1319. Local cUF:= Alltrim(HttpPost->UF)
  1320. Web Extended Init cHtml Start U_inSite()
  1321. If Empty(HttpSession->CodVend)
  1322. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1323. Return cHtml
  1324. Endif
  1325. cQry:="Select CC2_EST, CC2_CODMUN, CC2_MUN "
  1326. cQry+=" From "+RetSqlName("CC2")+" CC2"
  1327. cQry+=" Where CC2_FILIAL = '"+xFilial("CC2")+"' "
  1328. cQry+=" And CC2_EST = '"+cUF+"' "
  1329. cQry+=" AND CC2.D_E_L_E_T_ = ' ' "
  1330. cQry+=" Order by CC2_MUN"
  1331. If Select("QRP") > 0
  1332. QRP->(dbCloseArea())
  1333. Endif
  1334. APWExOpenQuery(ChangeQuery(cQry),'QRP',.T.)
  1335. //Verifica se existe registro
  1336. While QRP->(!Eof())
  1337. cHtml+=' <option value="'+Alltrim(QRP->CC2_CODMUN)+' - '+Alltrim(QRP->CC2_MUN)+'">'+Alltrim(QRP->CC2_MUN) +'</option>'
  1338. QRP->(dbSkip())
  1339. End
  1340. Web Extended end
  1341. Return cHtml
  1342. /*__________________________________________________________________________
  1343. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1344. ¦¦+-----------------------------------------------------------------------+¦¦
  1345. ¦¦¦Funçäo ¦ GetPerFrt ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1346. ¦¦+----------+------------------------------------------------------------¦¦¦
  1347. ¦¦¦Descriçäo ¦ Busca o percentual de frete da cidade/estado da SZ3 ¦¦¦
  1348. ¦¦+-----------------------------------------------------------------------+¦¦
  1349. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1350. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1351. */
  1352. User Function GetPerFrt()
  1353. Local cHtml
  1354. Local cQry:= ""
  1355. Local cUF:= HttpPost->UF
  1356. Local cCodMun:= HttpPost->MUN
  1357. Web Extended Init cHtml Start U_inSite()
  1358. If Empty(HttpSession->CodVend)
  1359. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1360. Return cHtml
  1361. endif
  1362. //Busca os itens da tabela de preço
  1363. cQry:="Select Z3_PERFRAD "
  1364. cQry+=" From "+RetSqlName("SZ3")+" SZ3"
  1365. cQry+=" Where Z3_FILIAL = '"+xFilial("SZ3")+"' "
  1366. cQry+=" And Z3_UF = '"+cUF+"' "
  1367. cQry+=" AND (Z3_MUNICIP = '"+cCodMun+"' OR Z3_MUNICIP= ' ' ) "
  1368. cQry+=" AND SZ3.D_E_L_E_T_ = ' ' "
  1369. cQry+=" Order by Z3_MUNICIP DESC "
  1370. If Select("QRP") > 0
  1371. QRP->(dbCloseArea())
  1372. Endif
  1373. APWExOpenQuery(ChangeQuery(cQry),'QRP',.T.)
  1374. //Verifica se existe registro
  1375. If QRP->(!Eof())
  1376. cHtml:= cvaltochar(QRP->Z3_PERFRAD)
  1377. Else
  1378. cHtml:= "0"
  1379. Endif
  1380. Web Extended end
  1381. Return cHtml
  1382. /*__________________________________________________________________________
  1383. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1384. ¦¦+-----------------------------------------------------------------------+¦¦
  1385. ¦¦¦Funçäo ¦ GetDadosOpt ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1386. ¦¦+----------+------------------------------------------------------------¦¦¦
  1387. ¦¦¦Descriçäo ¦ Busca o vendedor da oportunidade ¦¦¦
  1388. ¦¦+-----------------------------------------------------------------------+¦¦
  1389. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1390. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1391. */
  1392. User Function GetDadosOpt()
  1393. Local cHtml
  1394. Local cOport:= HttpPost->Oportunidade
  1395. Web Extended Init cHtml Start U_inSite()
  1396. If Empty(HttpSession->CodVend)
  1397. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1398. Return cHtml
  1399. endif
  1400. If AD1->(dbSeek(xFilial("AD1")+cOport))
  1401. cHtml:= "OK|#|"+Alltrim(Transform(AD1->AD1_COMIRT,PesqPict("AD1","AD1_COMIRT")))+"|#|"
  1402. cHtml+= u_ListaVend(.F.,Alltrim(AD1->AD1_VEND))+"|#|"
  1403. cHtml+= Alltrim(DecodeUTF8(AD1->AD1_VEND))
  1404. Else
  1405. cHtml:= ""
  1406. End
  1407. Web Extended end
  1408. Return cHtml
  1409. /*__________________________________________________________________________
  1410. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1411. ¦¦+-----------------------------------------------------------------------+¦¦
  1412. ¦¦¦Funçäo ¦ GetProdutos ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1413. ¦¦+----------+------------------------------------------------------------¦¦¦
  1414. ¦¦¦Descriçäo ¦ Função utilizada no Ajax pra retornar os produtos da tabela¦¦¦
  1415. ¦¦+-----------------------------------------------------------------------+¦¦
  1416. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1417. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1418. */
  1419. User Function GetProdutos()
  1420. Local cHtml
  1421. Local cCliente:= HttpPost->CLIENTE
  1422. Local cTabela:= HttpPost->TABELA
  1423. Local cProds := ""
  1424. Local cGrupo := ""
  1425. Web Extended Init cHtml Start U_inSite()
  1426. If Empty(HttpSession->CodVend)
  1427. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1428. Return cHtml
  1429. endif
  1430. //Atualiza a variável de sessão
  1431. HttpSession->TABELA := cTabela
  1432. //Busca os itens da tabela de preço
  1433. cQry:="Select DA1_CODTAB, B1_GRUPO, BM_DESC, DA1_CODPRO, B1_XDESGIR B1_DESC, B1_PROC "
  1434. cQry+=" From "+RetSqlName("DA1")+" DA1"
  1435. cQry+=" INNER JOIN "+RetSqlName("DA0")+" DA0 ON DA0_FILIAL = DA1_FILIAL AND DA0_CODTAB = DA1_CODTAB AND DA0_ATIVO = '1' AND DA0.D_E_L_E_T_ = ' ' "
  1436. cQry+=" INNER JOIN "+RetSqlName("SB1")+" SB1 ON B1_FILIAL = '"+xFilial("SB1")+"' AND B1_COD = DA1_CODPRO AND B1_MSBLQL <> '1' AND B1_TIPO IN ('PA','RE') AND SB1.D_E_L_E_T_ = ' ' "
  1437. cQry+=" LEFT JOIN "+RetSqlName("SBM")+" SBM ON BM_FILIAL = '"+xFilial("SBM")+"' AND B1_GRUPO = BM_GRUPO AND SBM.D_E_L_E_T_ = ' ' "
  1438. cQry+=" Where DA1_FILIAL = '"+xFilial("DA1")+"' "
  1439. cQry+=" And DA1_CODTAB = '"+cTabela+"' "
  1440. cQry+=" AND DA1_ATIVO = '1' "
  1441. cQry+=" AND DA1_PRCVEN > 0 "
  1442. cQry+=" AND DA1.D_E_L_E_T_ = ' ' "
  1443. cQry+=" Order by DA1_CODTAB, B1_GRUPO, B1_COD "
  1444. If Select("QRP") > 0
  1445. QRP->(dbCloseArea())
  1446. Endif
  1447. APWExOpenQuery(ChangeQuery(cQry),'QRP',.T.)
  1448. //Preenche o select de produtos
  1449. While QRP->(!Eof())
  1450. If Empty(cGrupo)
  1451. cProds+= '<optgroup label="'+Alltrim(Strtran(QRP->BM_DESC,"'",""))+'">
  1452. Elseif !Empty(cGrupo) .and. cGrupo <> QRP->B1_GRUPO
  1453. cProds+= '</optgroup>'
  1454. cProds+= '<optgroup label="'+Alltrim(Strtran(QRP->BM_DESC,"'",""))+'">
  1455. Endif
  1456. cProds+=' <option value="'+Alltrim(QRP->DA1_CODPRO)+'">'+Alltrim(QRP->DA1_CODPRO)+' - '+Alltrim(Strtran(QRP->B1_DESC,"'",""))+' - '+Alltrim(QRP->B1_PROC)+'</option>'
  1457. cGrupo:= QRP->B1_GRUPO
  1458. QRP->(dbSkip())
  1459. End
  1460. If !Empty(cProds)
  1461. cProds+= '</optgroup>'
  1462. Endif
  1463. cHtml:= cProds
  1464. Web Extended end
  1465. Return cHtml
  1466. /*__________________________________________________________________________
  1467. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1468. ¦¦+-----------------------------------------------------------------------+¦¦
  1469. ¦¦¦Funçäo ¦ GatProd ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 05.09.17 ¦¦¦
  1470. ¦¦+----------+------------------------------------------------------------¦¦¦
  1471. ¦¦¦Descriçäo ¦ Gatilho para atualização dos preços ao selecionar o produto¦¦¦
  1472. ¦¦+-----------------------------------------------------------------------+¦¦
  1473. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1474. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1475. */
  1476. User Function GatProd()
  1477. Local cProduto := Alltrim(UnEscape(HttpPost->PRODUTO))
  1478. Local cTabela := Alltrim(HttpSession->Tabela)
  1479. Local cCliente := Alltrim(HttpSession->Cliente)
  1480. Local cSepField := "|#|"
  1481. Local cTes := ""
  1482. Local cMsg := ""
  1483. Local nPercFrt := val(HttpPost->frete)
  1484. Local nComisRT := val(HttpPost->comisRT)
  1485. Local nPrcTab := 0
  1486. Local nQtdFis := 1
  1487. Local nDesc := 0
  1488. Local nValIcms := 0
  1489. Local nBaseIcms := 0
  1490. Local nValST := 0
  1491. Local nBaseST := 0
  1492. Local nValIPI := 0
  1493. Local nBaseIPI := 0
  1494. Local cAliqIPI := 0
  1495. Local cAliqICMS := 0
  1496. Local cAliqST := 0
  1497. Local nQtdMin := 0
  1498. Local aRet := {}
  1499. Local lRetPro := .T.
  1500. Local lVencido := .F.
  1501. Local cHtml
  1502. Private cPrzEmb := ""
  1503. Private nCargIcm := 0
  1504. Private nFatCorr := 0
  1505. nSec:= Seconds()
  1506. Web Extended Init cHtml Start U_inSite()
  1507. Conout("[ADDORC / GATPROD] - tempo Abertura InSite: "+cValtoChar(Seconds()-nSec)+"s")
  1508. //Busca o cadastro do cliente
  1509. Posicione("SA1",1,xFilial("SA1")+cCliente,"A1_COD")
  1510. //Posiciona no cadastro do produto
  1511. Posicione("SB1",1,xFilial("SB1")+cProduto,"B1_COD")
  1512. //Chama a validação customizada do produto
  1513. If ExistBlock("VldPortalSMS")
  1514. cMsgCust:= ""
  1515. lRetPro:=u_VldPortalSMS("CK_PRODUTO",SB1->(Recno()))
  1516. If !Empty(cMsgCust)
  1517. cMsg:= '<div class="row form-group">'+CHR(13)+CHR(10)
  1518. cMsg+= '<div class="col-lg-12">'+CHR(13)+CHR(10)
  1519. cMsg+= ' <div class="col-lg-12">'+cMsgCust+'</div>'+CHR(13)+CHR(10)
  1520. cMsg+= '</div>'+CHR(13)+CHR(10)
  1521. cMsg+= '</div>'+CHR(13)+CHR(10)
  1522. Else
  1523. cMsg:="::"
  1524. Endif
  1525. Endif
  1526. if empty(cTabela)
  1527. cTabela := Alltrim(HttpPost->cTabela)
  1528. endif
  1529. HttpSession->cTabela:= cTabela
  1530. HttpSession->Tabela:= cTabela
  1531. //Posiciona na tabela de preço
  1532. Posicione("DA0",1,xFilial("DA0")+cTabela,"DA0_CODTAB")
  1533. DA1->(dbSetOrder(1))
  1534. If DA1->(dbSeek(xFilial("DA1")+cTabela+cProduto))
  1535. nPrcTab:= u_getValProd(nComisRT,nPercFrt)
  1536. Endif
  1537. conout("Chave "+xFilial("DA1")+cTabela+cProduto)
  1538. conout("Tabela de preco "+xFilial("DA1")+" tab: "+cValToChar(cTabela)+" produto "+cProduto+" Preco "+cValToChar(nPrcTab))
  1539. If nPrcTab > 0
  1540. nSec:= Seconds()
  1541. //&&&&&& verificar se excessão fiscal calcula na tes inteligente
  1542. //nPrcTab := (nPrcTab - (nPrcTab * ((18 - nCargIcm - nFatCorr)/100))) // Alterado em 20-09-2018 - Fabiana - para calcular 1.5/4.5 de desconto CIF Norte/Nordeste.
  1543. //Obtem os valores de impostos
  1544. u_GetValImp(SA1->A1_COD+SA1->A1_LOJA,nPrcTab,nDesc,nQtdFis,@nValIcms,@nBaseICMS,@nValST,@nBaseST,@nValIPI,@nBaseIPI,@cAliqIPI,@cAliqICMS,@cAliqST,@cTes)
  1545. Conout("[ADDORC / GATPROD] - tempo u_GetValImp: "+cValtoChar(Seconds()-nSec)+"s")
  1546. If Empty(cTes)
  1547. cHtml:= "ERRO: TES n&atilde;o localizada."
  1548. Else
  1549. cPrcTab := TransForm((nPrcTab),PesqPict("SCK","CK_PRCVEN"))
  1550. cTotalST:= Transform(((nPrcTab)+nValST),PesqPict("SCK","CK_PRCVEN"))
  1551. If SB5->(MsSeek(xFilial("SB5")+SB1->B1_COD))
  1552. If SB5->B5_DTVLESP + 30 < dDataBase
  1553. lVencido:= .T.
  1554. Endif
  1555. Endif
  1556. CONOUT("IPI "+CVALTOCHAR(nValIPI))
  1557. aAdd(aRet,Alltrim(SB1->B1_UM)) //01
  1558. aAdd(aRet,Alltrim(cPrcTab)) //02
  1559. aAdd(aRet,Alltrim(Transform(nValIcms,PesqPict("SCK","CK_XVALICM")))) //03
  1560. aAdd(aRet,Alltrim(Transform(nValIPI,PesqPict("SCK","CK_XVALIPI")))) //04
  1561. aAdd(aRet,Alltrim(Transform(nValST,PesqPict("SCK","CK_PRCVEN")))) //05
  1562. aAdd(aRet,cAliqIPI) //06
  1563. aAdd(aRet,cAliqICMS) //07
  1564. aAdd(aRet,cValtochar(SB1->B1_QE)) //08
  1565. aAdd(aRet,cTES) //09
  1566. aAdd(aRet,cValtoChar(nBaseICMS)) //10
  1567. aAdd(aRet,cValtoChar(nBaseST)) //11
  1568. aAdd(aRet,cValtoChar(nBaseIPI)) //12
  1569. aAdd(aRet,cAliqST) //13
  1570. aAdd(aRet,SB1->B1_GRUPO) //14
  1571. aAdd(aRet,cvaltochar(nQtdMin)) //15
  1572. aAdd(aRet,Iif(lVencido,'1','0')) //16
  1573. aAdd(aRet,u_GetEstDisp()) //17
  1574. aAdd(aRet,Iif(lRetPro,'1','0')) //18
  1575. aAdd(aRet,cMsg) //19
  1576. aAdd(aRet,cPrzEmb) //20
  1577. aAdd(aRet,SB1->B1_TIPO) //21
  1578. cHtml := "OK:"
  1579. cHtml += aRet[1]+cSepField+aRet[2]+cSepField+aRet[3]+cSepField+aRet[4]+cSepField+aRet[5]+cSepField+aRet[6]+cSepField+aRet[7]+cSepField+aRet[8]
  1580. cHtml +=cSepField+aRet[9]+cSepField+aRet[10]+cSepField+aRet[11]+cSepField+aRet[12]+cSepField+aRet[13]+cSepField+aRet[14]+cSepField+aRet[15]
  1581. cHtml +=cSepField+aRet[16]+cSepField+aRet[17]+cSepField+aRet[18]+cSepField+aRet[19]+cSepField+aRet[20]+cSepField+aRet[21]
  1582. Endif
  1583. Else
  1584. cHtml := "ERRO: Nao foi possivel localizar o produto"
  1585. Endif
  1586. Web Extended end
  1587. CONOUT("FIM GATPROD")
  1588. Return cHtml
  1589. User Function getValProd(nComisRT,nPercFrt)
  1590. Local nValor:= 0
  1591. If SB1->B1_TIPO = 'CO' .AND. SB1->B1_GRUPO = 'ELEV'
  1592. nValor:= SB1->B1_CUSTD
  1593. Else
  1594. nValor := DA1->DA1_PRCVEN
  1595. //Verifica excessão fiscal
  1596. cQuery := "SELECT * FROM "
  1597. cQuery += RetSQLName("SF7")+" SF7 "
  1598. cQuery += " WHERE F7_FILIAL = '" + xFilial("SF7") + "' "
  1599. cQuery += " AND F7_GRTRIB = '" + Trim(SB1->B1_GRTRIB) + "' "
  1600. cQuery += " AND F7_EST = '" + SA1->A1_EST + "' "
  1601. cQuery += " AND F7_TIPOCLI = '" + SA1->A1_TIPO + "' "
  1602. cQuery += " AND F7_GRPCLI = '" + SA1->A1_GRPTRIB + "' "
  1603. cQuery += " AND SF7.D_E_L_E_T_ = ' '" + " "
  1604. TcQuery cQuery New Alias "QREX"
  1605. If QREX->(!Eof())
  1606. nValor := (nValor - (nValor * ((18 - QREX->F7_CARGICM - QREX->F7_FATCORR)/100))) // Alterado em 20-09-2018 - Fabiana - para calcular 1.5/4.5 de desconto CIF Norte/Nordeste.
  1607. Endif
  1608. QREX->(dbCloseArea())
  1609. If nComisRT > 0
  1610. nValor := (nValor * ((nComisRT/100)+1))
  1611. EndIf
  1612. If nPercFrt > 0
  1613. nValor := (nValor * ((nPercFrt/100)+1))
  1614. EndIf
  1615. Endif
  1616. Return nValor
  1617. User Function GetImpostos()
  1618. Local cProduto := Alltrim(UnEscape(HttpPost->PRODUTO))
  1619. Local nPrcTab := Val(HttpPost->prcvenda)
  1620. // Local cTabela := Alltrim(HttpSession->Tabela)
  1621. Local cCliente := Alltrim(HttpSession->Cliente)
  1622. Local nQtdFis := Val(HttpPost->quantidade)
  1623. // Local cSepReg := "#*#*"
  1624. Local cSepField := "|#|"
  1625. Local cTes := ""
  1626. Local nDesc := 0
  1627. Local nValIcms := 0
  1628. Local nBaseIcms := 0
  1629. Local nValST := 0
  1630. Local nBaseST := 0
  1631. Local nValIPI := 0
  1632. Local nBaseIPI := 0
  1633. Local cAliqIPI := 0
  1634. Local cAliqICMS := 0
  1635. Local cAliqST := 0
  1636. Local aRet := {}
  1637. Local cHtml
  1638. Web Extended Init cHtml Start U_inSite()
  1639. //Busca o cadastro do cliente
  1640. Posicione("SA1",1,xFilial("SA1")+cCliente,"A1_COD")
  1641. //Posiciona no cadastro do produto
  1642. Posicione("SB1",1,xFilial("SB1")+cProduto,"B1_COD")
  1643. If nPrcTab > 0
  1644. //Obtem os valores de impostos
  1645. u_GetValImp(SA1->A1_COD+SA1->A1_LOJA,nPrcTab,nDesc,nQtdFis,@nValIcms,@nBaseICMS,@nValST,@nBaseST,@nValIPI,@nBaseIPI,@cAliqIPI,@cAliqICMS,@cAliqST,@cTes)
  1646. nValDesc:= nPrcTab * nDesc
  1647. cPrcTab := TransForm((nPrcTab-nValDesc),PesqPict("SCK","CK_PRCVEN"))
  1648. // cPrcTab := TransForm((nPrcTab-nValDesc),PesqPict("SCK","CK_PRCVEN"))
  1649. cTotalST:= Transform(((nPrcTab-nValDesc)+nValST),PesqPict("SCK","CK_PRCVEN"))
  1650. aAdd(aRet,Alltrim(SB1->B1_UM))
  1651. aAdd(aRet,Alltrim(cPrcTab))
  1652. aAdd(aRet,Alltrim(Transform(nValIcms,PesqPict("SCK","CK_XVALICM"))))
  1653. aAdd(aRet,Alltrim(Transform(nValIPI,PesqPict("SCK","CK_XVALIPI"))))
  1654. aAdd(aRet,Alltrim(cValtoChar(nValST)))
  1655. //aAdd(aRet,Alltrim(Transform(nValST,PesqPict("SCK","CK_PRCVEN"))))
  1656. aAdd(aRet,cAliqIPI)
  1657. aAdd(aRet,cAliqICMS)
  1658. aAdd(aRet,cValtochar(SB1->B1_QE))
  1659. aAdd(aRet,cTES)
  1660. aAdd(aRet,cValtoChar(nBaseICMS))
  1661. aAdd(aRet,cValtoChar(nBaseST))
  1662. aAdd(aRet,cValtoChar(nBaseIPI))
  1663. aAdd(aRet,cAliqST)
  1664. cHtml := "OK:"
  1665. cHtml += aRet[1]+cSepField+aRet[2]+cSepField+aRet[3]+cSepField+aRet[4]+cSepField+aRet[5]+cSepField+aRet[6]+cSepField+aRet[7]+cSepField+aRet[8]
  1666. cHtml +=cSepField+aRet[9]+cSepField+aRet[10]+cSepField+aRet[11]+cSepField+aRet[12]+cSepField+aRet[13]
  1667. Else
  1668. cHtml := "Falha ao calcular impostos"
  1669. Endif
  1670. Web Extended end
  1671. Return cHtml
  1672. /*__________________________________________________________________________
  1673. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1674. ¦¦+-----------------------------------------------------------------------+¦¦
  1675. ¦¦¦Funçäo ¦ GetValImp ¦ Autor ¦ Anderson Zelenski ¦ Data ¦ 09.09.17 ¦¦¦
  1676. ¦¦+----------+------------------------------------------------------------¦¦¦
  1677. ¦¦¦Descriçäo ¦ Função para cálculo dos impostos ¦¦¦
  1678. ¦¦+-----------------------------------------------------------------------+¦¦
  1679. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1680. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1681. */
  1682. User Function GetValImp(cCliente,nPreco,nDesc,nQtdFis,nValIcms,nBaseIcms,nValST,nBaseST,nValIPI,nBaseIPI,cAliqIPI,cAliqICMS,cAliqST,cTes)
  1683. Local _nItem:= 0
  1684. Local cCodOper:= ""
  1685. MaFisEnd()
  1686. SA1->(dbSetorder(1))
  1687. SA1->(dbSeek(xFilial("SA1")+cCliente))
  1688. cCodOper:= GetCodOper()
  1689. MaFisIni(SA1->A1_COD,;// 1-Codigo Cliente/Fornecedor
  1690. SA1->A1_LOJA,;// 2-Loja do Cliente/Fornecedor
  1691. "C",; // 3-C:Cliente , F:Fornecedor
  1692. "N",; // 4-Tipo da NF
  1693. SA1->A1_TIPO,;// 5-Tipo do Cliente/Fornecedor
  1694. MaFisRelImp("MT100", {"SF2", "SD2"}),; // 6-Relacao de Impostos que suportados no arquivo
  1695. ,;// 7-Tipo de complemento
  1696. ,;// 8-Permite Incluir Impostos no Rodape .T./.F.
  1697. "SB1",; // 9-Alias do Cadastro de Produtos - ("SBI" P/ Front Loja)
  1698. "MATA461")
  1699. dbSelectArea("SE4")
  1700. SE4->(DbSetOrder(1))
  1701. cTes:= MaTesInt(2,cCodOper,SA1->A1_COD,SA1->A1_LOJA,"C",SB1->B1_COD,"",SA1->A1_TIPO)
  1702. // conout("tes -->"+cTes)
  1703. // conout("prod -->"+SB1->B1_COD)
  1704. _nItem := MaFisAdd(SB1->B1_COD,; // 1-Codigo do Produto ( Obrigatorio )
  1705. cTes,;// 2-Codigo do TES ( Opcional )
  1706. nQtdFis,; // 3-Quantidade ( Obrigatorio )
  1707. nPreco,; // 4-Preco Unitario ( Obrigatorio )
  1708. nDesc,; // 5-Valor do Desconto ( Opcional )
  1709. ,;// 6-Numero da NF Original ( Devolucao/Benef )
  1710. ,;// 7-Serie da NF Original ( Devolucao/Benef )
  1711. ,;// 8-RecNo da NF Original no arq SD1/SD2
  1712. 0,; // 9-Valor do Frete do Item ( Opcional )
  1713. 0,; // 10-Valor da Despesa do item ( Opcional )
  1714. 0,; // 11-Valor do Seguro do item ( Opcional )
  1715. 0,; // 12-Valor do Frete Autonomo ( Opcional )
  1716. nPreco,; // 13-Valor da Mercadoria ( Obrigatorio )
  1717. 0,; // 14-Valor da Embalagem ( Opiconal )
  1718. 0,; // 15-RecNo do SB1
  1719. 0)// 16-RecNo do SF4
  1720. //ICMS
  1721. nValIcms:= MaFisRet(_nItem,"IT_VALICM")
  1722. nBaseIcms:= MaFisRet(_nItem,"IT_BASEICM")
  1723. cAliqICMS:= Alltrim(Str(MaFisRet(_nItem,"IT_ALIQICM")))
  1724. //IPI
  1725. nValIPI := MaFisRet(_nItem,"IT_VALIPI")
  1726. nBaseIPI := MaFisRet(_nItem,"IT_BASEIPI")
  1727. cAliqIPI := Alltrim(Str(MaFisRet(_nItem,"IT_ALIQIPI")))
  1728. //ICMS ST
  1729. nValST := MaFisRet(_nItem,"IT_VALSOL")
  1730. nBaseST := MaFisRet(_nItem,"IT_BASESOL")
  1731. cAliqST := Alltrim(Str(MaFisRet(_nItem,"IT_ALIQSOL")))
  1732. Return
  1733. /*__________________________________________________________________________
  1734. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1735. ¦¦+-----------------------------------------------------------------------+¦¦
  1736. ¦¦¦Funçäo ¦ GetCodOper ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 07.10.24 ¦¦¦
  1737. ¦¦+----------+------------------------------------------------------------¦¦¦
  1738. ¦¦¦Descriçäo ¦ Busca o código de operação para cálculo da TES Inteligente ¦¦¦
  1739. ¦¦+-----------------------------------------------------------------------+¦¦
  1740. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1741. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1742. */
  1743. Static Function GetCodOper()
  1744. Local cCod:= ""
  1745. M->CJ_TIPOPER:= '1'
  1746. M->CJ_TIPOCLI:= SA1->A1_TIPO
  1747. cCod:= u_OperaO()
  1748. conout("------>>>>> operação: "+cCod)
  1749. Return cCod
  1750. /*__________________________________________________________________________
  1751. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1752. ¦¦+-----------------------------------------------------------------------+¦¦
  1753. ¦¦¦Funçäo ¦ VldDescto ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 05.09.17 ¦¦¦
  1754. ¦¦+----------+------------------------------------------------------------¦¦¦
  1755. ¦¦¦Descriçäo ¦ Validação do desconto digitado ¦¦¦
  1756. ¦¦+-----------------------------------------------------------------------+¦¦
  1757. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1758. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1759. */
  1760. User Function VldDescto()
  1761. Local cCliente := Alltrim(HttpSession->Cliente)
  1762. Local cProduto := Alltrim(HttpPost->Produto)
  1763. Local nVlrUnit := Val(HttpPost->prcvenda)
  1764. Local nQuant := Val(HttpPost->quantidade)
  1765. Local cProdPan := ""
  1766. Local cUsrLivre := ""
  1767. Local cTpDesc := "1"// 1=Permite o desconto 2=Permite mediante senha 3=Não permite
  1768. Local cHtml
  1769. Web Extended Init cHtml Start U_inSite()
  1770. //Posiciona nos registros
  1771. Posicione("SA1",1,xFilial("SA1")+cCliente,"A1_COD")
  1772. Posicione("SB1",1,xFilial("SB1")+cProduto,"B1_COD")
  1773. cProdPan := GetMV("MV_PRODPAN", Nil, "ACS-LHT44BC,ACS-LHT44PT")
  1774. cUsrLivre := GetMV("MV_ULDSCRE", Nil, "000111,000342,000358")
  1775. Do Case
  1776. //Case cCodLogin $ cUsrLivre //&& verificar
  1777. // nTpDesc := "1"
  1778. Case SB1->B1_GRUPO == "PAN " .or. AllTrim(cProduto) $ cProdPan
  1779. cTpDesc := "3"
  1780. Case SB1->B1_TIPO == "RE" //SB1->B1_TIPO # "PA" .and. (SB1->B1_TIPO # "PI" .or. !SB1->B1_GRUPO $ "E048|E049|E04A|E063|")
  1781. cTpDesc := "2"
  1782. Otherwise
  1783. cTpDesc := "1"
  1784. EndCase
  1785. cHtml:= cTpDesc
  1786. Web Extended End
  1787. Return cHtml
  1788. /*__________________________________________________________________________
  1789. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1790. ¦¦+-----------------------------------------------------------------------+¦¦
  1791. ¦¦¦Funçäo ¦ VldDscMax ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 05.09.17 ¦¦¦
  1792. ¦¦+----------+------------------------------------------------------------¦¦¦
  1793. ¦¦¦Descriçäo ¦ Validação do desconto máximo do orçamento ¦¦¦
  1794. ¦¦+-----------------------------------------------------------------------+¦¦
  1795. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1796. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1797. */
  1798. User Function VldDscMax()
  1799. Local cCondPag := Alltrim(HttpPost->condpag)
  1800. Local nPrcTab := Val(HttpPost->vlrTabela)
  1801. Local nPrcVenda := Val(HttpPost->vlrVenda)
  1802. Local nDescDir := Val(HttpPost->descDir)
  1803. Local nDscConc := 0 //desconto concedido
  1804. Local nDscVista := 0 //desconto a vista da condição de pagamento
  1805. Local cSepField := "|#|"
  1806. Local cHtml := "OK"
  1807. Web Extended Init cHtml Start U_inSite()
  1808. nDscConc := Round(((((Round(nPrcVenda,2)/NoRound(nPrcTab,2))*100)-100)*-1),2)
  1809. If ABS(Round(nDscConc,2)) <= 0.02
  1810. nDscConc := 0
  1811. EndIf
  1812. cQuery := "SELECT ZA_PERCDES, ZA_PEDESAV FROM " + RetSQLName("SZA") + " WHERE "
  1813. cQuery += "ZA_FILIAL = '" + xFilial("SZA") + "' AND ZA_DE <= " + Str(nPrcTab) + " AND ZA_ATE >= " + Str(nPrcTab) + " AND D_E_L_E_T_ = ' ' "
  1814. If Select("QRY") > 0
  1815. QRY->(dbCloseArea())
  1816. Endif
  1817. TcQuery cQuery New Alias "QRY"
  1818. If cCondPag == '001' .OR. cCondPag == '500'
  1819. nDscVista := QRY->ZA_PEDESAV
  1820. EndIf
  1821. If Round(nDscConc,2) > (QRY->ZA_PERCDES + nDescDir + nDscVista)
  1822. cHtml:= "NOK:"
  1823. cHtml += Transform(nDscConc,"@R 999.99")+" %"+cSepField
  1824. cHtml += Transform((QRY->ZA_PERCDES + nDescDir + nDscVista),"@R 999.99")+" %"
  1825. Else
  1826. cHtml:= "OK:"
  1827. EndIf
  1828. Web Extended End
  1829. Return cHtml
  1830. /*__________________________________________________________________________
  1831. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1832. ¦¦+-----------------------------------------------------------------------+¦¦
  1833. ¦¦¦Funçäo ¦ VldSenha ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 05.09.17 ¦¦¦
  1834. ¦¦+----------+------------------------------------------------------------¦¦¦
  1835. ¦¦¦Descriçäo ¦ Validação da senha digitada ¦¦¦
  1836. ¦¦+-----------------------------------------------------------------------+¦¦
  1837. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1838. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1839. */
  1840. User Function VldSenha()
  1841. Local cUser := Alltrim(HttpPost->user)
  1842. Local cPsw := Alltrim(HttpPost->senha)
  1843. Local cUsers := "USUARIOS_ORCA1018.json" // arquivo na pasta SYSTEM
  1844. Local jUsers
  1845. Local nI
  1846. Local lOk := .F.
  1847. Local cHtml
  1848. Web Extended Init cHtml Start U_inSite()
  1849. If File(cUsers)
  1850. jUsers := JsonObject():New()
  1851. jUsers:FromJson(MemoRead(cUsers))
  1852. For nI := 1 To Len(jUsers["usuarios"])
  1853. If Trim(cUser) == jUsers["usuarios"][nI]["usuario"] .and. Trim(cPsw) == jUsers["usuarios"][nI]["senha"]
  1854. lOk := .T.
  1855. nI += Len(jUsers["usuarios"])
  1856. EndIf
  1857. Next
  1858. FreeObj(jUsers)
  1859. If lOk
  1860. cHtml:= "OK"
  1861. Else
  1862. cHtml:= "NOK"
  1863. EndIf
  1864. Else
  1865. cHtml:= "NOK"
  1866. EndIf
  1867. Web Extended End
  1868. Return cHtml
  1869. /*__________________________________________________________________________
  1870. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1871. ¦¦+-----------------------------------------------------------------------+¦¦
  1872. ¦¦¦Funçäo ¦ FreteMinimo ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 09.09.17 ¦¦¦
  1873. ¦¦+----------+------------------------------------------------------------¦¦¦
  1874. ¦¦¦Descriçäo ¦ Validação para valor mínimo do frete. ¦¦¦
  1875. ¦¦+-----------------------------------------------------------------------+¦¦
  1876. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1877. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1878. */
  1879. User Function FreteMinimo()
  1880. Local cHtml
  1881. Local cUFEntrega:= Alltrim(HttpPost->UFEnt)
  1882. Local cMunEntrega:= Alltrim(HttpPost->munEntrega)
  1883. Local nValMin := 0
  1884. Web Extended Init cHtml Start U_inSite()
  1885. If Empty(HttpSession->CodVend)
  1886. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1887. Return cHtml
  1888. endif
  1889. //Busca o valor mínimo de frete
  1890. cQuery := "SELECT Z3_VLFRMIN, Z3_MUNICIP "
  1891. cQuery += "FROM "+RetSQLName("SZ3")+" SZ3 "
  1892. cQuery += "WHERE SZ3.D_E_L_E_T_ = ' ' "
  1893. cQuery += " AND Z3_UF = '"+cUFEntrega+"' "
  1894. cQuery += " ORDER BY Z3_MUNICIP "
  1895. If Select("QRY") > 0
  1896. QRY->(dbCloseArea())
  1897. Endif
  1898. TcQuery cQuery New Alias "QRY"
  1899. If !QRY->(EOF())
  1900. nValMin := QRY->Z3_VLFRMIN
  1901. While QRY->(!EOF())
  1902. If AllTrim(QRY->Z3_MUNICIP) == cMunEntrega
  1903. nValMin := QRY->Z3_VLFRMIN
  1904. EndIf
  1905. QRY->(DbSkip())
  1906. End
  1907. Endif
  1908. cHtml:= cvaltochar(nValMin)
  1909. QRY->(dbCloseArea())
  1910. Web Extended end
  1911. Return cHtml
  1912. /*__________________________________________________________________________
  1913. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1914. ¦¦+-----------------------------------------------------------------------+¦¦
  1915. ¦¦¦Funçäo ¦ AtuPreco ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1916. ¦¦+----------+------------------------------------------------------------¦¦¦
  1917. ¦¦¦Descriçäo ¦ Envia email para atualização de preço ¦¦¦
  1918. ¦¦+-----------------------------------------------------------------------+¦¦
  1919. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1920. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1921. */
  1922. User Function AtuPreco()
  1923. Local cHtml
  1924. Local cCliente:= HttpSession->cliente
  1925. Local cFilOrc:= HttpPost->filial
  1926. Local cNumOrc:= HttpPost->orcto
  1927. Local cObra:= HttpPost->obra
  1928. Local cItens:= HttpPost->itens
  1929. Local cMsLumEspL:= ""
  1930. Local cMsLumEspT:= ""
  1931. Local aLinhas:= {}
  1932. Local aItem:= {}
  1933. Local i:= 0
  1934. Web Extended Init cHtml Start U_inSite()
  1935. If Empty(HttpSession->CodVend)
  1936. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1937. Return cHtml
  1938. endif
  1939. aLinhas:= Separa(cItens,"|")
  1940. For i:= 1 to Len(aLinhas)
  1941. aItem:= Separa(aLinha[i],";")
  1942. Posicione("SB1",1,xFilial("SB1")+aItem[2],"B1_DESC")
  1943. If SB5->(MsSeek(xFilial("SB5")+aItem[2])) .and. (SB5->B5_DTVLESP + 30) < dDataBase
  1944. cMsLumEspL += "<tr><td>" + aItem[1] + "</td>"
  1945. cMsLumEspL += "<td>" + aItem[2] + "</td>"
  1946. cMsLumEspL += "<td>" + SB1->B1_DESC + "</td>"
  1947. cMsLumEspL += "<td>" + DToC(SB5->B5_DTVLESP)+" "+Str(dDataBase - SB5->B5_DTVLESP)+" dias"+"</td>"
  1948. cMsLumEspL += "<td>" + Transform(val(aItem[3]),"@E 99999.99") + "</td></tr>"
  1949. Endif
  1950. Next
  1951. If !Empty(cMsLumEspL)
  1952. If AllTrim(cFilAnt) == '01'
  1953. cMsLumEspT += "Engenharia - "+AllTrim(HttpSession->Nome)
  1954. Else
  1955. cMsLumEspT += "Abalux - "+AllTrim(HttpSession->Nome)
  1956. Endif
  1957. cMsLumEspT += CRLF
  1958. cMsLumEspT += "Cliente: "+cCliente+" - "+AllTrim(SA1->A1_NOME)+CRLF
  1959. cMsLumEspT += "Obra: "+AllTrim(cObra)+CRLF
  1960. cMsLumEspT += "<table border='1' cellpadding='5' width='100%'><strong><tr><td>Item</td><td>Produto</td><td>Descrição</td></td><td>Atualização do custo em</td><td>Qtde.</td></tr></strong>"
  1961. U_EnvMail( "leonardo.souza@lumicenter.com;victor.pires@lumicenter.com;gustavo.santos@lumicenter.com;victor.ferreira@lumicenter.com" ,;
  1962. HttpSession->Email ,;
  1963. "" ,;
  1964. "e-Mail Automático. Atualização de preço - Luminárias especiais. Orçamento: "+Iif(!Empty(cNumOrc),cNumOrc,"")+"" ,;
  1965. cMsLumEspT+cMsLumEspL ,;
  1966. "" )
  1967. Endif
  1968. cHtml:= ""
  1969. Web Extended end
  1970. Return cHtml
  1971. /*__________________________________________________________________________
  1972. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1973. ¦¦+-----------------------------------------------------------------------+¦¦
  1974. ¦¦¦Funçäo ¦ VldCondPg ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 09.09.17 ¦¦¦
  1975. ¦¦+----------+------------------------------------------------------------¦¦¦
  1976. ¦¦¦Descriçäo ¦ Verifica valor mínimo de parcela. ¦¦¦
  1977. ¦¦+-----------------------------------------------------------------------+¦¦
  1978. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1979. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1980. */
  1981. User Function VldCondPg()
  1982. Local cHtml
  1983. Local cCondPag := Alltrim(HttpPost->condPgto)
  1984. Web Extended Init cHtml Start U_inSite()
  1985. If Empty(HttpSession->CodVend)
  1986. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1987. Return cHtml
  1988. endif
  1989. //Posiciona na condição
  1990. SE4->(dbSeek(xFilial("SE4")+cCondPag))
  1991. cHtml:= cvaltochar(SE4->E4_DESCRI)
  1992. Web Extended end
  1993. Return cHtml
  1994. /*__________________________________________________________________________
  1995. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1996. ¦¦+-----------------------------------------------------------------------+¦¦
  1997. ¦¦¦Funçäo ¦ GetSitCli ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 19.11.17 ¦¦¦
  1998. ¦¦+----------+------------------------------------------------------------¦¦¦
  1999. ¦¦¦Descriçäo ¦ Função para buscar os dados de crédito do cliente. ¦¦¦
  2000. ¦¦+-----------------------------------------------------------------------+¦¦
  2001. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2002. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2003. */
  2004. User Function GetSitCli()
  2005. Local cHtml
  2006. Local cCliente := Alltrim(HttpPost->Cliente)
  2007. Local cMsg := ""
  2008. Local cSepField := "|#|"
  2009. Local lRetCli:= .T.
  2010. Private cMsgCust:= ""
  2011. Web Extended Init cHtml Start U_inSite()
  2012. If Empty(HttpSession->CodVend)
  2013. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2014. Return cHtml
  2015. endif
  2016. //Posiciona no cliente
  2017. dbSelectArea("SA1")
  2018. SA1->(dbSeek(xFilial("SA1")+cCliente))
  2019. //Atualiza a variável de sessão
  2020. HttpSession->cliente := cCliente
  2021. //Chama a validação customizada do cliente
  2022. If ExistBlock("VldPortalSMS")
  2023. lRetCli:=u_VldPortalSMS("CJ_CLIENTE",SA1->(Recno()))
  2024. Endif
  2025. If !Empty(cMsgCust)
  2026. cMsg+= '<div class="row form-group">'+CHR(13)+CHR(10)
  2027. cMsg+= '<div class="col-lg-12">'+CHR(13)+CHR(10)
  2028. cMsg+= ' <div class="col-lg-12">'+cMsgCust+'</div>'+CHR(13)+CHR(10)
  2029. cMsg+= '</div>'+CHR(13)+CHR(10)
  2030. cMsg+= '</div>'+CHR(13)+CHR(10)
  2031. Else
  2032. cMsg:="::"
  2033. Endif
  2034. cHtml:= Iif(!lRetCli,'0','1')+cSepField+cMsg+cSepField
  2035. cHtml+= SA1->A1_TIPO+cSepField+SA1->A1_GRPTRIB+cSepField+Alltrim(SA1->A1_COND)+cSepField
  2036. cHtml+= Alltrim(SA1->A1_EST)+Alltrim(SA1->A1_COD_MUN)+" - "+Alltrim(SA1->A1_MUN)+cSepField
  2037. cHtml+= SA1->A1_VEND
  2038. Web Extended end
  2039. Return cHtml
  2040. /*__________________________________________________________________________
  2041. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2042. ¦¦+-----------------------------------------------------------------------+¦¦
  2043. ¦¦¦Funçäo ¦ GetEndCli ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 19.11.17 ¦¦¦
  2044. ¦¦+----------+------------------------------------------------------------¦¦¦
  2045. ¦¦¦Descriçäo ¦ Função para buscar o endereço do cliente. ¦¦¦
  2046. ¦¦+-----------------------------------------------------------------------+¦¦
  2047. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2048. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2049. */
  2050. User Function GetEndCli()
  2051. Local cHtml
  2052. Local cCliente := Alltrim(HttpPost->Cliente)
  2053. Web Extended Init cHtml Start U_inSite()
  2054. If Empty(HttpSession->CodVend)
  2055. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2056. Return cHtml
  2057. endif
  2058. //Posiciona no cliente
  2059. dbSelectArea("SA1")
  2060. SA1->(dbSeek(xFilial("SA1")+cCliente))
  2061. cHtml:= Alltrim(SA1->A1_EST)+Alltrim(SA1->A1_COD_MUN)+" - "+Alltrim(SA1->A1_MUN)
  2062. Web Extended end
  2063. Return cHtml
  2064. /*__________________________________________________________________________
  2065. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2066. ¦¦+-----------------------------------------------------------------------+¦¦
  2067. ¦¦¦Funçäo ¦ GetCellTb ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 22.11.17 ¦¦¦
  2068. ¦¦+----------+------------------------------------------------------------¦¦¦
  2069. ¦¦¦Descriçäo ¦ Função para geração da linha da tabela de itens ¦¦¦
  2070. ¦¦+-----------------------------------------------------------------------+¦¦
  2071. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2072. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2073. */
  2074. User Function GetCellTb()
  2075. Local cHtml
  2076. Local nCol := HttpPost->coluna
  2077. Local nLin := val(HttpPost->linha)
  2078. Local cItem := ""
  2079. Local cCampo:= ""
  2080. Web Extended Init cHtml Start U_inSite()
  2081. cItem:= StrZero(nLin,TamSX3("CK_ITEM")[1])
  2082. cCampo:= "var campo = document.createElement('input'); " // create input element
  2083. cCampo+= " campo.setAttribute('class', 'form-control input-block'); " // set class attribute
  2084. cCampo+= " campo.name = '"+aItens[nCol,2]+cItem+"'; "
  2085. cCampo+= " campo.id = '"+aItens[nCol,2]+cItem+"'; "
  2086. cCampo+= " campo.align = '"+aItens[nCol][4]+"';"
  2087. cHtml:= cCampo
  2088. Web Extended end
  2089. Return cHTML
  2090. /*__________________________________________________________________________
  2091. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2092. ¦¦+-----------------------------------------------------------------------+¦¦
  2093. ¦¦¦Funçäo ¦ GetCondPgto ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 01.07.19 ¦¦¦
  2094. ¦¦+----------+------------------------------------------------------------¦¦¦
  2095. ¦¦¦Descriçäo ¦ Função utilizada no Ajax pra retornar a cond de pagamento ¦¦¦
  2096. ¦¦+-----------------------------------------------------------------------+¦¦
  2097. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2098. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2099. */
  2100. User Function GetCondPgto()
  2101. Local cHtml
  2102. Local cCliente := Alltrim(HttpSession->Cliente)
  2103. Local cModali := Alltrim(HttpPost->modali)
  2104. Local cCondCli := ""
  2105. Local cCondPg := ""
  2106. Web Extended Init cHtml Start U_inSite()
  2107. If Empty(HttpSession->CodVend)
  2108. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2109. Return cHtml
  2110. endif
  2111. cCondPg+=' <option value=""></option>'
  2112. //Verifica se a condição cadastrada no cliente é dessa modalidade
  2113. cCondCli:= Posicione("SA1",1,xFilial("SA1")+cCliente,"A1_COND")
  2114. SE4->(dbSeek(xFilial("SE4")+cCondCli))
  2115. If SE4->E4_XMODALI == cModali
  2116. cCondPg+=' <option value="'+Alltrim(SE4->E4_CODIGO)+'">'+Alltrim(SE4->E4_CODIGO)+" - "+Alltrim(SE4->E4_DESCRI)+'</option>'
  2117. Else
  2118. cCondCli:=""
  2119. Endif
  2120. //Seleciona as condições de pagamento disponíveis no combo
  2121. cQry:= " Select E4_CODIGO, E4_DESCRI"
  2122. cQry+= " From "+RetSqlName("SE4")+" SE4 "
  2123. cQry+= " Where E4_FILIAL = '"+xFilial("SE4")+"' "
  2124. cQry+= " And E4_XMODALI = '"+cModali+"' "
  2125. cQry+= " And E4_MSBLQL <> '1' "
  2126. cQry+= " And E4_CODIGO <> '"+cCondCli+"' "
  2127. cQry+= " And SE4.D_E_L_E_T_ = ' ' "
  2128. If Select("QRT") > 0
  2129. QRT->(dbCloseArea())
  2130. Endif
  2131. APWExOpenQuery(ChangeQuery(cQry),'QRT',.T.)
  2132. //Preenche o select da tabela
  2133. While QRT->(!Eof())
  2134. cCondPg+=' <option value="'+Alltrim(QRT->E4_CODIGO)+'">'+Alltrim(QRT->E4_CODIGO)+" - "+Alltrim(QRT->E4_DESCRI)+'</option>'
  2135. QRT->(dbSkip())
  2136. End
  2137. cHtml:= cCondPg
  2138. Web Extended end
  2139. Return cHtml
  2140. /*__________________________________________________________________________
  2141. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2142. ¦¦+-----------------------------------------------------------------------+¦¦
  2143. ¦¦¦Funçäo ¦ GetEstDisp ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 04.07.19 ¦¦¦
  2144. ¦¦+----------+------------------------------------------------------------¦¦¦
  2145. ¦¦¦Descriçäo ¦ Função utilizada no Ajax pra retornar o estoque disponível ¦¦¦
  2146. ¦¦+-----------------------------------------------------------------------+¦¦
  2147. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2148. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2149. */
  2150. //Estoque disponível: saldo do produto – empenhos – quantidade pedido de venda – quantidade orçamentos Firmes e não efetivados.
  2151. User Function GetEstDisp()
  2152. Local cHtml
  2153. Local cProduto := Alltrim(UnEscape(HttpPost->produto))
  2154. Local cArmazem := ""
  2155. Local lVldEstoq := .T.
  2156. Web Extended Init cHtml Start U_inSite()
  2157. If Empty(HttpSession->CodVend)
  2158. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2159. Return cHtml
  2160. endif
  2161. lVldEstoq:= GetNewPar("PR_VLDESTQ",.T.)
  2162. If !lVldEstoq
  2163. Return '9999999'
  2164. Endif
  2165. //Armazéns considerados para busca do estoque
  2166. cArmazem:= GetNewPar("PR_ARMZPR","'01','02','03'") //deve estar no formato '01','02'
  2167. //Busca o saldo do produto
  2168. cQry:= "With QRY AS( "
  2169. cQry+= "Select SUM(B2_QATU) EST , SUM(CASE WHEN B2_QEMP >= 0 THEN B2_QEMP ELSE 0 END) + SUM(CASE WHEN B2_RESERVA >= 0 THEN B2_RESERVA ELSE 0 END) EMPENHO " //adicionado reserva 07.02.20 - Lucilene // + SUM(CASE WHEN B2_QPEDVEN >= 0 THEN B2_QPEDVEN ELSE 0 END)
  2170. cQry+= "From "+RetSqlName("SB2")+" SB2 "
  2171. cQry+= "Where B2_FILIAL = '"+xFilial("SB2")+"' And B2_COD = '"+cProduto+"' And SB2.D_E_L_E_T_ = ' ' "
  2172. If !Empty(cArmazem)
  2173. cQry+= "AND B2_LOCAL in ("+cArmazem+") "
  2174. Endif
  2175. cQry+= "UNION ALL "
  2176. cQry+= "Select 0 EST , SUM(CK_QTDVEN) EMPENHO "
  2177. cQry+= "From "+RetSqlName("SCJ")+" SCJ, "+RetSqlName("SCK")+" SCK "
  2178. cQry+= "Where CJ_FILIAL = '"+xFilial("SB2")+"' AND CJ_STATUS = 'A' AND SCJ.D_E_L_E_T_ = ' ' "
  2179. cQry+= "and CK_FILIAL = CJ_FILIAL AND CK_NUM = CJ_NUM AND CK_PRODUTO = '"+cProduto+"' and SCK.D_E_L_E_T_ = ' ' "
  2180. If !Empty(cArmazem)
  2181. cQry+= "AND CK_LOCAL in ("+cArmazem+") "
  2182. Endif
  2183. cQry+= ")"
  2184. cQry+= "SELECT SUM(EST) -SUM(EMPENHO) SALDO FROM QRY "
  2185. If Select("QRS") > 0
  2186. QRS->(dbCloseArea())
  2187. Endif
  2188. APWExOpenQuery(cQry,'QRS',.T.)
  2189. conout(cQry)
  2190. cHtml:= cValtoChar(QRS->SALDO)
  2191. Web Extended end
  2192. Return cHtml
  2193. /*__________________________________________________________________________
  2194. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2195. ¦¦+-----------------------------------------------------------------------+¦¦
  2196. ¦¦¦Funçäo ¦ GetEstGeral ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 14.10.23 ¦¦¦
  2197. ¦¦+----------+------------------------------------------------------------¦¦¦
  2198. ¦¦¦Descriçäo ¦ Retorna estoque disponível para todos os armazéns da filial¦¦¦
  2199. ¦¦+-----------------------------------------------------------------------+¦¦
  2200. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2201. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  2202. //Estoque disponível: saldo do produto – empenhos – quantidade pedido de venda – quantidade orçamentos Firmes e não efetivados.
  2203. User Function GetEstGeral()
  2204. Local cHtml
  2205. Local cProduto := Alltrim(UnEscape(HttpPost->produto))
  2206. Web Extended Init cHtml Start U_inSite()
  2207. If Empty(HttpSession->CodVend)
  2208. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2209. Return cHtml
  2210. Endif
  2211. //Busca o saldo do produto
  2212. cQry:= "With QRY AS( "
  2213. cQry+= "Select B2_LOCAL ARMAZEM, SUM(B2_QATU) EST , SUM(CASE WHEN B2_QEMP >= 0 THEN B2_QEMP ELSE 0 END) + SUM(CASE WHEN B2_RESERVA >= 0 THEN B2_RESERVA ELSE 0 END) EMPENHO " //adicionado reserva 07.02.20 - Lucilene // + SUM(CASE WHEN B2_QPEDVEN >= 0 THEN B2_QPEDVEN ELSE 0 END)
  2214. cQry+= "From "+RetSqlName("SB2")+" SB2 "
  2215. cQry+= "Where B2_FILIAL = '"+xFilial("SB2")+"' And B2_COD = '"+cProduto+"' And SB2.D_E_L_E_T_ = ' ' "
  2216. cQry+= "GROUP BY B2_LOCAL "
  2217. cQry+= "UNION ALL "
  2218. cQry+= "Select CK_LOCAL ARMAZEM, 0 EST , SUM(CK_QTDVEN) EMPENHO "
  2219. cQry+= "From "+RetSqlName("SCJ")+" SCJ, "+RetSqlName("SCK")+" SCK "
  2220. cQry+= "Where CJ_FILIAL = '"+xFilial("SB2")+"' AND CJ_STATUS = 'A' AND SCJ.D_E_L_E_T_ = ' ' "
  2221. cQry+= "and CK_FILIAL = CJ_FILIAL AND CK_NUM = CJ_NUM AND CK_PRODUTO = '"+cProduto+"' and SCK.D_E_L_E_T_ = ' ' "
  2222. cQry+= "GROUP BY CK_LOCAL "
  2223. cQry+= ")"
  2224. cQry+= "SELECT ARMAZEM, SUM(EST) -SUM(EMPENHO) SALDO FROM QRY "
  2225. cQry+= "GROUP BY ARMAZEM "
  2226. cQry+= "HAVING (SUM(EST) -SUM(EMPENHO)) > 0"
  2227. If Select("QRS") > 0
  2228. QRS->(dbCloseArea())
  2229. Endif
  2230. APWExOpenQuery(cQry,'QRS',.T.)
  2231. cTabela:= '<table class="table table-bordered table-striped table-condensed mb-none" id="saldoEstGeral">'+CHR(13)+CHR(10)
  2232. cTabela+= " <thead>"+CHR(13)+CHR(10)
  2233. cTabela+= " <tr>"+CHR(13)+CHR(10)
  2234. cTabela+= " <th>Armaz&eacute;m</th>"+CHR(13)+CHR(10)
  2235. cTabela+= " <th>Descri&ccedil;&atilde;o</th>"+CHR(13)+CHR(10)
  2236. cTabela+= " <th>Saldo</th>"+CHR(13)+CHR(10)
  2237. cTabela+= " </tr>"+CHR(13)+CHR(10)
  2238. cTabela+= " </thead>"+CHR(13)+CHR(10)
  2239. cTabela+= " <tbody>"+CHR(13)+CHR(10)
  2240. If QRS->(!Eof())
  2241. While QRS->(!Eof())
  2242. cTabela+= " <tr>
  2243. cTabela+= " <td>"+QRS->ARMAZEM+"</td>"
  2244. cTabela+= " <td>"+FwNoAccent(Upper(Posicione("NNR",1,xFilial("NNR")+QRS->ARMAZEM,"NNR_DESCRI")))+"</td>"
  2245. cTabela+= " <td>"+cvaltochar(QRS->SALDO)+"</td>"
  2246. cTabela+= " </tr>"
  2247. QRS->(dbSkip())
  2248. End
  2249. cTabela+=" </tbody>"+CHR(13)+CHR(10)
  2250. cTabela+="</table>"+CHR(13)+CHR(10)
  2251. QRS->(dbCloseArea())
  2252. Else
  2253. cTabela+= " <tr>
  2254. cTabela+= " <td>**Sem saldo em estoque**</td>"
  2255. cTabela+= " </tr>"
  2256. Endif
  2257. cHtml:= cTabela
  2258. Web Extended end
  2259. Return cHtml
  2260. /*__________________________________________________________________________
  2261. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2262. ¦¦+-----------------------------------------------------------------------+¦¦
  2263. ¦¦¦Funçäo ¦ GetLimCred ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 04.07.19 ¦¦¦
  2264. ¦¦+----------+------------------------------------------------------------¦¦¦
  2265. ¦¦¦Descriçäo ¦ Função utilizada no Ajax pra retornar o limite disponível ¦¦¦
  2266. ¦¦+-----------------------------------------------------------------------+¦¦
  2267. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2268. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2269. */
  2270. User Function GetLimCred()
  2271. Local cHtml
  2272. Local cCliente := Alltrim(HttpPost->cliente)
  2273. Local nTotal := Val(HttpPost->valor)
  2274. Local nSaldo := 0
  2275. Local nToler := 0
  2276. Local lVldLimite:= .F.
  2277. Web Extended Init cHtml Start U_inSite()
  2278. If Empty(HttpSession->CodVend)
  2279. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2280. Return cHtml
  2281. endif
  2282. lVldLimite:= GetNewPar("PR_VLDLIMT",.F.)
  2283. If !lVldLimite
  2284. cHtml:= cValtochar(99999999)+"|"+cValtochar(0)
  2285. Else
  2286. //Posiciona no cliente
  2287. dbSelectArea("SA1")
  2288. SA1->(dbSeek(xFilial("SA1")+cCliente))
  2289. //Busca valor em pedidos liberados
  2290. cQry:= "SELECT SUM(C6_VALOR) TOTAL FROM "+RetSqlName("SC6")+" SC6 "
  2291. cQry+= "INNER JOIN "+RetSqlName("SC5")+" SC5 ON C5_FILIAL = C6_FILIAL AND C5_NUM = C6_NUM AND C5_CLIENT = C6_CLI "
  2292. cQry+= "AND C5_LOJACLI = C6_LOJA AND C5_LIBEROK = 'S' AND C5_NOTA = ' ' AND SC5.D_E_L_E_T_ = ' ' "
  2293. cQry+= "WHERE C6_CLI = '"+SA1->A1_COD+"' AND C6_LOJA = '"+SA1->A1_LOJA+"' "
  2294. cQry+= "AND NOT EXISTS (SELECT * FROM "+RetSqlName("SC9")+" SC9 WHERE C9_FILIAL = C5_FILIAL AND C9_PEDIDO = C5_NUM AND C9_BLCRED NOT IN (' ','10') "
  2295. cQry+= "AND SC9.D_E_L_E_T_ = ' ') "
  2296. cQry+= "AND SC6.D_E_L_E_T_ = ' ' "
  2297. If Select("QRL") > 0
  2298. QRL->(dbCloseArea())
  2299. Endif
  2300. APWExOpenQuery(cQry,'QRL',.T.)
  2301. nSaldo:= SA1->A1_LC - (SA1->A1_SALDUP + QRL->TOTAL)
  2302. nToler:= nSaldo * GetNewPar("PR_TOLERLC",0)/100 //Tolerancia de 1%
  2303. //nSaldo:= nSaldo + nToler
  2304. cHtml:= cValtochar(nSaldo)+"|"+cValtochar(nToler) //Alltrim(Transform(nSaldo,"@E 999,999,999,999.99"))
  2305. Endif
  2306. Web Extended end
  2307. Return cHtml
  2308. /*__________________________________________________________________________
  2309. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2310. ¦¦+-----------------------------------------------------------------------+¦¦
  2311. ¦¦¦Funçäo ¦ DescVista ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 21.08.19 ¦¦¦
  2312. ¦¦+----------+------------------------------------------------------------¦¦¦
  2313. ¦¦¦Descriçäo ¦ Verifica se a condição de pagamento tem desconto à vista ¦¦¦
  2314. ¦¦+-----------------------------------------------------------------------+¦¦
  2315. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2316. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2317. */
  2318. User Function DescVista()
  2319. Local cHtml
  2320. Local cCondicao := Alltrim(HttpPost->condicao)
  2321. Web Extended Init cHtml Start U_inSite()
  2322. cHtml:= cValtoChar(Posicione("SE4",1,xFilial("SE4")+cCondicao,"E4_DESCPED"))
  2323. Web Extended end
  2324. Return cHtml
  2325. /*__________________________________________________________________________
  2326. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2327. ¦¦+-----------------------------------------------------------------------+¦¦
  2328. ¦¦¦Funçäo ¦ InfGetAn ¦ Autor ¦ Anderson Zelenski ¦ Data ¦ 24.08.17 ¦¦¦
  2329. ¦¦+----------+------------------------------------------------------------¦¦¦
  2330. ¦¦¦Descriçäo ¦ Função para utilizar no Ajax pra retornar os anexos ¦¦¦
  2331. ¦¦+-----------------------------------------------------------------------+¦¦
  2332. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2333. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2334. */
  2335. /*
  2336. User Function InfGetAn()
  2337. Local cHtml
  2338. Local cCotacao := ""
  2339. Local cFornece := ""
  2340. Local cLoja := ""
  2341. Local cDirCot := "anexosPortal\cotacoes\"
  2342. Web Extended Init cHtml Start U_inSite()
  2343. #IFDEF SMSDEBUG
  2344. conOut(Procname()+"("+ltrim(str(procline()))+") *** Portal ")
  2345. aInfo := HttpGet->aGets
  2346. For nI := 1 to len(aInfo)
  2347. conout('GET '+str(nI,3)+' = '+aInfo[nI]+' -> '+&("HTTPGET->"+aInfo[nI]))
  2348. Next
  2349. aInfo := HttpPost->aPost
  2350. For nI := 1 to len(aInfo)
  2351. conout('POST '+str(nI,3)+' = '+aInfo[nI]+' -> '+&("HTTPPOST->"+aInfo[nI]))
  2352. Next
  2353. #ENDIF
  2354. cCotacao := HttpPost->cotacao
  2355. cFornece := HttpPost->fornece
  2356. cLoja := HttpPost->loja
  2357. //Verifica se existem anexos
  2358. cDirCot += cCotacao+'\'+cFornece+cLoja+'\'
  2359. cDirPortal := "../anexos/cotacoes/"+cCotacao+"/"+cFornece+cLoja+"/"
  2360. aAnexos := DIRECTORY(cDirCot+"*.*","",,.T.)
  2361. If Len(aAnexos) > 0
  2362. cHTML := U_GetAnexos(aAnexos,cDirPortal)
  2363. Else
  2364. cHTML := "Sem Anexos para essa cotação."
  2365. EndIf
  2366. Web Extended End
  2367. Return (cHTML)
  2368. Static Function NewDlg1()
  2369. /*
  2370. A tag abaixo define a criação e ativação do novo diálogo. Você pode colocar esta tag
  2371. onde quer que deseje em seu código fonte. A linha exata onde esta tag se encontra, definirá
  2372. quando o diálogo será exibido ao usuário.
  2373. Nota: Todos os objetos definidos no diálogo serão declarados como Local no escopo da
  2374. função onde a tag se encontra no código fonte.
  2375. */
  2376. Return
  2377. //-------------------------------------------------------------------
  2378. /*/{Protheus.doc} U_GETPARC
  2379. Retorna lista de parceiros ativos do AC4
  2380. @param
  2381. @return cHtml - HTML com options dos parceiros
  2382. @author Matheus Bientinezi
  2383. @version P12
  2384. @since 09/01/2025
  2385. /*/
  2386. //-------------------------------------------------------------------
  2387. User Function GETPARC()
  2388. Local cHtml := ""
  2389. Local cQry := ""
  2390. Web Extended Init cHtml Start U_inSite()
  2391. If Empty(HttpSession->Regional)
  2392. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2393. Return cHtml
  2394. endif
  2395. cQry := "SELECT AC4_PARTNE, AC4_NOME "
  2396. cQry += "FROM " + RetSqlName("AC4") + " AC4 "
  2397. cQry += "WHERE AC4.D_E_L_E_T_ = ' ' "
  2398. cQry += "AND AC4_FILIAL = '" + xFilial("AC4") + "' "
  2399. cQry += "AND AC4_MSBLQL <> '1' " // Status do registro não bloqueado
  2400. cQry += "ORDER BY AC4_NOME"
  2401. If Select("QRT") > 0
  2402. QRT->(dbCloseArea())
  2403. Endif
  2404. APWExOpenQuery(cQry,'QRT',.T.)
  2405. cHtml := '<option value="">Selecione...</option>'
  2406. While !QRT->(Eof())
  2407. cHtml += '<option value="' + AllTrim(QRT->AC4_PARTNE) + '">'
  2408. cHtml += AllTrim(QRT->AC4_PARTNE) + ' - ' + AllTrim(QRT->AC4_NOME)
  2409. cHtml += '</option>'
  2410. QRT->(dbSkip())
  2411. EndDo
  2412. QRT->(dbCloseArea())
  2413. Web Extended End
  2414. Return cHtml
  2415. //-------------------------------------------------------------------
  2416. /*/{Protheus.doc} U_ADDPARC
  2417. Adiciona parceiro na tabela Z81
  2418. @param
  2419. @return cHtml - JSON com status da operação
  2420. @author Matheus Bientinezi
  2421. @version P12
  2422. @since 09/01/2025
  2423. /*/
  2424. //-------------------------------------------------------------------
  2425. User Function ADDPARC()
  2426. Local cHtml := ""
  2427. Local cParceiro := HttpPost->parceiro
  2428. Local nRTPagar := Val(HttpPost->rtpagar)
  2429. Local nRTAumentar:= Val(HttpPost->rtaumentar)
  2430. Local cNumOrc := HttpPost->numOrc
  2431. Local lSuccess := .T.
  2432. local LFA074G := GetMv('LC_FA074G1')
  2433. Web Extended Init cHtml Start U_inSite()
  2434. If Empty(HttpSession->Regional)
  2435. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2436. Return cHtml
  2437. endif
  2438. If Empty(cNumOrc)
  2439. lSuccess := .F.
  2440. cHtml := "NOK - Número do orçamento não informado"
  2441. return cHtml
  2442. EndIf
  2443. // Verifica se usuário tem permissão para RT Aumentar
  2444. If HttpSession->Regional $ lFA074G .And. !Empty(nRTAumentar)
  2445. cHtml := "NOK - Usuário sem permissão para informar RT Aumentar"
  2446. return cHtml
  2447. EndIf
  2448. DbSelectArea("Z81")
  2449. RecLock("Z81", .T.)
  2450. Z81->Z81_FILIAL := xFilial("Z81")
  2451. Z81->Z81_ORCAME := cNumOrc
  2452. Z81->Z81_PARTNE := cParceiro
  2453. Z81->Z81_PERRT := nRTPagar
  2454. Z81->Z81_PERAUM := nRTAumentar
  2455. MsUnlock()
  2456. cHtml := "OK - Parceiro adicionado com sucesso!"
  2457. Web Extended End
  2458. Return cHtml
  2459. //-------------------------------------------------------------------
  2460. /*/{Protheus.doc} U_EDITPARC
  2461. Adiciona parceiro na tabela Z81
  2462. @param
  2463. @return cHtml - JSON com status da operação
  2464. @author Matheus Bientinezi
  2465. @version P12
  2466. @since 09/01/2025
  2467. /*/
  2468. //-------------------------------------------------------------------
  2469. User Function EDITPARC()
  2470. Local cHtml := ""
  2471. Local cParceiro := HttpPost->parceiro
  2472. Local nRTPagar := Val(HttpPost->rtpagar)
  2473. Local nRTAumentar:= Val(HttpPost->rtaumentar)
  2474. Local cNumOrc := HttpPost->numOrc
  2475. local LFA074G := GetMv('LC_FA074G1')
  2476. Web Extended Init cHtml Start U_inSite()
  2477. If Empty(HttpSession->Regional)
  2478. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2479. Return cHtml
  2480. endif
  2481. If Empty(cNumOrc)
  2482. cHtml := "NOK - Número do orçamento não informado"
  2483. return cHtml
  2484. EndIf
  2485. // Verifica se usuário tem permissão para RT Aumentar
  2486. If HttpSession->Regional $ lFA074G .And. !Empty(nRTAumentar)
  2487. cHtml := "NOK - Usuário sem permissão para informar RT Aumentar"
  2488. return cHtml
  2489. EndIf
  2490. DbSelectArea("Z81")
  2491. DbSetOrder(1)
  2492. If DbSeek(xFilial("Z81")+ cNumOrc + cParceiro)
  2493. RecLock("Z81", .F.)
  2494. Z81->Z81_PERRT := nRTPagar
  2495. Z81->Z81_PERAUM := nRTAumentar
  2496. MsUnlock()
  2497. cHtml := "OK"
  2498. Else
  2499. cHtml := "NOK - Parceiro não encontrado!"
  2500. return cHtml
  2501. EndIf
  2502. Web Extended End
  2503. Return cHtml
  2504. //-------------------------------------------------------------------
  2505. /*/{Protheus.doc} U_DELPARC
  2506. Exclui parceiro da tabela Z81
  2507. @param
  2508. @return cHtml - JSON com status da operação
  2509. @author Matheus Bientinezi
  2510. @version P12
  2511. @since 09/01/2025
  2512. /*/
  2513. //-------------------------------------------------------------------
  2514. User Function DELPARC()
  2515. Local cHtml := ""
  2516. Local cParceiro := HttpPost->parceiro
  2517. Local nOrc := HttpPost->numOrc
  2518. Web Extended Init cHtml Start U_inSite()
  2519. If Empty(HttpSession->Regional)
  2520. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2521. Return cHtml
  2522. endif
  2523. DbSelectArea("Z81")
  2524. DbSetOrder(1)
  2525. If DbSeek(xFilial("Z81") + nOrc + cParceiro )
  2526. RecLock("Z81", .F.)
  2527. DbDelete()
  2528. MsUnlock()
  2529. cHtml := "OK - Parceiro excluído com sucesso!"
  2530. Else
  2531. cHtml := "NOK - Parceiro não encontrado!"
  2532. EndIf
  2533. Web Extended End
  2534. Return cHtml
  2535. //-------------------------------------------------------------------
  2536. /*/{Protheus.doc} U_LISTPARC
  2537. Lista os parceiros cadastrados na Z81
  2538. @param
  2539. @return cHtml - HTML com as linhas da tabela de parceiros
  2540. @author Matheus Bientinezi
  2541. @version P12
  2542. @since 09/01/2025
  2543. /*/
  2544. //-------------------------------------------------------------------
  2545. User Function LISTPARC()
  2546. Local cHtml := ""
  2547. Local cQry := ""
  2548. Local cNumOrc := HttpPost->numOrc
  2549. Web Extended Init cHtml Start U_inSite()
  2550. If Empty(HttpSession->Regional)
  2551. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2552. Return cHtml
  2553. endif
  2554. If Empty(cNumOrc)
  2555. cHtml := "NOK - Numero do orcameto nao informado"
  2556. Return(cHtml)
  2557. EndIf
  2558. cQry := "SELECT Z81.Z81_PARTNE, AC4.AC4_NOME, Z81.Z81_PERRT, Z81.Z81_PERAUM, Z81.Z81_ORCAME "
  2559. cQry += "FROM " + RetSqlName("Z81") + " Z81 "
  2560. cQry += "INNER JOIN " + RetSqlName("AC4") + " AC4 ON "
  2561. cQry += "AC4.AC4_FILIAL = '" + xFilial("AC4") + "' AND "
  2562. cQry += "AC4.AC4_PARTNE = Z81.Z81_PARTNE AND "
  2563. cQry += "AC4.AC4_MSBLQL <> '1' AND " // Status do registro não bloqueado
  2564. cQry += "AC4.D_E_L_E_T_ = ' ' "
  2565. cQry += "WHERE Z81.D_E_L_E_T_ = ' ' "
  2566. cQry += "AND Z81.Z81_FILIAL = '" + xFilial("Z81") + "' "
  2567. cQry += "AND Z81.Z81_ORCAME = '" + cNumOrc + "' "
  2568. cQry += "ORDER BY AC4.AC4_NOME"
  2569. If Select("QRC") > 0
  2570. QRC->(dbCloseArea())
  2571. Endif
  2572. APWExOpenQuery(cQry,'QRC',.T.)
  2573. cHtml := ""
  2574. While !QRC->(Eof())
  2575. cHtml += '<tr>'
  2576. cHtml += '<td>' + AllTrim(QRC->Z81_PARTNE) + ' - ' + AllTrim(QRC->AC4_NOME) + '</td>'
  2577. cHtml += '<td>' + AllTrim(Str(QRC->Z81_PERRT)) + '%</td>'
  2578. cHtml += '<td>' + AllTrim(Str(QRC->Z81_PERAUM)) + '%</td>'
  2579. cHtml += '<td>'
  2580. cHtml += '<span class="btn btn-xs btn-default" onclick="openModel('+"'"+ AllTrim(QRC->Z81_PARTNE) + "'"+', '+"'"+ AllTrim(QRC->Z81_ORCAME) +"'"+', '+"'"+ AllTrim(cvaltochar(QRC->Z81_PERRT)) +"'"+', '+"'"+ AllTrim(cvaltochar(QRC->Z81_PERAUM)) +"'"+', '+"'edit'"+')">'
  2581. cHtml += '<i class="fa fa-pencil"></i>'
  2582. cHtml += '</span> '
  2583. cHtml += '<span class="btn btn-xs btn-default" onclick="openModel('+"'"+ AllTrim(QRC->Z81_PARTNE) + "'"+', '+"'"+ AllTrim(QRC->Z81_ORCAME) +"'"+', '+"'"+ AllTrim(cvaltochar(QRC->Z81_PERRT)) +"'"+', '+"'"+ AllTrim(cvaltochar(QRC->Z81_PERAUM)) +"'"+', '+"'delete'"+')">'
  2584. cHtml += '<i class="fa fa-trash"></i>'
  2585. cHtml += '</span>'
  2586. cHtml += '</td>'
  2587. cHtml += '</tr>'
  2588. QRC->(dbSkip())
  2589. EndDo
  2590. QRC->(dbCloseArea())
  2591. Web Extended End
  2592. Return cHtml
  2593. /*/{Protheus.doc} CopiarZ81
  2594. copiar parceiros de comissao rt
  2595. @type function
  2596. @author Luiz Jacinto
  2597. @since 24/04/2024
  2598. @param cOrcamento, character, orcamento original
  2599. @param cNovo, character, novo orcamento
  2600. /*/
  2601. Static Function CopiarZ81(cOrcamento,cNovo)
  2602. // salva area aberta
  2603. Local aArea := FwGetArea()
  2604. // item temporario
  2605. Local aItem := {}
  2606. // parceiros
  2607. Local aDados:= {}
  2608. // lista de campos reais da tabela
  2609. Local aCab := FwSX3Util():GetAllFields("Z81",.F.)
  2610. // contador
  2611. Local nX := 0
  2612. // contador
  2613. Local nY := 0
  2614. // abre a tabela
  2615. Z81->(DbSetOrder(1))
  2616. // se nao achou parceiros no orcamento original
  2617. If !Z81->(MsSeek(xFilial("Z81")+cOrcamento))
  2618. // sai da funcao
  2619. Return
  2620. Endif
  2621. // passa por todos os parceiros
  2622. While !Z81->(EOF()) .and. Z81->Z81_FILIAL == xFilial("Z81") .and. Z81->Z81_ORCAME == cOrcamento
  2623. // limpa array temporario
  2624. aItem := {}
  2625. // passa por todos os campos da tabela
  2626. For nX := 1 to Len(aCab)
  2627. // adiciona valor da coluna
  2628. aadd(aItem,&("Z81->"+aCab[nX]))
  2629. Next
  2630. // adiciona parceiro ao array de parceiros
  2631. aadd(aDados,aItem)
  2632. // proximo registro
  2633. Z81->(DbSkip())
  2634. Enddo
  2635. // se achou parceiro
  2636. If !Vazio(aDados)
  2637. // passa por todos os parceiros
  2638. For nX := 1 to Len(aDados)
  2639. // trava o registro
  2640. RecLock("Z81",.T.)
  2641. // passa por todos os campos da tabela
  2642. For nY := 1 to Len(aCab)
  2643. // atualiza o valor do novo registro
  2644. &("Z81->"+aCab[nY]) := aDados[nX][nY]
  2645. Next
  2646. // altera o numero do orcamento para o novo numero
  2647. Z81->Z81_ORCAME := cNovo
  2648. // destrava o registro
  2649. MsUnLock("Z81")
  2650. Next
  2651. Endif
  2652. // restaura area aberta
  2653. FwRestArea(aArea)
  2654. Return