AddOrc.apl 131 KB

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