AddOrc.apl 131 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486
  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" onchange="javascript:vldCond()" disabled>'
  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="" 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. If Select("QRR") > 0
  677. QRR->(dbCloseArea())
  678. Endif
  679. conout("query vendedores:"+cqry)
  680. APWExOpenQuery(ChangeQuery(cQry),'QRR',.T.)
  681. While QRR->(!Eof())
  682. 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>'
  683. QRR->(dbSkip())
  684. End
  685. QRR->(dbCloseArea())
  686. Return cLista
  687. /*__________________________________________________________________________
  688. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  689. ¦¦+-----------------------------------------------------------------------+¦¦
  690. ¦¦¦Funçäo ¦ Vend04 ¦ Autor ¦ Lucilene Mendes ¦ Data ¦24.08.24 ¦¦¦
  691. ¦¦+----------+------------------------------------------------------------¦¦¦
  692. ¦¦¦Descriçäo ¦ Retorna lista de select com os vendedores 04 ¦¦¦
  693. ¦¦+-----------------------------------------------------------------------+¦¦
  694. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  695. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  696. User Function Vend04(cOpcSel)
  697. Local cLista:= ""
  698. Local cCodVend:= GetNewPar("PR_VEND04","000845/000846")
  699. cQry:= " Select A3_COD, A3_NOME "
  700. cQry+= " From "+RetSqlName("SA3")+" SA3 "
  701. cQry+= " Where A3_FILIAL = '"+xFilial("SA3")+"' "
  702. cQry+= " And A3_COD IN "+FormatIn(cCodVend,"/")+" "
  703. cQry+= " And A3_CLASSIF = 'E' "
  704. cQry+= " And A3_MSBLQL <> '1' "
  705. cQry+= " And SA3.D_E_L_E_T_ = ' ' "
  706. APWExOpenQuery(ChangeQuery(cQry),'QRV',.T.)
  707. While QRV->(!Eof())
  708. 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>'
  709. QRV->(dbSkip())
  710. End
  711. QRV->(dbCloseArea())
  712. Return cLista
  713. /*__________________________________________________________________________
  714. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  715. ¦¦+-----------------------------------------------------------------------+¦¦
  716. ¦¦¦Funçäo ¦ ListaEsp ¦ Autor ¦ Lucilene Mendes ¦ Data ¦24.08.24 ¦¦¦
  717. ¦¦+----------+------------------------------------------------------------¦¦¦
  718. ¦¦¦Descriçäo ¦ Retorna lista de select com os especificadores ¦¦¦
  719. ¦¦+-----------------------------------------------------------------------+¦¦
  720. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  721. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  722. User Function ListaEsp(cOpcSel)
  723. Local cLista:= ""
  724. cQry:= " Select X5_CHAVE, X5_DESCRI "
  725. cQry+= " From "+RetSqlName("SX5")+" SX5 "
  726. cQry+= " Where X5_FILIAL = '"+xFilial("SX5")+"' "
  727. cQry+= " And X5_TABELA = 'Z1' "
  728. cQry+= " And SX5.D_E_L_E_T_ = ' ' "
  729. APWExOpenQuery(ChangeQuery(cQry),'QRX',.T.)
  730. While QRX->(!Eof())
  731. 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>'
  732. QRX->(dbSkip())
  733. End
  734. QRX->(dbCloseArea())
  735. Return cLista
  736. /*__________________________________________________________________________
  737. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  738. ¦¦+-----------------------------------------------------------------------+¦¦
  739. ¦¦¦Funçäo ¦ ListaCli ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 17.10.23 ¦¦¦
  740. ¦¦+----------+------------------------------------------------------------¦¦¦
  741. ¦¦¦Descriçäo ¦ Busca a lista de clientes ativos ¦¦¦
  742. ¦¦+-----------------------------------------------------------------------+¦¦
  743. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  744. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  745. User Function ListaCli(cCodVend,cSelecionado,cOptIE)
  746. Local cQuery:= ""
  747. Local cLista:= ""
  748. cQuery := " Select A1_COD, A1_LOJA, A1_CGC, A1_NOME, A1_TIPO, A1_CODMUN, A1_MUN, A1_COND "
  749. cQuery += " From "+RetSqlName("SA1")+" SA1 "
  750. cQuery += " Where A1_FILIAL = '"+xFilial("SA1")+"' "
  751. cQuery += " AND ( "
  752. If HttpSession->Tipo = 'S' //Supervisor acessa todos os clientes da sua equipe
  753. cQuery+= " A1_REGIAO = '"+HttpSession->Regional+"' "
  754. //cQuery+= " A1_VEND in "+FormatIn(HttpSession->Equipe,"|")+" "
  755. Else
  756. If !Empty(cCodVend)
  757. cQuery+= " A1_VEND = '"+cCodVend+"'" // OR A1_VEND2 = '"+cCodVend+"' OR A1_VEND3= '"+cCodVend+"' OR A1_VEND4= '"+cCodVend+"' OR A1_VEND5 = '"+cCodVend+"' ) "
  758. Else
  759. cQuery+= " A1_VEND <> '' "
  760. Endif
  761. Endif
  762. cQuery += " OR A1_VEND = ' ' )"
  763. If cOptIE = 'S'
  764. cQuery += " And A1_IENCONT = '1' " //destaca IE = sim
  765. Else
  766. cQuery += " And A1_IENCONT <> '1' "
  767. Endif
  768. cQuery += " And A1_MSBLQL <> '1' "
  769. cQuery += " And SA1.D_E_L_E_T_ = ' ' "
  770. cQuery += " Order by A1_NOME "
  771. conout("query clientes:"+cquery)
  772. If Select("QRY") > 0
  773. QRY->(dbCloseArea())
  774. Endif
  775. APWExOpenQuery(ChangeQuery(cQuery),'QRY',.T.)
  776. While QRY->(!EOF())
  777. 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>'
  778. QRY->(dbSkip())
  779. End
  780. APWExCloseQuery('QRY')
  781. Return cLista
  782. /*__________________________________________________________________________
  783. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  784. ¦¦+-----------------------------------------------------------------------+¦¦
  785. ¦¦¦Funçäo ¦ ListaOpt ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 17.10.23 ¦¦¦
  786. ¦¦+----------+------------------------------------------------------------¦¦¦
  787. ¦¦¦Descriçäo ¦ Busca a lista de oportunidades ¦¦¦
  788. ¦¦+-----------------------------------------------------------------------+¦¦
  789. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  790. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  791. User Function ListaOpt(cCodVend,cSelecionado)
  792. Local cQuery:= ""
  793. Local cLista:= ""
  794. cQuery := " Select AD1_NROPOR,AD1_REVISA, AD1_DESCRI, AD1_DESCCI, AD1_NOMPAR"
  795. cQuery += " From "+RetSqlName("AD1")+" AD1 "
  796. cQuery += " Where AD1_FILIAL = '"+xFilial("AD1")+"' "
  797. //cQuery += " And AD1_HOMOLO = '3' " //Status homologação = homologado
  798. cQuery += " And AD1.D_E_L_E_T_ = ' ' "
  799. cQuery += " Order by AD1_NROPOR "
  800. conout("query oportunidade:"+cquery)
  801. If Select("QRYAD1") > 0
  802. QRYAD1->(dbCloseArea())
  803. Endif
  804. APWExOpenQuery(ChangeQuery(cQuery),"QRYAD1",.T.)
  805. While QRYAD1->(!EOF())
  806. cLista+='<option value="'+Alltrim(QRYAD1->AD1_NROPOR)+'">'+QRYAD1->AD1_NROPOR+'/'+Alltrim(QRYAD1->AD1_REVISA)+'/'+;
  807. Alltrim(u_RemEspec(QRYAD1->AD1_DESCRI))+'/'+Alltrim(u_RemEspec(QRYAD1->AD1_DESCCI))+'/'+Alltrim(u_RemEspec(QRYAD1->AD1_NOMPAR))+'</option>'
  808. QRYAD1->(dbSkip())
  809. End
  810. APWExCloseQuery('QRYAD1')
  811. Return cLista
  812. /*__________________________________________________________________________
  813. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  814. ¦¦+-----------------------------------------------------------------------+¦¦
  815. ¦¦¦Funçäo ¦ ListaNeg ¦ Autor ¦ Lucilene Mendes ¦ Data ¦24.08.24 ¦¦¦
  816. ¦¦+----------+------------------------------------------------------------¦¦¦
  817. ¦¦¦Descriçäo ¦ Retorna lista de select com os negociadores ¦¦¦
  818. ¦¦+-----------------------------------------------------------------------+¦¦
  819. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  820. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  821. User Function ListaNeg(cOpcSel)
  822. Local cLista:= ""
  823. cQry:= " Select Z68_COD, Z68_NOME "
  824. cQry+= " From "+RetSqlName("Z68")+" Z68 "
  825. cQry+= " Where Z68_FILIAL = '"+xFilial("Z68")+"' "
  826. cQry+= " And Z68_MSBLQL <> '1' "
  827. cQry+= " And Z68.D_E_L_E_T_ = ' ' "
  828. APWExOpenQuery(ChangeQuery(cQry),'QRN',.T.)
  829. While QRN->(!Eof())
  830. 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>'
  831. QRN->(dbSkip())
  832. End
  833. QRN->(dbCloseArea())
  834. Return cLista
  835. /*__________________________________________________________________________
  836. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  837. ¦¦+-----------------------------------------------------------------------+¦¦
  838. ¦¦¦Funçäo ¦ RemEspec ¦ Autor ¦ Lucilene Mendes ¦ Data ¦17.08.17 ¦¦¦
  839. ¦¦+----------+------------------------------------------------------------¦¦¦
  840. ¦¦¦Descriçäo ¦ Remove caracteres especiais ¦¦¦
  841. ¦¦+-----------------------------------------------------------------------+¦¦
  842. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  843. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  844. */
  845. User Function RemEspec(cTexto)
  846. Local aNoChar:= {'<','>','+',"'"} //,"'",'"','&','+'}
  847. Local i:= 0
  848. For i:= 1 to Len(aNoChar)
  849. If aNoChar[i] $ cTexto
  850. cTexto:= StrTran(cTexto,aNoChar[i],"")
  851. Endif
  852. Next
  853. Return cTexto
  854. /*__________________________________________________________________________
  855. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  856. ¦¦+-----------------------------------------------------------------------+¦¦
  857. ¦¦¦Funçäo ¦ SlvOrc ¦ Autor ¦ Lucilene Mendes ¦ Data ¦17.08.17 ¦¦¦
  858. ¦¦+----------+------------------------------------------------------------¦¦¦
  859. ¦¦¦Descriçäo ¦ Gera a cotação. ¦¦¦
  860. ¦¦+-----------------------------------------------------------------------+¦¦
  861. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  862. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  863. */
  864. User Function SlvOrc()
  865. Local cHtml
  866. Local nOpc := 3 // 3- Incluir / 4- Alterar / 5- Excluir
  867. Local cCondPag := ""
  868. Local cTabela := ""
  869. Local cCliente := ""
  870. Local cLoja := ""
  871. Local cMsg := ""
  872. Local cTransp := ""
  873. Local cSerieNF := ""
  874. Local dValidade := ""
  875. Local cItens := ""
  876. Local cDestOrc := ""
  877. Local cMsgIn := ""
  878. Local cMensagem := ""
  879. Local x := 0
  880. Local i := 0
  881. Local nTotSck := 0
  882. Local nPosLin := 0
  883. Local nDesc1 := 0
  884. Local cDirOrc := "\anexosPortal\orcamento\"
  885. Local cDirErro := "\erro\"
  886. Local aItens := {}
  887. Local cNumSCJ := ""
  888. Local lRet := .T.
  889. Local cSaveVend
  890. local lEnvEmail := .f.
  891. local lComisTR
  892. Private cReturn
  893. Private aCabSCJ :={}
  894. Private aItemSCJ:={}
  895. Private aLinhaSCJ:={}
  896. Private lMsErroAuto:= .F.
  897. Private cCodLogin := ""
  898. Private cVendLogin:= ""
  899. Private n:= 0
  900. Web Extended Init cHtml Start U_inSite()
  901. cVendLogin := u_GetUsrPR()
  902. cCodLogin := U_SetParPR(cVendLogin)
  903. //Verifica se não perdeu a sessão
  904. If type("HttpSession->CodVend") = "U" .or. Empty(HttpSession->CodVend)
  905. conout(Procname()+"("+ltrim(str(procline()))+") *** Portal "+"Sessao encerrada")
  906. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_SMSPortal.apw">'
  907. return cHtml
  908. Endif
  909. //Verifica se existe pedido lançado para o cliente nos últimos 3 minutos.
  910. /*
  911. If Empty(HttpPost->CJ_NUM)
  912. cQry:= "Select * from "+RetSqlName("SCJ")+" SCJ "
  913. cQry+= "Where CJ_FILIAL = '"+xFilial("SCJ")+"' "
  914. cQry+= "And CJ_CLIENTE = '"+Left(HttpPost->CJ_CLIENTE,9)+"' "
  915. cQry+= "And CJ_LOJA = '"+Right(HttpPost->CJ_CLIENTE,4)+"' "
  916. cQry+= "And CJ_EMISSAO = '"+dtos(dDataBase)+"' "
  917. cQry+= "And CJ_COTCLI >= '"+StrTran(StrZero(SubHoras(Time(),'00:03:00'),5,2),'.',':')+":00"+"' "
  918. cQry+= "And SCJ.D_E_L_E_T_ = ' ' "
  919. If Select("QRH") > 0
  920. QRH->(dbCloseArea())
  921. Endif
  922. conout("Hora: "+Time()+" Vend: "+HttpSession->CodVend+" --> "+cqry)
  923. APWExOpenQuery(ChangeQuery(cQry),'QRH',.T.)
  924. If Contar("QRH","!Eof()") > 0
  925. cHtml:= ""
  926. Return cHtml
  927. Endif
  928. Endif
  929. */
  930. If nOpc = 3
  931. INCLUI := .T.
  932. Else
  933. ALTERA := .T.
  934. Endif
  935. //Variáveis do cabeçalho
  936. lComisTR := GetMv("LC_415TVRT",,.F.)
  937. cFilOrc := Iif(Type("HttpPost->CJ_FILIAL") <> "U",HttpPost->CJ_FILIAL,'')
  938. cNumSCJ := Iif(Type("HttpPost->CJ_NUM") <> "U",HttpPost->CJ_NUM,'')
  939. cTabela:= HttpPost->CJ_TABELA
  940. cCliente:= Left(HttpPost->CJ_CLIENTE,6)
  941. cLoja:= Right(HttpPost->CJ_CLIENTE,6)
  942. cOport:= HttpPost->CJ_NROPOR
  943. cRevOpt:= Iif(Type("HttpPost->CJ_REVISA") <> "U",HttpPost->CJ_REVISA,'')
  944. cGrpTrib:= Iif(Type("HttpPost->CJ_GRPTRIB") <> "U",HttpPost->CJ_GRPTRIB,'')
  945. cContato:= Upper(HttpPost->CJ_XCONTAT)
  946. cContDDD:= HttpPost->CJ_XCONDDD
  947. cContTel:= HttpPost->CJ_XCONTEL
  948. cCliEnt:= Left(HttpPost->CJ_CLIENT,6)
  949. cLjEnt:= Right(HttpPost->CJ_CLIENT,2)
  950. cUFEnt:= Iif(Type("HttpPost->CJ_UFENT")<>"U",HttpPost->CJ_UFENT,"")
  951. cObra:= Iif(Type("HttpPost->CJ_OBRA")<>"U",Upper(HttpPost->CJ_OBRA),"")
  952. cTpObra:= Iif(Type("HttpPost->CJ_YOBRATP")<>"U",Alltrim(HttpPost->CJ_YOBRATP),"")
  953. cVend6:= Iif(Type("HttpPost->CJ_VEND6")<>"U",HttpPost->CJ_VEND6,"")
  954. cTermom:= Iif(Type("HttpPost->CJ_TERMOME")<>"U",HttpPost->CJ_TERMOME,"")
  955. cCondPag:= Iif(Type("HttpPost->CJ_CONDPAG")<>"U",HttpPost->CJ_CONDPAG,"B13")
  956. cCliInt:= Iif(Type("HttpPost->CJ_CLIINTE") <> "U",HttpPost->CJ_CLIINTE,'')
  957. dRetorno:= ctod(Iif(Type("HttpPost->CJ_RETORNO")<>"U",HttpPost->CJ_RETORNO,""))
  958. cEstudo:= Iif(Type("HttpPost->CJ_LUMINOT") <> "U",HttpPost->CJ_LUMINOT,'')
  959. cEstNum:= Iif(Type("HttpPost->CJ_REGLUMI") <> "U",HttpPost->CJ_REGLUMI,'')
  960. cSegmento:= Iif(Type("HttpPost->CJ_SEGMENT") <> "U",HttpPost->CJ_SEGMENT,'')
  961. cProspec:= Iif(Type("HttpPost->CJ_PROPECC") <> "U",HttpPost->CJ_PROPECC,'')
  962. cProspCod:= Iif(Type("HttpPost->CJ_PROSCOD") <> "U",HttpPost->CJ_PROSCOD,'')
  963. cRegional:= Iif(Type("HttpPost->CJ_REGIAO")<>"U",HttpPost->CJ_REGIAO,"")
  964. cVendedor:= Iif(Type("HttpPost->CJ_VEND") <> "U",HttpPost->CJ_VEND,'')
  965. cVend3:= Iif(Type("HttpPost->CJ_VEND3")<>"U",HttpPost->CJ_VEND3,"")
  966. cVend4:= Iif(Type("HttpPost->CJ_VEND4")<>"U",HttpPost->CJ_VEND4,"")
  967. cCodEsp:= Iif(Type("HttpPost->CJ_CODESP")<>"U",HttpPost->CJ_CODESP,"")
  968. cVend7:= Iif(Type("HttpPost->CJ_VEND7")<>"U",HttpPost->CJ_VEND7,"")
  969. dValidade:= ctod(Iif(Type("HttpPost->CJ_VALIDA")<>"U",HttpPost->CJ_VALIDA,""))
  970. cPrzEmb:= Iif(Type("HttpPost->CJ_PRZEMB")<>"U",HttpPost->CJ_PRZEMB,"")
  971. cTipoFrete := Iif(Type("HttpPost->CJ_TPFRETE") <> "U",HttpPost->CJ_TPFRETE,"")
  972. nPercFrete := Iif(Type("HttpPost->CJ_PERCFRT") <> "U",val(HttpPost->CJ_PERCFRT),0)
  973. nFrete:= Iif(Type("HttpPost->CJ_FRETE")<>"U",Val(StrTran(StrTran(HttpPost->CJ_FRETE,'.',''),',','.')),0)
  974. nRT:= Iif(Type("HttpPost->CJ_COMISTR")<>"U",Val(StrTran(StrTran(HttpPost->CJ_COMISTR,'.',''),',','.')),0)
  975. cObs:= Iif(Type("HttpPost->CJ_OBS") <> "U",HttpPost->CJ_OBS,"")
  976. nDescDir:= Iif(Type("HttpPost->CJ_DSDIRET")<>"U",Val(StrTran(StrTran(HttpPost->CJ_DSDIRET,'.',''),',','.')),0)
  977. nTotSck := val(HttpPost->PROXIMO)
  978. cItens:= HttpPost->aItens
  979. nOpc:= Val(HttpPost->OPCAO)
  980. For x:= 1 to nTotSck
  981. nPosLin:= At("||",cItens)-1
  982. If nPosLin > 0
  983. aLinha:= Separa(Substr(cItens,1,nPosLin),";")
  984. cItens:= Substr(cItens,nPosLin+3)
  985. If Len(aLinha) > 0
  986. aAdd(aItens,aLinha)
  987. Endif
  988. Endif
  989. aLinha:= {}
  990. Next
  991. //Posiciona nas tabelas
  992. If !Empty(cCondPag)
  993. Posicione("SE4",1,xFilial("SE4")+cCondPag,"E4_COND")
  994. Endif
  995. If !Empty(cTabela)
  996. Posicione("DA0",1,xFilial("DA0")+cTabela,"DA0_CODTAB")
  997. //lPneu := Iif(DA0->DA0_XPOLIM = '1', .F.,.T.)
  998. Endif
  999. If !Empty(cCliente)
  1000. Posicione("SA1",1,xFilial("SA1")+Alltrim(HttpPost->CJ_CLIENTE),"A1_COD")
  1001. Endif
  1002. If !Empty(cOport)
  1003. Posicione("AD1",1,xFilial("AD1")+Alltrim(cOport),"AD1_NROPOR")
  1004. Endif
  1005. //Monta o cabeçalho
  1006. If !Empty(cNumSCJ) .and. nOpc = 4
  1007. SCJ->(dbSetOrder(1)) // CJ_FILIAL+CJ_NUM
  1008. If SCJ->(dbSeek(cFilOrc+cNumSCJ))
  1009. If cFilOrc <> cFilAnt
  1010. u_PtTrocaFil(cFilOrc)
  1011. Endif
  1012. endif
  1013. cFilAnt := xFilial("SCJ")
  1014. // aadd(aCabSCJ,{"CJ_FILIAL",xFilial("SCJ"),Nil})
  1015. aadd(aCabSCJ,{"CJ_NUM",cNumSCJ,Nil})
  1016. Else
  1017. aadd(aCabSCJ,{"CJ_COTCLI",Time(),Nil})
  1018. EndIf
  1019. aadd(aCabSCJ,{"CJ_CLIENTE",SA1->A1_COD,Nil})
  1020. aadd(aCabSCJ,{"CJ_LOJA", SA1->A1_LOJA ,Nil})
  1021. aadd(aCabSCJ,{"CJ_CONDPAG",cCondPag ,Nil})
  1022. If !Empty(nDescDir)
  1023. aadd(aCabSCJ,{"CJ_DSDIRET" ,nDescDir,Nil})
  1024. Endif
  1025. aadd(aCabSCJ,{"CJ_UFENT",cUFEnt ,Nil})
  1026. aadd(aCabSCJ,{"CJ_OBRA",cObra ,Nil})
  1027. aadd(aCabSCJ,{"CJ_YOBRATP",cTpObra ,Nil})
  1028. aadd(aCabSCJ,{"CJ_NROPOR",cOport,Nil})
  1029. aadd(aCabSCJ,{"CJ_REVISA",cRevOpt ,Nil})
  1030. aadd(aCabSCJ,{"CJ_REGIAO",cRegional ,Nil})
  1031. aadd(aCabSCJ,{"CJ_VEND",cVendedor ,Nil})
  1032. aadd(aCabSCJ,{"CJ_VEND3",cVend3 ,Nil})
  1033. aadd(aCabSCJ,{"CJ_VEND4",cVend4 ,Nil})
  1034. aadd(aCabSCJ,{"CJ_CODESP",cCodEsp ,Nil})
  1035. aadd(aCabSCJ,{"CJ_ESPECIF",fDesc("SX5","Z1"+cCodEsp,"X5_DESCRI"),Nil})
  1036. aadd(aCabSCJ,{"CJ_CLIENT",cCliEnt ,Nil})
  1037. aadd(aCabSCJ,{"CJ_LOJAENT",cLjEnt ,Nil})
  1038. aadd(aCabSCJ,{"CJ_VEND6",cVend6 ,Nil})
  1039. aadd(aCabSCJ,{"CJ_VEND7",cVend7 ,Nil})
  1040. aadd(aCabSCJ,{"CJ_PRZEMB",cPrzEmb ,Nil})
  1041. aadd(aCabSCJ,{"CJ_TPFRETE" ,cTipoFrete,Nil})
  1042. //aadd(aCabSCJ,{"CJ_GRPTRIB" ,cGrpTrib,Nil})
  1043. aadd(aCabSCJ,{"CJ_OBS",AllTrim(decodeutf8(HttpPost->CJ_OBS)),Nil})
  1044. aadd(aCabSCJ,{"CJ_VALIDA",dValidade ,Nil})
  1045. aadd(aCabSCJ,{"CJ_COMISTR" ,nRT,Nil})
  1046. aadd(aCabSCJ,{"CJ_PERCFRT" ,nPercFrete,Nil})
  1047. aadd(aCabSCJ,{"CJ_FRETE" ,nFrete,Nil})
  1048. aadd(aCabSCJ,{"CJ_LUMINOT",cEstudo ,Nil})
  1049. aadd(aCabSCJ,{"CJ_REGLUMI",cEstNum ,Nil})
  1050. aadd(aCabSCJ,{"CJ_SEGMENT",cSegmento ,Nil})
  1051. aadd(aCabSCJ,{"CJ_RETORNO",dRetorno ,Nil})
  1052. aadd(aCabSCJ,{"CJ_TERMOME",cTermom ,Nil})
  1053. aadd(aCabSCJ,{"CJ_CLIINTE",cCliInt ,Nil})
  1054. aadd(aCabSCJ,{"CJ_PROPECC",cProspec ,Nil})
  1055. aadd(aCabSCJ,{"CJ_PROSCOD",cProspCod ,Nil})
  1056. aadd(aCabSCJ,{"CJ_XCONTAT",cContato ,Nil})
  1057. aadd(aCabSCJ,{"CJ_XCONDDD",cContDDD ,Nil})
  1058. aadd(aCabSCJ,{"CJ_XCONTEL",cContTel ,Nil})
  1059. aadd(aCabSCJ,{"CJ_USUARIO",HttpSession->Nome ,Nil})
  1060. //aadd(aCabSCJ,{"CJ_TABELA" ,cTabela,Nil})
  1061. //Cria as variáveis de memória
  1062. //RegtoMemory("SCJ")
  1063. //For i:=1 to Len(aCabSCJ)
  1064. // M->&(aCabSCJ[i,1]) := aCabSCJ[i,2]
  1065. //Next
  1066. //Monta os itens
  1067. dbSelectArea("SB1")
  1068. SB1->(dbSetorder(1))
  1069. If ValType(aItens) == "A" .and. Len(aItens) > 0
  1070. For i:=1 to Len(aItens)
  1071. If ValType(aItens[i,1]) == 'C'
  1072. aLinhaSCJ:={}
  1073. cItem:= StrZero(i,TamSX3("CK_ITEM")[1])
  1074. cProdSck:= PadR(aItens[i,1], TamSX3("CK_PRODUTO")[1])
  1075. nQuantSck := val(StrTran(StrTran(aItens[i,2],".",""),",","."))//val(aItens[i,2])
  1076. cObsSck:= PadR(aItens[i,3], TamSX3("CK_OBS")[1])
  1077. cPrzSck:= aItens[i,4]
  1078. nPrcVen := aItens[i,5]
  1079. nPrcVen := val(StrTran(StrTran(nPrcVen,".",""),",","."))
  1080. nPrcImp := val(StrTran(StrTran(aItens[i,6],".",""),",","."))
  1081. nValIPI := val(StrTran(StrTran(aItens[i,7],".",""),",","."))
  1082. nValICMS := val(StrTran(StrTran(aItens[i,8],".",""),",","."))
  1083. nValST := val(StrTran(StrTran(aItens[i,9],".",""),",","."))
  1084. nAliICMS:= val(StrTran(StrTran(aItens[i,10],".",""),",","."))
  1085. nAliIPI:= val(StrTran(StrTran(aItens[i,11],".",""),",","."))
  1086. nAliST:= val(StrTran(StrTran(aItens[i,12],".",""),",","."))
  1087. cTes:= aItens[i,13]
  1088. nCusto:= val(StrTran(StrTran(aItens[i,14],".",""),",","."))
  1089. cNomDire:= PadR(aItens[i,15], TamSX3("CK_NOMDIRE")[1])
  1090. nPerCom:= val(StrTran(StrTran(aItens[i,16],".",""),",","."))
  1091. nValCom:= val(StrTran(StrTran(aItens[i,17],".",""),",","."))
  1092. nDescont:= Iif(Empty(aItens[i,18]),0,Val(StrTran(aItens[i,18],",",".")))
  1093. If SB1->(dbSeek(xFilial("SB1")+cProdSck)) .and. nQuantSck > 0 .And. nPrcVen > 0 .and. SB1->B1_MSBLQL <> '1'
  1094. aadd(aLinhaScj,{"CK_ITEM" ,cItem,Nil})
  1095. aadd(aLinhaScj,{"CK_PRODUTO",SB1->B1_COD,Nil})
  1096. aadd(aLinhaScj,{"CK_QTDVEN" ,nQuantSck,Nil})
  1097. nPrcVen1:= nPrcVen-(nPrcVen*(nDescont/100))
  1098. aadd(aLinhaScj,{"CK_PRTAB" ,A410Arred(nPrcVen, "CK_PRCVEN"),Nil})
  1099. aadd(aLinhaScj,{"CK_PRUNIT" ,A410Arred(nPrcVen, "CK_PRUNIT"),Nil})
  1100. aadd(aLinhaScj,{"CK_DESCONT",nDescont,Nil})
  1101. aadd(aLinhaScj,{"CK_DESCACM",nDescont,Nil})
  1102. aadd(aLinhaScj,{"CK_PRCVEN" ,A410Arred(nPrcVen1, "CK_PRCVEN"),Nil})
  1103. //aadd(aLinhaScj,{"CK_PRCVEN" ,A410Arred(nPrcVen1, "CK_PRCVEN"),Nil})
  1104. aadd(aLinhaScj,{"CK_PRTAB" ,A410Arred(nPrcVen, "CK_PRCVEN"),Nil})
  1105. aadd(aLinhaScj,{"CK_VALOR" ,A410Arred(nQuantSck*A410Arred(nPrcVen1, "CK_PRCVEN"),"CK_VALOR"),Nil})
  1106. aadd(aLinhaScj,{"CK_OBS" ,cObsSck,Nil})
  1107. aadd(aLinhaScj,{"CK_PRZEMB" ,cPrzSck,Nil})
  1108. aadd(aLinhaScj,{"CK_TES" ,cTes,Nil})
  1109. //aadd(aLinhaScj,{"CK_ENTREG" ,dDtEntreg,Nil})
  1110. aadd(aLinhaScj,{"CK_XVALIPI",nValIPI,Nil})
  1111. aadd(aLinhaScj,{"CK_XVALICM",nValICMS,Nil})
  1112. aadd(aLinhaScj,{"CK_XICMST" ,nValST,Nil})
  1113. //aadd(aLinhaScj,{"CK_XALIICM",nAliICMS,Nil})
  1114. //aadd(aLinhaScj,{"CK_XALIIPI",nAliIPI,Nil})
  1115. //aadd(aLinhaScj,{"CK_XALIST ",nAliST,Nil})
  1116. If !Empty(cNomDire)
  1117. aadd(aLinhaScj,{"CK_NOMDIRE",cNomDire,Nil})
  1118. Endif
  1119. If !Empty(nCusto)
  1120. aadd(aLinhaScj,{"CK_CUSTO" ,nCusto,Nil})
  1121. Endif
  1122. aadd(aItemScj,aLinhaScj)
  1123. Else
  1124. lRet:= .F.
  1125. Endif
  1126. Endif
  1127. Next
  1128. //Chama execauto para inclusão do orçamento
  1129. If Len(aCabSCJ) > 0 .and. Len(aItemSCJ) > 0 .and. lRet
  1130. lMsErroAuto:= .F.
  1131. MATA415(aCabSCJ,aItemSCJ,nOpc)
  1132. Else
  1133. If !Empty(cNumSCJ)
  1134. conout(Procname()+"("+ltrim(str(procline()))+") *** Portal "+"FALHA AO INCLUIR O ORÇAMENTO. REFAÇA A OPERAÇÃO!")
  1135. Else
  1136. conout(Procname()+"("+ltrim(str(procline()))+") *** Portal "+"FALHA AO ALTERAR O ORÇAMENTO. REFAÇA A OPERAÇÃO!")
  1137. EndIf
  1138. lRet := .F.
  1139. Endif
  1140. If lMsErroAuto
  1141. If !ExistDir(cDirErro)
  1142. MakeDir(cDirErro)
  1143. Endif
  1144. cDirErro+=dtos(date())
  1145. If !ExistDir(cDirErro)
  1146. MakeDir(cDirErro)
  1147. Endif
  1148. //Grava o erro
  1149. cMsg:= MostraErro(cDirErro,"erro_orcto_"+strtran(time(),":","")+"_"+cFilAnt+".txt")
  1150. cDestMail:= GetNewPar("PR_DESTORE ","matheus.lopes@smsti.com.br")
  1151. u_MailCM("ERRO ORCAMENTO",{cDestMail},{},"ERRO ORCAMENTO NO PORTAL",cMsg,"","")
  1152. cHtml:= "erro"
  1153. Else
  1154. cHtml:= SCJ->CJ_NUM+"<br><br>"
  1155. cDestOrc := GetNewPar("PR_DESTORC","")
  1156. //Envia e-mail informando a inclusão do orçamento
  1157. If !Empty(cDestOrc) .and. (nOpc = 3 .or. lEnvEmail) //não envia para orçamento previsto
  1158. cMsg:= "Um novo orçamento foi gerado pelo Portal do Representante.<br><br>"
  1159. cMsg+= "Filial: "+SCJ->CJ_FILIAL+"<br>"
  1160. cMsg+= "Número: "+SCJ->CJ_NUM+"<br> "
  1161. cMsg+= "Vendedor: "+SCJ->CJ_VEND+" - "+Alltrim(Posicione("SA3",1,xFilial("SA3")+SCJ->CJ_VEND,"A3_NOME"))+"<br>"
  1162. cMsg+= "Cliente: "+SCJ->CJ_CLIENTE+"/"+SCJ->CJ_LOJA+" - "+Posicione("SA1",1,+xFilial("SA1")+SCJ->CJ_CLIENTE+SCJ->CJ_LOJA,"A1_NOME")+"<br>"
  1163. u_MailCM("ORÇAMENTO",{cDestOrc},{},"NOVO ORCAMENTO PORTAL: "+SCJ->CJ_FILIAL+"/"+SCJ->CJ_NUM+" - "+;
  1164. trim(Posicione("SA1",1,+xFilial("SA1")+SCJ->CJ_CLIENTE+SCJ->CJ_LOJA,"A1_NOME")),cMsg,"","")
  1165. Endif
  1166. //////////////
  1167. // Envia e-Mail para supervisoras dos clientes que ficaram ativos.
  1168. If Empty(SA1->A1_ULTORCA) .OR. (dDataBase - SA1->A1_ULTORCA) > 365
  1169. cMensagem := "Cliente Ativado pelo Orçamento: " + AllTrim(SCJ->CJ_NUM) + CRLF+CRLF
  1170. cMensagem += "Cliente: " + AllTrim(SA1->A1_COD)+"-"+AllTrim(SA1->A1_NOME) + CRLF
  1171. cMensagem += "Representante: " + AllTrim(SCJ->CJ_VEND)+'-'+AllTrim(Posicione("SA3",1,xFilial('SA3')+SCJ->CJ_VEND,"A3_NOME")) + CRLF
  1172. cMensagem += "Regional: " + AllTrim(SCJ->CJ_REGIAO)+'-'+AllTrim(Posicione("SA3",1,xFilial('SA3')+SCJ->CJ_REGIAO,"A3_NOME")) + CRLF
  1173. cMensagem += "Pré-Resgate: " + IIF(!Vazio(Trim(SA1->A1_USUPRER)),Trim(SA1->A1_USUPRER)+ " em: "+DToC(SA1->A1_DTPRERE),'-*-*-*-*-') + CRLF
  1174. // (Destino , Com Copia , Com Copia Oculta , assunto , Mensagem Corpo, Anexos)
  1175. U_EnvMail("regiane.almeida@lumicenter.com" , ,"" ,"e-Mail Automático. Cliente Ativado - Engenharia." ,cMensagem,"")
  1176. EndIf
  1177. // Grava data do último orçamento.
  1178. RecLock("SA1",.F.)
  1179. SA1->A1_ULTORCA := dDataBase
  1180. MsUnlock("SA1")
  1181. // trata revisoes conforme ORCA1000
  1182. if Type("HttpPost->RECCJANT") <> "U" .and. val(HttpPost->RECCJANT) > 0
  1183. //Posiciona no orçamento
  1184. dbSelectArea("SCJ")
  1185. CONOUT(httpPost->RECCJANT)
  1186. SCJ->(dbGoTo(val(httpPost->RECCJANT)))
  1187. Reclock("SCJ",.F.)
  1188. SCJ->CJ_DSCPERD := "REVISAO"
  1189. SCJ->CJ_DTCANC:= dDataBase
  1190. SCJ->CJ_STATUS:= 'C'
  1191. msUnlock()
  1192. // Verifica se existe Etapas da Negociação.
  1193. If Select("QRY") > 0
  1194. QRY->(DbCloseArea())
  1195. Endif
  1196. cQuery := "SELECT * FROM "+RetSQLName('SZW')+" WHERE D_E_L_E_T_ = ' ' AND ZW_ORCAMEN = '" + cNumSCJ + "' AND ZW_FILIAL = "+xFilial('SZW')+" "
  1197. TcQuery cQuery New Alias "QRY"
  1198. While QRY->(!EOF())
  1199. RecLock("SZW",.T.)
  1200. SZW->ZW_FILIAL := '01'
  1201. SZW->ZW_ORCAMEN := cNumSCJ
  1202. SZW->ZW_DATA := SToD(QRY->ZW_DATA)
  1203. SZW->ZW_HORA := QRY->ZW_HORA
  1204. SZW->ZW_USUARIO := QRY->ZW_USUARIO
  1205. SZW->ZW_HISTOR := QRY->ZW_HISTOR
  1206. MsUnlock("SZW")
  1207. QRY->(dbSkip())
  1208. EndDo
  1209. // se comissao rt com parceiro na tabela z81
  1210. If lComisTR
  1211. // copia parceiros da comissao rt
  1212. CopiarZ81(cNumSCJ,SCJ->CJ_NUM)
  1213. Endif
  1214. // Gravar tabelas de Auditoria. Fonseca --> Solicitante Rodrigo.
  1215. 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") + "'"
  1216. If TCSqlExec(cSQLExec) < 0
  1217. Msgstop('Erro Revisão AUDIT_SCJ. ORCA1000' + Chr(13) + TCSQLError(),'Erro !!!')
  1218. Endif
  1219. 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") + "'"
  1220. If TCSqlExec(cSQLExec) < 0
  1221. Msgstop('Erro Revisão AUDIT_SCK. ORCA1000' + Chr(13) + TCSQLError(),'Erro !!!')
  1222. Endif
  1223. ENDIF
  1224. EndIf
  1225. Else
  1226. cHtml:= "erro"
  1227. Endif
  1228. Web Extended End
  1229. Return (cHTML)
  1230. //Troca a filial logada
  1231. User Function PtTrocaFil(cNovaFil)
  1232. If cNovaFil <> cFilAnt
  1233. HttpSession->Filial:= cNovaFil
  1234. u_InSite(.f.)
  1235. Endif
  1236. Return
  1237. /*__________________________________________________________________________
  1238. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1239. ¦¦+-----------------------------------------------------------------------+¦¦
  1240. ¦¦¦Funçäo ¦ GetLikePro ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1241. ¦¦+----------+------------------------------------------------------------¦¦¦
  1242. ¦¦¦Descriçäo ¦ Busca os produtos de acordo com chave de busca ¦¦¦
  1243. ¦¦+-----------------------------------------------------------------------+¦¦
  1244. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1245. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1246. */
  1247. User Function GetLikePro()
  1248. Local cHtml
  1249. Local cTabela:= HttpPost->TABELA
  1250. Local cProds := ""
  1251. Local cGrupo := ""
  1252. Local cDescDig := HttpPost->DIGIT
  1253. Local lValidaMP
  1254. Local cGrpTribNP
  1255. Web Extended Init cHtml Start U_inSite()
  1256. // TODO - Pedro 20210208 - Remover???
  1257. If Empty(HttpSession->CodVend)
  1258. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1259. Return cHtml
  1260. endif
  1261. conout("******************* prod busca antes -->> "+cDescDig)
  1262. //Atualiza a variável de sessão
  1263. HttpSession->TABELA := cTabela
  1264. cDescDig:= FwNoAccent(Upper(DecodeUTF8(cDescDig)))
  1265. conout("******************* tabela -->> "+cTabela)
  1266. conout("******************* prod busca -->> "+cDescDig)
  1267. lValidaMP := GetMV("LC_FA1059A",, .F.)
  1268. cGrpTribNP:= GetMV("LC_FA1059B",, "990/996") //grupos tributarios não permitidos
  1269. cQry:="Select DA1_CODTAB, B1_GRUPO, BM_DESC, DA1_CODPRO, B1_DESC "
  1270. cQry+=" From "+RetSqlName("DA1")+" DA1"
  1271. 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_ = ' ' "
  1272. 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_ = ' ' "
  1273. cQry+=" INNER JOIN "+RetSqlName("SBM")+" SBM ON BM_FILIAL = '"+xFilial("SBM")+"' AND B1_GRUPO = BM_GRUPO AND SBM.D_E_L_E_T_ = ' ' "
  1274. cQry+=" Where DA1_FILIAL = '"+xFilial("DA1")+"' "
  1275. cQry+=" And DA1_CODTAB = '"+cTabela+"' "
  1276. cQry+=" AND DA1_ATIVO = '1' "
  1277. cQry+=" AND DA1_PRCVEN > 0 "
  1278. CQry+=" AND (B1_DESC LIKE '%"+cDescDig+"%' OR B1_COD LIKE '%"+cDescDig+"%') "
  1279. cQry+=" AND B1_GRTRIB NOT IN "+FormatIn(cGrpTribNP,"/")+" "
  1280. cQry+=" AND DA1.D_E_L_E_T_ = ' ' "
  1281. cQry+=" Order by DA1_CODTAB, B1_GRUPO, B1_COD "
  1282. conout("Query Produtos -->"+cQry)
  1283. If Select("QRP") > 0
  1284. QRP->(dbCloseArea())
  1285. Endif
  1286. APWExOpenQuery(ChangeQuery(cQry),'QRP',.T.)
  1287. //Preenche o select de produtos
  1288. While QRP->(!Eof())
  1289. If Empty(cGrupo)
  1290. cProds+= '<optgroup label="'+Alltrim(Strtran(QRP->BM_DESC,"'",""))+'">
  1291. Elseif !Empty(cGrupo) .and. cGrupo <> QRP->B1_GRUPO
  1292. cProds+= '</optgroup>'
  1293. cProds+= '<optgroup label="'+Alltrim(Strtran(QRP->BM_DESC,"'",""))+'">
  1294. Endif
  1295. cProds+=' <option value="'+Alltrim(QRP->DA1_CODPRO)+'">'+Alltrim(QRP->DA1_CODPRO)+' -- '+u_FormEntities(u_RemEspec(Alltrim(QRP->B1_DESC)))+'</option>'
  1296. cGrupo:= QRP->B1_GRUPO
  1297. QRP->(dbSkip())
  1298. End
  1299. If !Empty(cProds)
  1300. cProds+= '</optgroup>'
  1301. Endif
  1302. cHtml:= cProds
  1303. Web Extended end
  1304. Return cHtml
  1305. /*__________________________________________________________________________
  1306. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1307. ¦¦+-----------------------------------------------------------------------+¦¦
  1308. ¦¦¦Funçäo ¦ GetLikeCli ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1309. ¦¦+----------+------------------------------------------------------------¦¦¦
  1310. ¦¦¦Descriçäo ¦ Busca os clientes de acordo com chave de busca ¦¦¦
  1311. ¦¦+-----------------------------------------------------------------------+¦¦
  1312. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1313. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1314. */
  1315. User Function GetLikeCli()
  1316. Local cHtml
  1317. Local cCliente:= Upper(HttpPost->DIGIT)
  1318. Local cCli := ""
  1319. Web Extended Init cHtml Start U_inSite()
  1320. cVendLogin := u_GetUsrPR()
  1321. cCodLogin := U_SetParPR(cVendLogin)
  1322. cCodVend:=cVendLogin
  1323. // TODO - Pedro 20210208 - Remover???
  1324. If Empty(HttpSession->CodVend)
  1325. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1326. Return cHtml
  1327. endif
  1328. cQuery := " Select A1_COD, A1_LOJA, A1_CGC, A1_NOME, A1_BAIRRO, A1_END, A1_MUN, A1_EST, A1_DDD, A1_TEL, A1_COND "
  1329. cQuery += " From "+RetSqlName("SA1")+" SA1 "
  1330. cQuery += " Where A1_FILIAL = '"+xFilial("SA1")+"' "
  1331. If HttpSession->Tipo = 'S' //Supervisor acessa todos os clientes da sua equipe
  1332. cQuery += " AND A1_REGIAO = '"+HttpSession->Regional+"' "
  1333. Else
  1334. If SA3->A3_TIPO <> "I" //vendedor interno deve exibir todos os clientes
  1335. cQuery+= " AND A1_VEND = '"+cCodVend+"'" // OR A1_VEND2 = '"+cCodVend+"' OR A1_VEND3= '"+cCodVend+"' OR A1_VEND4= '"+cCodVend+"' OR A1_VEND5 = '"+cCodVend+"' ) "
  1336. Endif
  1337. Endif
  1338. cQuery += " And A1_MSBLQL <> '1' "
  1339. cQuery += " And A1_IENCONT = '1' " //destaca IE = sim
  1340. cQuery += " AND (A1_COD LIKE '%"+cCliente+"%' OR A1_CGC LIKE '%"+cCliente+"%' OR A1_NOME LIKE '%"+cCliente+"%') "
  1341. cQuery += " And SA1.D_E_L_E_T_ = ' ' "
  1342. cQuery += " Order by A1_NOME "
  1343. conout("Query Clientes -->"+cQuery)
  1344. If Select("QRCLI") > 0
  1345. QRCLI->(dbCloseArea())
  1346. Endif
  1347. APWExOpenQuery(ChangeQuery(cQuery),'QRCLI',.T.)
  1348. dbSelectArea("QRCLI")
  1349. //Preenche o select de produtos
  1350. While QRCLI->(!Eof())
  1351. cCli+=' <option value="'+Alltrim(QRCLI->A1_COD+QRCLI->A1_LOJA)+'">'+QRCLI->A1_COD+'/';
  1352. +QRCLI->A1_LOJA+' - '+Alltrim(u_FormEntities(QRCLI->A1_NOME))+' - '+QRCLI->A1_CGC+' - '+trim(QRCLI->A1_MUN) +'</option>'
  1353. QRCLI->(dbSkip())
  1354. End
  1355. APWExCloseQuery('QRCLI')
  1356. cHtml:= cCli
  1357. Web Extended end
  1358. Return cHtml
  1359. /*__________________________________________________________________________
  1360. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1361. ¦¦+-----------------------------------------------------------------------+¦¦
  1362. ¦¦¦Funçäo ¦ GetMunUF ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1363. ¦¦+----------+------------------------------------------------------------¦¦¦
  1364. ¦¦¦Descriçäo ¦ Busca os municípios para o estado selecionado ¦¦¦
  1365. ¦¦+-----------------------------------------------------------------------+¦¦
  1366. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1367. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1368. */
  1369. User Function GetMunUF()
  1370. Local cHtml:= ""
  1371. Local cUF:= Alltrim(HttpPost->UF)
  1372. Web Extended Init cHtml Start U_inSite()
  1373. If Empty(HttpSession->CodVend)
  1374. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1375. Return cHtml
  1376. Endif
  1377. cQry:="Select CC2_EST, CC2_CODMUN, CC2_MUN "
  1378. cQry+=" From "+RetSqlName("CC2")+" CC2"
  1379. cQry+=" Where CC2_FILIAL = '"+xFilial("CC2")+"' "
  1380. cQry+=" And CC2_EST = '"+cUF+"' "
  1381. cQry+=" AND CC2.D_E_L_E_T_ = ' ' "
  1382. cQry+=" Order by CC2_MUN"
  1383. If Select("QRP") > 0
  1384. QRP->(dbCloseArea())
  1385. Endif
  1386. APWExOpenQuery(ChangeQuery(cQry),'QRP',.T.)
  1387. //Verifica se existe registro
  1388. While QRP->(!Eof())
  1389. cHtml+=' <option value="'+Alltrim(QRP->CC2_CODMUN)+' - '+Alltrim(QRP->CC2_MUN)+'">'+Alltrim(QRP->CC2_MUN) +'</option>'
  1390. QRP->(dbSkip())
  1391. End
  1392. Web Extended end
  1393. Return cHtml
  1394. /*__________________________________________________________________________
  1395. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1396. ¦¦+-----------------------------------------------------------------------+¦¦
  1397. ¦¦¦Funçäo ¦ GetPerFrt ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1398. ¦¦+----------+------------------------------------------------------------¦¦¦
  1399. ¦¦¦Descriçäo ¦ Busca o percentual de frete da cidade/estado da SZ3 ¦¦¦
  1400. ¦¦+-----------------------------------------------------------------------+¦¦
  1401. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1402. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1403. */
  1404. User Function GetPerFrt()
  1405. Local cHtml
  1406. Local cQry:= ""
  1407. Local cUF:= HttpPost->UF
  1408. Local cCodMun:= HttpPost->MUN
  1409. Web Extended Init cHtml Start U_inSite()
  1410. If Empty(HttpSession->CodVend)
  1411. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1412. Return cHtml
  1413. endif
  1414. //Busca os itens da tabela de preço
  1415. cQry:="Select Z3_PERFRAD "
  1416. cQry+=" From "+RetSqlName("SZ3")+" SZ3"
  1417. cQry+=" Where Z3_FILIAL = '"+xFilial("SZ3")+"' "
  1418. cQry+=" And Z3_UF = '"+cUF+"' "
  1419. cQry+=" AND (Z3_MUNICIP = '"+cCodMun+"' OR Z3_MUNICIP= ' ' ) "
  1420. cQry+=" AND SZ3.D_E_L_E_T_ = ' ' "
  1421. cQry+=" Order by Z3_MUNICIP DESC "
  1422. If Select("QRP") > 0
  1423. QRP->(dbCloseArea())
  1424. Endif
  1425. APWExOpenQuery(ChangeQuery(cQry),'QRP',.T.)
  1426. //Verifica se existe registro
  1427. If QRP->(!Eof())
  1428. cHtml:= cvaltochar(QRP->Z3_PERFRAD)
  1429. Else
  1430. cHtml:= "0"
  1431. Endif
  1432. Web Extended end
  1433. Return cHtml
  1434. /*__________________________________________________________________________
  1435. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1436. ¦¦+-----------------------------------------------------------------------+¦¦
  1437. ¦¦¦Funçäo ¦ GetDadosOpt ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1438. ¦¦+----------+------------------------------------------------------------¦¦¦
  1439. ¦¦¦Descriçäo ¦ Busca o vendedor da oportunidade ¦¦¦
  1440. ¦¦+-----------------------------------------------------------------------+¦¦
  1441. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1442. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1443. */
  1444. User Function GetDadosOpt()
  1445. Local cHtml
  1446. Local cOport:= HttpPost->Oportunidade
  1447. Web Extended Init cHtml Start U_inSite()
  1448. If Empty(HttpSession->CodVend)
  1449. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1450. Return cHtml
  1451. endif
  1452. If AD1->(dbSeek(xFilial("AD1")+cOport))
  1453. cHtml:= "OK|#|"+Alltrim(Transform(AD1->AD1_COMIRT,PesqPict("AD1","AD1_COMIRT")))+"|#|"
  1454. cHtml+= u_ListaVend(.F.,Alltrim(AD1->AD1_VEND))+"|#|"
  1455. cHtml+= Alltrim(DecodeUTF8(AD1->AD1_VEND))
  1456. Else
  1457. cHtml:= ""
  1458. End
  1459. Web Extended end
  1460. Return cHtml
  1461. /*__________________________________________________________________________
  1462. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1463. ¦¦+-----------------------------------------------------------------------+¦¦
  1464. ¦¦¦Funçäo ¦ GetProdutos ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1465. ¦¦+----------+------------------------------------------------------------¦¦¦
  1466. ¦¦¦Descriçäo ¦ Função utilizada no Ajax pra retornar os produtos da tabela¦¦¦
  1467. ¦¦+-----------------------------------------------------------------------+¦¦
  1468. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1469. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1470. */
  1471. User Function GetProdutos()
  1472. Local cHtml
  1473. Local cCliente:= HttpPost->CLIENTE
  1474. Local cTabela:= HttpPost->TABELA
  1475. Local cProds := ""
  1476. Local cGrupo := ""
  1477. Web Extended Init cHtml Start U_inSite()
  1478. If Empty(HttpSession->CodVend)
  1479. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1480. Return cHtml
  1481. endif
  1482. //Atualiza a variável de sessão
  1483. HttpSession->TABELA := cTabela
  1484. //Busca os itens da tabela de preço
  1485. cQry:="Select DA1_CODTAB, B1_GRUPO, BM_DESC, DA1_CODPRO, B1_XDESGIR B1_DESC, B1_PROC "
  1486. cQry+=" From "+RetSqlName("DA1")+" DA1"
  1487. 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_ = ' ' "
  1488. 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_ = ' ' "
  1489. cQry+=" LEFT JOIN "+RetSqlName("SBM")+" SBM ON BM_FILIAL = '"+xFilial("SBM")+"' AND B1_GRUPO = BM_GRUPO AND SBM.D_E_L_E_T_ = ' ' "
  1490. cQry+=" Where DA1_FILIAL = '"+xFilial("DA1")+"' "
  1491. cQry+=" And DA1_CODTAB = '"+cTabela+"' "
  1492. cQry+=" AND DA1_ATIVO = '1' "
  1493. cQry+=" AND DA1_PRCVEN > 0 "
  1494. cQry+=" AND DA1.D_E_L_E_T_ = ' ' "
  1495. cQry+=" Order by DA1_CODTAB, B1_GRUPO, B1_COD "
  1496. If Select("QRP") > 0
  1497. QRP->(dbCloseArea())
  1498. Endif
  1499. APWExOpenQuery(ChangeQuery(cQry),'QRP',.T.)
  1500. //Preenche o select de produtos
  1501. While QRP->(!Eof())
  1502. If Empty(cGrupo)
  1503. cProds+= '<optgroup label="'+Alltrim(Strtran(QRP->BM_DESC,"'",""))+'">
  1504. Elseif !Empty(cGrupo) .and. cGrupo <> QRP->B1_GRUPO
  1505. cProds+= '</optgroup>'
  1506. cProds+= '<optgroup label="'+Alltrim(Strtran(QRP->BM_DESC,"'",""))+'">
  1507. Endif
  1508. cProds+=' <option value="'+Alltrim(QRP->DA1_CODPRO)+'">'+Alltrim(QRP->DA1_CODPRO)+' - '+Alltrim(Strtran(QRP->B1_DESC,"'",""))+' - '+Alltrim(QRP->B1_PROC)+'</option>'
  1509. cGrupo:= QRP->B1_GRUPO
  1510. QRP->(dbSkip())
  1511. End
  1512. If !Empty(cProds)
  1513. cProds+= '</optgroup>'
  1514. Endif
  1515. cHtml:= cProds
  1516. Web Extended end
  1517. Return cHtml
  1518. /*__________________________________________________________________________
  1519. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1520. ¦¦+-----------------------------------------------------------------------+¦¦
  1521. ¦¦¦Funçäo ¦ GatProd ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 05.09.17 ¦¦¦
  1522. ¦¦+----------+------------------------------------------------------------¦¦¦
  1523. ¦¦¦Descriçäo ¦ Gatilho para atualização dos preços ao selecionar o produto¦¦¦
  1524. ¦¦+-----------------------------------------------------------------------+¦¦
  1525. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1526. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1527. */
  1528. User Function GatProd()
  1529. Local cProduto := Alltrim(UnEscape(HttpPost->PRODUTO))
  1530. Local cTabela := Alltrim(HttpSession->Tabela)
  1531. Local cCliente := Alltrim(HttpSession->Cliente)
  1532. Local cSepField := "|#|"
  1533. Local cTes := ""
  1534. Local cMsg := ""
  1535. Local nPercFrt := val(HttpPost->frete)
  1536. Local nComisRT := val(HttpPost->comisRT)
  1537. Local nPrcTab := 0
  1538. Local nQtdFis := 1
  1539. Local nDesc := 0
  1540. Local nValIcms := 0
  1541. Local nBaseIcms := 0
  1542. Local nValST := 0
  1543. Local nBaseST := 0
  1544. Local nValIPI := 0
  1545. Local nBaseIPI := 0
  1546. Local cAliqIPI := 0
  1547. Local cAliqICMS := 0
  1548. Local cAliqST := 0
  1549. Local nQtdMin := 0
  1550. Local aRet := {}
  1551. Local lRetPro := .T.
  1552. Local lVencido := .F.
  1553. Local cHtml
  1554. Private cPrzEmb := ""
  1555. Private nCargIcm := 0
  1556. Private nFatCorr := 0
  1557. nSec:= Seconds()
  1558. Web Extended Init cHtml Start U_inSite()
  1559. Conout("[ADDORC / GATPROD] - tempo Abertura InSite: "+cValtoChar(Seconds()-nSec)+"s")
  1560. //Busca o cadastro do cliente
  1561. Posicione("SA1",1,xFilial("SA1")+cCliente,"A1_COD")
  1562. //Posiciona no cadastro do produto
  1563. Posicione("SB1",1,xFilial("SB1")+cProduto,"B1_COD")
  1564. //Chama a validação customizada do produto
  1565. If ExistBlock("VldPortalSMS")
  1566. cMsgCust:= ""
  1567. lRetPro:=u_VldPortalSMS("CK_PRODUTO",SB1->(Recno()))
  1568. If !Empty(cMsgCust)
  1569. cMsg:= '<div class="row form-group">'+CHR(13)+CHR(10)
  1570. cMsg+= '<div class="col-lg-12">'+CHR(13)+CHR(10)
  1571. cMsg+= ' <div class="col-lg-12">'+cMsgCust+'</div>'+CHR(13)+CHR(10)
  1572. cMsg+= '</div>'+CHR(13)+CHR(10)
  1573. cMsg+= '</div>'+CHR(13)+CHR(10)
  1574. Else
  1575. cMsg:="::"
  1576. Endif
  1577. Endif
  1578. if empty(cTabela)
  1579. cTabela := Alltrim(HttpPost->cTabela)
  1580. endif
  1581. HttpSession->cTabela:= cTabela
  1582. HttpSession->Tabela:= cTabela
  1583. //Posiciona na tabela de preço
  1584. Posicione("DA0",1,xFilial("DA0")+cTabela,"DA0_CODTAB")
  1585. DA1->(dbSetOrder(1))
  1586. If DA1->(dbSeek(xFilial("DA1")+cTabela+cProduto))
  1587. nPrcTab:= u_getValProd(nComisRT,nPercFrt)
  1588. Endif
  1589. conout("Chave "+xFilial("DA1")+cTabela+cProduto)
  1590. conout("Tabela de preco "+xFilial("DA1")+" tab: "+cValToChar(cTabela)+" produto "+cProduto+" Preco "+cValToChar(nPrcTab))
  1591. If nPrcTab > 0
  1592. nSec:= Seconds()
  1593. //&&&&&& verificar se excessão fiscal calcula na tes inteligente
  1594. //nPrcTab := (nPrcTab - (nPrcTab * ((18 - nCargIcm - nFatCorr)/100))) // Alterado em 20-09-2018 - Fabiana - para calcular 1.5/4.5 de desconto CIF Norte/Nordeste.
  1595. //Obtem os valores de impostos
  1596. u_GetValImp(SA1->A1_COD+SA1->A1_LOJA,nPrcTab,nDesc,nQtdFis,@nValIcms,@nBaseICMS,@nValST,@nBaseST,@nValIPI,@nBaseIPI,@cAliqIPI,@cAliqICMS,@cAliqST,@cTes)
  1597. Conout("[ADDORC / GATPROD] - tempo u_GetValImp: "+cValtoChar(Seconds()-nSec)+"s")
  1598. If Empty(cTes)
  1599. cHtml:= "ERRO: TES n&atilde;o localizada."
  1600. Else
  1601. cPrcTab := TransForm((nPrcTab),PesqPict("SCK","CK_PRCVEN"))
  1602. cTotalST:= Transform(((nPrcTab)+nValST),PesqPict("SCK","CK_PRCVEN"))
  1603. If SB5->(MsSeek(xFilial("SB5")+SB1->B1_COD))
  1604. If SB5->B5_DTVLESP + 30 < dDataBase
  1605. lVencido:= .T.
  1606. Endif
  1607. Endif
  1608. CONOUT("IPI "+CVALTOCHAR(nValIPI))
  1609. aAdd(aRet,Alltrim(SB1->B1_UM)) //01
  1610. aAdd(aRet,Alltrim(cPrcTab)) //02
  1611. aAdd(aRet,Alltrim(Transform(nValIcms,PesqPict("SCK","CK_XVALICM")))) //03
  1612. aAdd(aRet,Alltrim(Transform(nValIPI,PesqPict("SCK","CK_XVALIPI")))) //04
  1613. aAdd(aRet,Alltrim(Transform(nValST,PesqPict("SCK","CK_PRCVEN")))) //05
  1614. aAdd(aRet,cAliqIPI) //06
  1615. aAdd(aRet,cAliqICMS) //07
  1616. aAdd(aRet,cValtochar(SB1->B1_QE)) //08
  1617. aAdd(aRet,cTES) //09
  1618. aAdd(aRet,cValtoChar(nBaseICMS)) //10
  1619. aAdd(aRet,cValtoChar(nBaseST)) //11
  1620. aAdd(aRet,cValtoChar(nBaseIPI)) //12
  1621. aAdd(aRet,cAliqST) //13
  1622. aAdd(aRet,SB1->B1_GRUPO) //14
  1623. aAdd(aRet,cvaltochar(nQtdMin)) //15
  1624. aAdd(aRet,Iif(lVencido,'1','0')) //16
  1625. aAdd(aRet,u_GetEstDisp()) //17
  1626. aAdd(aRet,Iif(lRetPro,'1','0')) //18
  1627. aAdd(aRet,cMsg) //19
  1628. aAdd(aRet,cPrzEmb) //20
  1629. aAdd(aRet,SB1->B1_TIPO) //21
  1630. aAdd(aRet,SB1->B1_COMIS) //22
  1631. cHtml := "OK:"
  1632. cHtml += aRet[1]+cSepField+aRet[2]+cSepField+aRet[3]+cSepField+aRet[4]+cSepField+aRet[5]+cSepField+aRet[6]+cSepField+aRet[7]+cSepField+aRet[8]
  1633. cHtml +=cSepField+aRet[9]+cSepField+aRet[10]+cSepField+aRet[11]+cSepField+aRet[12]+cSepField+aRet[13]+cSepField+aRet[14]+cSepField+aRet[15]
  1634. cHtml +=cSepField+aRet[16]+cSepField+aRet[17]+cSepField+aRet[18]+cSepField+aRet[19]+cSepField+aRet[20]+cSepField+aRet[21]+cSepField+cvaltochar(aRet[22])
  1635. Endif
  1636. Else
  1637. cHtml := "ERRO: Nao foi possivel localizar o produto"
  1638. Endif
  1639. Web Extended end
  1640. CONOUT("FIM GATPROD")
  1641. Return cHtml
  1642. User Function getValProd(nComisRT,nPercFrt)
  1643. Local nValor:= 0
  1644. If SB1->B1_TIPO = 'CO' .AND. SB1->B1_GRUPO = 'ELEV'
  1645. nValor:= SB1->B1_CUSTD
  1646. Else
  1647. nValor := DA1->DA1_PRCVEN
  1648. //Verifica excessão fiscal
  1649. cQuery := "SELECT * FROM "
  1650. cQuery += RetSQLName("SF7")+" SF7 "
  1651. cQuery += " WHERE F7_FILIAL = '" + xFilial("SF7") + "' "
  1652. cQuery += " AND F7_GRTRIB = '" + Trim(SB1->B1_GRTRIB) + "' "
  1653. cQuery += " AND F7_EST = '" + SA1->A1_EST + "' "
  1654. cQuery += " AND F7_TIPOCLI = '" + SA1->A1_TIPO + "' "
  1655. cQuery += " AND F7_GRPCLI = '" + SA1->A1_GRPTRIB + "' "
  1656. cQuery += " AND SF7.D_E_L_E_T_ = ' '" + " "
  1657. TcQuery cQuery New Alias "QREX"
  1658. If QREX->(!Eof())
  1659. 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.
  1660. Endif
  1661. QREX->(dbCloseArea())
  1662. If nComisRT > 0
  1663. nValor := (nValor * ((nComisRT/100)+1))
  1664. EndIf
  1665. If nPercFrt > 0
  1666. nValor := (nValor * ((nPercFrt/100)+1))
  1667. EndIf
  1668. Endif
  1669. Return nValor
  1670. User Function GetImpostos()
  1671. Local cProduto := Alltrim(UnEscape(HttpPost->PRODUTO))
  1672. Local nPrcTab := Val(HttpPost->prcvenda)
  1673. // Local cTabela := Alltrim(HttpSession->Tabela)
  1674. Local cCliente := Alltrim(HttpSession->Cliente)
  1675. Local nQtdFis := Val(HttpPost->quantidade)
  1676. // Local cSepReg := "#*#*"
  1677. Local cSepField := "|#|"
  1678. Local cTes := ""
  1679. Local nDesc := 0
  1680. Local nValIcms := 0
  1681. Local nBaseIcms := 0
  1682. Local nValST := 0
  1683. Local nBaseST := 0
  1684. Local nValIPI := 0
  1685. Local nBaseIPI := 0
  1686. Local cAliqIPI := 0
  1687. Local cAliqICMS := 0
  1688. Local cAliqST := 0
  1689. Local aRet := {}
  1690. Local cHtml
  1691. Web Extended Init cHtml Start U_inSite()
  1692. //Busca o cadastro do cliente
  1693. Posicione("SA1",1,xFilial("SA1")+cCliente,"A1_COD")
  1694. //Posiciona no cadastro do produto
  1695. Posicione("SB1",1,xFilial("SB1")+cProduto,"B1_COD")
  1696. If nPrcTab > 0
  1697. //Obtem os valores de impostos
  1698. u_GetValImp(SA1->A1_COD+SA1->A1_LOJA,nPrcTab,nDesc,nQtdFis,@nValIcms,@nBaseICMS,@nValST,@nBaseST,@nValIPI,@nBaseIPI,@cAliqIPI,@cAliqICMS,@cAliqST,@cTes)
  1699. nValDesc:= nPrcTab * nDesc
  1700. cPrcTab := TransForm((nPrcTab-nValDesc),PesqPict("SCK","CK_PRCVEN"))
  1701. // cPrcTab := TransForm((nPrcTab-nValDesc),PesqPict("SCK","CK_PRCVEN"))
  1702. cTotalST:= Transform(((nPrcTab-nValDesc)+nValST),PesqPict("SCK","CK_PRCVEN"))
  1703. aAdd(aRet,Alltrim(SB1->B1_UM))
  1704. aAdd(aRet,Alltrim(cPrcTab))
  1705. aAdd(aRet,Alltrim(Transform(nValIcms,PesqPict("SCK","CK_XVALICM"))))
  1706. aAdd(aRet,Alltrim(Transform(nValIPI,PesqPict("SCK","CK_XVALIPI"))))
  1707. aAdd(aRet,Alltrim(cValtoChar(nValST)))
  1708. //aAdd(aRet,Alltrim(Transform(nValST,PesqPict("SCK","CK_PRCVEN"))))
  1709. aAdd(aRet,cAliqIPI)
  1710. aAdd(aRet,cAliqICMS)
  1711. aAdd(aRet,cValtochar(SB1->B1_QE))
  1712. aAdd(aRet,cTES)
  1713. aAdd(aRet,cValtoChar(nBaseICMS))
  1714. aAdd(aRet,cValtoChar(nBaseST))
  1715. aAdd(aRet,cValtoChar(nBaseIPI))
  1716. aAdd(aRet,cAliqST)
  1717. cHtml := "OK:"
  1718. cHtml += aRet[1]+cSepField+aRet[2]+cSepField+aRet[3]+cSepField+aRet[4]+cSepField+aRet[5]+cSepField+aRet[6]+cSepField+aRet[7]+cSepField+aRet[8]
  1719. cHtml +=cSepField+aRet[9]+cSepField+aRet[10]+cSepField+aRet[11]+cSepField+aRet[12]+cSepField+aRet[13]
  1720. Else
  1721. cHtml := "Falha ao calcular impostos"
  1722. Endif
  1723. Web Extended end
  1724. Return cHtml
  1725. /*__________________________________________________________________________
  1726. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1727. ¦¦+-----------------------------------------------------------------------+¦¦
  1728. ¦¦¦Funçäo ¦ GetValImp ¦ Autor ¦ Anderson Zelenski ¦ Data ¦ 09.09.17 ¦¦¦
  1729. ¦¦+----------+------------------------------------------------------------¦¦¦
  1730. ¦¦¦Descriçäo ¦ Função para cálculo dos impostos ¦¦¦
  1731. ¦¦+-----------------------------------------------------------------------+¦¦
  1732. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1733. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1734. */
  1735. User Function GetValImp(cCliente,nPreco,nDesc,nQtdFis,nValIcms,nBaseIcms,nValST,nBaseST,nValIPI,nBaseIPI,cAliqIPI,cAliqICMS,cAliqST,cTes)
  1736. Local _nItem:= 0
  1737. Local cCodOper:= ""
  1738. MaFisEnd()
  1739. SA1->(dbSetorder(1))
  1740. SA1->(dbSeek(xFilial("SA1")+cCliente))
  1741. cCodOper:= GetCodOper()
  1742. MaFisIni(SA1->A1_COD,;// 1-Codigo Cliente/Fornecedor
  1743. SA1->A1_LOJA,;// 2-Loja do Cliente/Fornecedor
  1744. "C",; // 3-C:Cliente , F:Fornecedor
  1745. "N",; // 4-Tipo da NF
  1746. SA1->A1_TIPO,;// 5-Tipo do Cliente/Fornecedor
  1747. MaFisRelImp("MT100", {"SF2", "SD2"}),; // 6-Relacao de Impostos que suportados no arquivo
  1748. ,;// 7-Tipo de complemento
  1749. ,;// 8-Permite Incluir Impostos no Rodape .T./.F.
  1750. "SB1",; // 9-Alias do Cadastro de Produtos - ("SBI" P/ Front Loja)
  1751. "MATA461")
  1752. dbSelectArea("SE4")
  1753. SE4->(DbSetOrder(1))
  1754. cTes:= MaTesInt(2,cCodOper,SA1->A1_COD,SA1->A1_LOJA,"C",SB1->B1_COD,"",SA1->A1_TIPO)
  1755. // conout("tes -->"+cTes)
  1756. // conout("prod -->"+SB1->B1_COD)
  1757. _nItem := MaFisAdd(SB1->B1_COD,; // 1-Codigo do Produto ( Obrigatorio )
  1758. cTes,;// 2-Codigo do TES ( Opcional )
  1759. nQtdFis,; // 3-Quantidade ( Obrigatorio )
  1760. nPreco,; // 4-Preco Unitario ( Obrigatorio )
  1761. nDesc,; // 5-Valor do Desconto ( Opcional )
  1762. ,;// 6-Numero da NF Original ( Devolucao/Benef )
  1763. ,;// 7-Serie da NF Original ( Devolucao/Benef )
  1764. ,;// 8-RecNo da NF Original no arq SD1/SD2
  1765. 0,; // 9-Valor do Frete do Item ( Opcional )
  1766. 0,; // 10-Valor da Despesa do item ( Opcional )
  1767. 0,; // 11-Valor do Seguro do item ( Opcional )
  1768. 0,; // 12-Valor do Frete Autonomo ( Opcional )
  1769. nPreco,; // 13-Valor da Mercadoria ( Obrigatorio )
  1770. 0,; // 14-Valor da Embalagem ( Opiconal )
  1771. 0,; // 15-RecNo do SB1
  1772. 0)// 16-RecNo do SF4
  1773. //ICMS
  1774. nValIcms:= MaFisRet(_nItem,"IT_VALICM")
  1775. nBaseIcms:= MaFisRet(_nItem,"IT_BASEICM")
  1776. cAliqICMS:= Alltrim(Str(MaFisRet(_nItem,"IT_ALIQICM")))
  1777. //IPI
  1778. nValIPI := MaFisRet(_nItem,"IT_VALIPI")
  1779. nBaseIPI := MaFisRet(_nItem,"IT_BASEIPI")
  1780. cAliqIPI := Alltrim(Str(MaFisRet(_nItem,"IT_ALIQIPI")))
  1781. //ICMS ST
  1782. nValST := MaFisRet(_nItem,"IT_VALSOL")
  1783. nBaseST := MaFisRet(_nItem,"IT_BASESOL")
  1784. cAliqST := Alltrim(Str(MaFisRet(_nItem,"IT_ALIQSOL")))
  1785. Return
  1786. /*__________________________________________________________________________
  1787. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1788. ¦¦+-----------------------------------------------------------------------+¦¦
  1789. ¦¦¦Funçäo ¦ GetCodOper ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 07.10.24 ¦¦¦
  1790. ¦¦+----------+------------------------------------------------------------¦¦¦
  1791. ¦¦¦Descriçäo ¦ Busca o código de operação para cálculo da TES Inteligente ¦¦¦
  1792. ¦¦+-----------------------------------------------------------------------+¦¦
  1793. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1794. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1795. */
  1796. Static Function GetCodOper()
  1797. Local cCod:= ""
  1798. M->CJ_TIPOPER:= '1'
  1799. M->CJ_TIPOCLI:= SA1->A1_TIPO
  1800. cCod:= u_OperaO()
  1801. conout("------>>>>> operação: "+cCod)
  1802. Return cCod
  1803. /*__________________________________________________________________________
  1804. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1805. ¦¦+-----------------------------------------------------------------------+¦¦
  1806. ¦¦¦Funçäo ¦ VldDescto ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 05.09.17 ¦¦¦
  1807. ¦¦+----------+------------------------------------------------------------¦¦¦
  1808. ¦¦¦Descriçäo ¦ Validação do desconto digitado ¦¦¦
  1809. ¦¦+-----------------------------------------------------------------------+¦¦
  1810. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1811. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1812. */
  1813. User Function VldDescto()
  1814. Local cCliente := Alltrim(HttpSession->Cliente)
  1815. Local cProduto := Alltrim(HttpPost->Produto)
  1816. Local nVlrUnit := Val(HttpPost->prcvenda)
  1817. Local nQuant := Val(HttpPost->quantidade)
  1818. Local cProdPan := ""
  1819. Local cUsrLivre := ""
  1820. Local cTpDesc := "1"// 1=Permite o desconto 2=Permite mediante senha 3=Não permite
  1821. Local cHtml
  1822. Web Extended Init cHtml Start U_inSite()
  1823. //Posiciona nos registros
  1824. Posicione("SA1",1,xFilial("SA1")+cCliente,"A1_COD")
  1825. Posicione("SB1",1,xFilial("SB1")+cProduto,"B1_COD")
  1826. cProdPan := GetMV("MV_PRODPAN", Nil, "ACS-LHT44BC,ACS-LHT44PT")
  1827. cUsrLivre := GetMV("MV_ULDSCRE", Nil, "000111,000342,000358")
  1828. Do Case
  1829. //Case cCodLogin $ cUsrLivre //&& verificar
  1830. // nTpDesc := "1"
  1831. Case SB1->B1_GRUPO == "PAN " .or. AllTrim(cProduto) $ cProdPan
  1832. cTpDesc := "3"
  1833. Case SB1->B1_TIPO == "RE" //SB1->B1_TIPO # "PA" .and. (SB1->B1_TIPO # "PI" .or. !SB1->B1_GRUPO $ "E048|E049|E04A|E063|")
  1834. cTpDesc := "2"
  1835. Otherwise
  1836. cTpDesc := "1"
  1837. EndCase
  1838. cHtml:= cTpDesc
  1839. Web Extended End
  1840. Return cHtml
  1841. /*__________________________________________________________________________
  1842. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1843. ¦¦+-----------------------------------------------------------------------+¦¦
  1844. ¦¦¦Funçäo ¦ VldDscMax ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 05.09.17 ¦¦¦
  1845. ¦¦+----------+------------------------------------------------------------¦¦¦
  1846. ¦¦¦Descriçäo ¦ Validação do desconto máximo do orçamento ¦¦¦
  1847. ¦¦+-----------------------------------------------------------------------+¦¦
  1848. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1849. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1850. */
  1851. User Function VldDscMax()
  1852. Local cCondPag := Alltrim(HttpPost->condpag)
  1853. Local nPrcTab := Val(HttpPost->vlrTabela)
  1854. Local nPrcVenda := Val(HttpPost->vlrVenda)
  1855. Local nDescDir := Val(HttpPost->descDir)
  1856. Local nDscConc := 0 //desconto concedido
  1857. Local nDscVista := 0 //desconto a vista da condição de pagamento
  1858. Local cSepField := "|#|"
  1859. Local cHtml := "OK"
  1860. Web Extended Init cHtml Start U_inSite()
  1861. nDscConc := Round(((((Round(nPrcVenda,2)/NoRound(nPrcTab,2))*100)-100)*-1),2)
  1862. If ABS(Round(nDscConc,2)) <= 0.02
  1863. nDscConc := 0
  1864. EndIf
  1865. cQuery := "SELECT ZA_PERCDES, ZA_PEDESAV FROM " + RetSQLName("SZA") + " WHERE "
  1866. cQuery += "ZA_FILIAL = '" + xFilial("SZA") + "' AND ZA_DE <= " + Str(nPrcTab) + " AND ZA_ATE >= " + Str(nPrcTab) + " AND D_E_L_E_T_ = ' ' "
  1867. If Select("QRY") > 0
  1868. QRY->(dbCloseArea())
  1869. Endif
  1870. TcQuery cQuery New Alias "QRY"
  1871. If cCondPag == '001' .OR. cCondPag == '500'
  1872. nDscVista := QRY->ZA_PEDESAV
  1873. EndIf
  1874. If Round(nDscConc,2) > (QRY->ZA_PERCDES + nDescDir + nDscVista)
  1875. cHtml:= "NOK:"
  1876. cHtml += Transform(nDscConc,"@R 999.99")+" %"+cSepField
  1877. cHtml += Transform((QRY->ZA_PERCDES + nDescDir + nDscVista),"@R 999.99")+" %"
  1878. Else
  1879. cHtml:= "OK:"
  1880. EndIf
  1881. Web Extended End
  1882. Return cHtml
  1883. /*__________________________________________________________________________
  1884. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1885. ¦¦+-----------------------------------------------------------------------+¦¦
  1886. ¦¦¦Funçäo ¦ VldSenha ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 05.09.17 ¦¦¦
  1887. ¦¦+----------+------------------------------------------------------------¦¦¦
  1888. ¦¦¦Descriçäo ¦ Validação da senha digitada ¦¦¦
  1889. ¦¦+-----------------------------------------------------------------------+¦¦
  1890. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1891. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1892. */
  1893. User Function VldSenha()
  1894. Local cUser := Alltrim(HttpPost->user)
  1895. Local cPsw := Alltrim(HttpPost->senha)
  1896. Local cUsers := "USUARIOS_ORCA1018.json" // arquivo na pasta SYSTEM
  1897. Local jUsers
  1898. Local nI
  1899. Local lOk := .F.
  1900. Local cHtml
  1901. Web Extended Init cHtml Start U_inSite()
  1902. If File(cUsers)
  1903. jUsers := JsonObject():New()
  1904. jUsers:FromJson(MemoRead(cUsers))
  1905. For nI := 1 To Len(jUsers["usuarios"])
  1906. If Trim(cUser) == jUsers["usuarios"][nI]["usuario"] .and. Trim(cPsw) == jUsers["usuarios"][nI]["senha"]
  1907. lOk := .T.
  1908. nI += Len(jUsers["usuarios"])
  1909. EndIf
  1910. Next
  1911. FreeObj(jUsers)
  1912. If lOk
  1913. cHtml:= "OK"
  1914. Else
  1915. cHtml:= "NOK"
  1916. EndIf
  1917. Else
  1918. cHtml:= "NOK"
  1919. EndIf
  1920. Web Extended End
  1921. Return cHtml
  1922. /*__________________________________________________________________________
  1923. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1924. ¦¦+-----------------------------------------------------------------------+¦¦
  1925. ¦¦¦Funçäo ¦ FreteMinimo ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 09.09.17 ¦¦¦
  1926. ¦¦+----------+------------------------------------------------------------¦¦¦
  1927. ¦¦¦Descriçäo ¦ Validação para valor mínimo do frete. ¦¦¦
  1928. ¦¦+-----------------------------------------------------------------------+¦¦
  1929. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1930. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1931. */
  1932. User Function FreteMinimo()
  1933. Local cHtml
  1934. Local cUFEntrega:= Alltrim(HttpPost->UFEnt)
  1935. Local cMunEntrega:= Alltrim(HttpPost->munEntrega)
  1936. Local nValMin := 0
  1937. Web Extended Init cHtml Start U_inSite()
  1938. If Empty(HttpSession->CodVend)
  1939. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1940. Return cHtml
  1941. endif
  1942. //Busca o valor mínimo de frete
  1943. cQuery := "SELECT Z3_VLFRMIN, Z3_MUNICIP "
  1944. cQuery += "FROM "+RetSQLName("SZ3")+" SZ3 "
  1945. cQuery += "WHERE SZ3.D_E_L_E_T_ = ' ' "
  1946. cQuery += " AND Z3_UF = '"+cUFEntrega+"' "
  1947. cQuery += " ORDER BY Z3_MUNICIP "
  1948. If Select("QRY") > 0
  1949. QRY->(dbCloseArea())
  1950. Endif
  1951. TcQuery cQuery New Alias "QRY"
  1952. If !QRY->(EOF())
  1953. nValMin := QRY->Z3_VLFRMIN
  1954. While QRY->(!EOF())
  1955. If AllTrim(QRY->Z3_MUNICIP) == cMunEntrega
  1956. nValMin := QRY->Z3_VLFRMIN
  1957. EndIf
  1958. QRY->(DbSkip())
  1959. End
  1960. Endif
  1961. cHtml:= cvaltochar(nValMin)
  1962. QRY->(dbCloseArea())
  1963. Web Extended end
  1964. Return cHtml
  1965. /*__________________________________________________________________________
  1966. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1967. ¦¦+-----------------------------------------------------------------------+¦¦
  1968. ¦¦¦Funçäo ¦ AtuPreco ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 02.09.17 ¦¦¦
  1969. ¦¦+----------+------------------------------------------------------------¦¦¦
  1970. ¦¦¦Descriçäo ¦ Envia email para atualização de preço ¦¦¦
  1971. ¦¦+-----------------------------------------------------------------------+¦¦
  1972. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  1973. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  1974. */
  1975. User Function AtuPreco()
  1976. Local cHtml
  1977. Local cCliente:= HttpSession->cliente
  1978. Local cFilOrc:= HttpPost->filial
  1979. Local cNumOrc:= HttpPost->orcto
  1980. Local cObra:= HttpPost->obra
  1981. Local cItens:= HttpPost->itens
  1982. Local cMsLumEspL:= ""
  1983. Local cMsLumEspT:= ""
  1984. Local aLinhas:= {}
  1985. Local aItem:= {}
  1986. Local i:= 0
  1987. Web Extended Init cHtml Start U_inSite()
  1988. If Empty(HttpSession->CodVend)
  1989. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  1990. Return cHtml
  1991. endif
  1992. aLinhas:= Separa(cItens,"|")
  1993. For i:= 1 to Len(aLinhas)
  1994. aItem:= Separa(aLinha[i],";")
  1995. Posicione("SB1",1,xFilial("SB1")+aItem[2],"B1_DESC")
  1996. If SB5->(MsSeek(xFilial("SB5")+aItem[2])) .and. (SB5->B5_DTVLESP + 30) < dDataBase
  1997. cMsLumEspL += "<tr><td>" + aItem[1] + "</td>"
  1998. cMsLumEspL += "<td>" + aItem[2] + "</td>"
  1999. cMsLumEspL += "<td>" + SB1->B1_DESC + "</td>"
  2000. cMsLumEspL += "<td>" + DToC(SB5->B5_DTVLESP)+" "+Str(dDataBase - SB5->B5_DTVLESP)+" dias"+"</td>"
  2001. cMsLumEspL += "<td>" + Transform(val(aItem[3]),"@E 99999.99") + "</td></tr>"
  2002. Endif
  2003. Next
  2004. If !Empty(cMsLumEspL)
  2005. If AllTrim(cFilAnt) == '01'
  2006. cMsLumEspT += "Engenharia - "+AllTrim(HttpSession->Nome)
  2007. Else
  2008. cMsLumEspT += "Abalux - "+AllTrim(HttpSession->Nome)
  2009. Endif
  2010. cMsLumEspT += CRLF
  2011. cMsLumEspT += "Cliente: "+cCliente+" - "+AllTrim(SA1->A1_NOME)+CRLF
  2012. cMsLumEspT += "Obra: "+AllTrim(cObra)+CRLF
  2013. 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>"
  2014. U_EnvMail( "leonardo.souza@lumicenter.com;victor.pires@lumicenter.com;gustavo.santos@lumicenter.com;victor.ferreira@lumicenter.com" ,;
  2015. HttpSession->Email ,;
  2016. "" ,;
  2017. "e-Mail Automático. Atualização de preço - Luminárias especiais. Orçamento: "+Iif(!Empty(cNumOrc),cNumOrc,"")+"" ,;
  2018. cMsLumEspT+cMsLumEspL ,;
  2019. "" )
  2020. Endif
  2021. cHtml:= ""
  2022. Web Extended end
  2023. Return cHtml
  2024. /*__________________________________________________________________________
  2025. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2026. ¦¦+-----------------------------------------------------------------------+¦¦
  2027. ¦¦¦Funçäo ¦ VldCondPg ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 09.09.17 ¦¦¦
  2028. ¦¦+----------+------------------------------------------------------------¦¦¦
  2029. ¦¦¦Descriçäo ¦ Verifica valor mínimo de parcela. ¦¦¦
  2030. ¦¦+-----------------------------------------------------------------------+¦¦
  2031. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2032. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2033. */
  2034. User Function VldCondPg()
  2035. Local cHtml
  2036. Local cCondPag := Alltrim(HttpPost->condPgto)
  2037. Web Extended Init cHtml Start U_inSite()
  2038. If Empty(HttpSession->CodVend)
  2039. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2040. Return cHtml
  2041. endif
  2042. //Posiciona na condição
  2043. SE4->(dbSeek(xFilial("SE4")+cCondPag))
  2044. cHtml:= cvaltochar(SE4->E4_DESCRI)
  2045. Web Extended end
  2046. Return cHtml
  2047. /*__________________________________________________________________________
  2048. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2049. ¦¦+-----------------------------------------------------------------------+¦¦
  2050. ¦¦¦Funçäo ¦ GetSitCli ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 19.11.17 ¦¦¦
  2051. ¦¦+----------+------------------------------------------------------------¦¦¦
  2052. ¦¦¦Descriçäo ¦ Função para buscar os dados de crédito do cliente. ¦¦¦
  2053. ¦¦+-----------------------------------------------------------------------+¦¦
  2054. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2055. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2056. */
  2057. User Function GetSitCli()
  2058. Local cHtml
  2059. Local cCliente := Alltrim(HttpPost->Cliente)
  2060. Local cMsg := ""
  2061. Local cSepField := "|#|"
  2062. Local lRetCli:= .T.
  2063. Private cMsgCust:= ""
  2064. Web Extended Init cHtml Start U_inSite()
  2065. If Empty(HttpSession->CodVend)
  2066. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2067. Return cHtml
  2068. endif
  2069. //Posiciona no cliente
  2070. dbSelectArea("SA1")
  2071. SA1->(dbSeek(xFilial("SA1")+cCliente))
  2072. //Atualiza a variável de sessão
  2073. HttpSession->cliente := cCliente
  2074. //Chama a validação customizada do cliente
  2075. If ExistBlock("VldPortalSMS")
  2076. lRetCli:=u_VldPortalSMS("CJ_CLIENTE",SA1->(Recno()))
  2077. Endif
  2078. If !Empty(cMsgCust)
  2079. cMsg+= '<div class="row form-group">'+CHR(13)+CHR(10)
  2080. cMsg+= '<div class="col-lg-12">'+CHR(13)+CHR(10)
  2081. cMsg+= ' <div class="col-lg-12">'+u_FormEntities(cMsgCust)+'</div>'+CHR(13)+CHR(10)
  2082. cMsg+= '</div>'+CHR(13)+CHR(10)
  2083. cMsg+= '</div>'+CHR(13)+CHR(10)
  2084. Else
  2085. cMsg:="::"
  2086. Endif
  2087. cHtml:= Iif(!lRetCli,'0','1')+cSepField+cMsg+cSepField
  2088. cHtml+= SA1->A1_TIPO+cSepField+SA1->A1_GRPTRIB+cSepField+Alltrim(SA1->A1_COND)+cSepField
  2089. cHtml+= Alltrim(SA1->A1_EST)+Alltrim(SA1->A1_COD_MUN)+" - "+Alltrim(SA1->A1_MUN)+cSepField
  2090. cHtml+= SA1->A1_VEND
  2091. Web Extended end
  2092. Return cHtml
  2093. /*__________________________________________________________________________
  2094. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2095. ¦¦+-----------------------------------------------------------------------+¦¦
  2096. ¦¦¦Funçäo ¦ GetEndCli ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 19.11.17 ¦¦¦
  2097. ¦¦+----------+------------------------------------------------------------¦¦¦
  2098. ¦¦¦Descriçäo ¦ Função para buscar o endereço do cliente. ¦¦¦
  2099. ¦¦+-----------------------------------------------------------------------+¦¦
  2100. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2101. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2102. */
  2103. User Function GetEndCli()
  2104. Local cHtml
  2105. Local cCliente := Alltrim(HttpPost->Cliente)
  2106. Web Extended Init cHtml Start U_inSite()
  2107. If Empty(HttpSession->CodVend)
  2108. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2109. Return cHtml
  2110. endif
  2111. //Posiciona no cliente
  2112. dbSelectArea("SA1")
  2113. SA1->(dbSetOrder(1))
  2114. SA1->(dbgotop())
  2115. SA1->(dbSeek(xFilial("SA1")+cCliente))
  2116. cHtml:= Alltrim(SA1->A1_EST)+Alltrim(SA1->A1_COD_MUN)+" - "+Alltrim(SA1->A1_MUN)
  2117. Web Extended end
  2118. Return cHtml
  2119. /*__________________________________________________________________________
  2120. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2121. ¦¦+-----------------------------------------------------------------------+¦¦
  2122. ¦¦¦Funçäo ¦ GetCellTb ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 22.11.17 ¦¦¦
  2123. ¦¦+----------+------------------------------------------------------------¦¦¦
  2124. ¦¦¦Descriçäo ¦ Função para geração da linha da tabela de itens ¦¦¦
  2125. ¦¦+-----------------------------------------------------------------------+¦¦
  2126. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2127. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2128. */
  2129. User Function GetCellTb()
  2130. Local cHtml
  2131. Local nCol := HttpPost->coluna
  2132. Local nLin := val(HttpPost->linha)
  2133. Local cItem := ""
  2134. Local cCampo:= ""
  2135. Web Extended Init cHtml Start U_inSite()
  2136. cItem:= StrZero(nLin,TamSX3("CK_ITEM")[1])
  2137. cCampo:= "var campo = document.createElement('input'); " // create input element
  2138. cCampo+= " campo.setAttribute('class', 'form-control input-block'); " // set class attribute
  2139. cCampo+= " campo.name = '"+aItens[nCol,2]+cItem+"'; "
  2140. cCampo+= " campo.id = '"+aItens[nCol,2]+cItem+"'; "
  2141. cCampo+= " campo.align = '"+aItens[nCol][4]+"';"
  2142. cHtml:= cCampo
  2143. Web Extended end
  2144. Return cHTML
  2145. /*__________________________________________________________________________
  2146. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2147. ¦¦+-----------------------------------------------------------------------+¦¦
  2148. ¦¦¦Funçäo ¦ GetCondPgto ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 01.07.19 ¦¦¦
  2149. ¦¦+----------+------------------------------------------------------------¦¦¦
  2150. ¦¦¦Descriçäo ¦ Função utilizada no Ajax pra retornar a cond de pagamento ¦¦¦
  2151. ¦¦+-----------------------------------------------------------------------+¦¦
  2152. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2153. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2154. */
  2155. User Function GetCondPgto()
  2156. Local cHtml
  2157. Local cCliente := Alltrim(HttpSession->Cliente)
  2158. Local cModali := Alltrim(HttpPost->modali)
  2159. Local cCondCli := ""
  2160. Local cCondPg := ""
  2161. Web Extended Init cHtml Start U_inSite()
  2162. If Empty(HttpSession->CodVend)
  2163. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2164. Return cHtml
  2165. endif
  2166. cCondPg+=' <option value=""></option>'
  2167. //Verifica se a condição cadastrada no cliente é dessa modalidade
  2168. cCondCli:= Posicione("SA1",1,xFilial("SA1")+cCliente,"A1_COND")
  2169. SE4->(dbSeek(xFilial("SE4")+cCondCli))
  2170. If SE4->E4_XMODALI == cModali
  2171. cCondPg+=' <option value="'+Alltrim(SE4->E4_CODIGO)+'">'+Alltrim(SE4->E4_CODIGO)+" - "+Alltrim(SE4->E4_DESCRI)+'</option>'
  2172. Else
  2173. cCondCli:=""
  2174. Endif
  2175. //Seleciona as condições de pagamento disponíveis no combo
  2176. cQry:= " Select E4_CODIGO, E4_DESCRI"
  2177. cQry+= " From "+RetSqlName("SE4")+" SE4 "
  2178. cQry+= " Where E4_FILIAL = '"+xFilial("SE4")+"' "
  2179. cQry+= " And E4_XMODALI = '"+cModali+"' "
  2180. cQry+= " And E4_MSBLQL <> '1' "
  2181. cQry+= " And E4_CODIGO <> '"+cCondCli+"' "
  2182. cQry+= " And SE4.D_E_L_E_T_ = ' ' "
  2183. If Select("QRT") > 0
  2184. QRT->(dbCloseArea())
  2185. Endif
  2186. APWExOpenQuery(ChangeQuery(cQry),'QRT',.T.)
  2187. //Preenche o select da tabela
  2188. While QRT->(!Eof())
  2189. cCondPg+=' <option value="'+Alltrim(QRT->E4_CODIGO)+'">'+Alltrim(QRT->E4_CODIGO)+" - "+Alltrim(QRT->E4_DESCRI)+'</option>'
  2190. QRT->(dbSkip())
  2191. End
  2192. cHtml:= cCondPg
  2193. Web Extended end
  2194. Return cHtml
  2195. /*__________________________________________________________________________
  2196. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2197. ¦¦+-----------------------------------------------------------------------+¦¦
  2198. ¦¦¦Funçäo ¦ GetEstDisp ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 04.07.19 ¦¦¦
  2199. ¦¦+----------+------------------------------------------------------------¦¦¦
  2200. ¦¦¦Descriçäo ¦ Função utilizada no Ajax pra retornar o estoque disponível ¦¦¦
  2201. ¦¦+-----------------------------------------------------------------------+¦¦
  2202. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2203. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2204. */
  2205. //Estoque disponível: saldo do produto – empenhos – quantidade pedido de venda – quantidade orçamentos Firmes e não efetivados.
  2206. User Function GetEstDisp()
  2207. Local cHtml
  2208. Local cProduto := Alltrim(UnEscape(HttpPost->produto))
  2209. Local cArmazem := ""
  2210. Local lVldEstoq := .T.
  2211. Web Extended Init cHtml Start U_inSite()
  2212. If Empty(HttpSession->CodVend)
  2213. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2214. Return cHtml
  2215. endif
  2216. lVldEstoq:= GetNewPar("PR_VLDESTQ",.T.)
  2217. If !lVldEstoq
  2218. Return '9999999'
  2219. Endif
  2220. //Armazéns considerados para busca do estoque
  2221. cArmazem:= GetNewPar("PR_ARMZPR","'01','02','03'") //deve estar no formato '01','02'
  2222. //Busca o saldo do produto
  2223. cQry:= "With QRY AS( "
  2224. 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)
  2225. cQry+= "From "+RetSqlName("SB2")+" SB2 "
  2226. cQry+= "Where B2_FILIAL = '"+xFilial("SB2")+"' And B2_COD = '"+cProduto+"' And SB2.D_E_L_E_T_ = ' ' "
  2227. If !Empty(cArmazem)
  2228. cQry+= "AND B2_LOCAL in ("+cArmazem+") "
  2229. Endif
  2230. cQry+= "UNION ALL "
  2231. cQry+= "Select 0 EST , SUM(CK_QTDVEN) EMPENHO "
  2232. cQry+= "From "+RetSqlName("SCJ")+" SCJ, "+RetSqlName("SCK")+" SCK "
  2233. cQry+= "Where CJ_FILIAL = '"+xFilial("SB2")+"' AND CJ_STATUS = 'A' AND SCJ.D_E_L_E_T_ = ' ' "
  2234. cQry+= "and CK_FILIAL = CJ_FILIAL AND CK_NUM = CJ_NUM AND CK_PRODUTO = '"+cProduto+"' and SCK.D_E_L_E_T_ = ' ' "
  2235. If !Empty(cArmazem)
  2236. cQry+= "AND CK_LOCAL in ("+cArmazem+") "
  2237. Endif
  2238. cQry+= ")"
  2239. cQry+= "SELECT SUM(EST) -SUM(EMPENHO) SALDO FROM QRY "
  2240. If Select("QRS") > 0
  2241. QRS->(dbCloseArea())
  2242. Endif
  2243. APWExOpenQuery(cQry,'QRS',.T.)
  2244. conout(cQry)
  2245. cHtml:= cValtoChar(QRS->SALDO)
  2246. Web Extended end
  2247. Return cHtml
  2248. /*__________________________________________________________________________
  2249. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2250. ¦¦+-----------------------------------------------------------------------+¦¦
  2251. ¦¦¦Funçäo ¦ GetEstGeral ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 14.10.23 ¦¦¦
  2252. ¦¦+----------+------------------------------------------------------------¦¦¦
  2253. ¦¦¦Descriçäo ¦ Retorna estoque disponível para todos os armazéns da filial¦¦¦
  2254. ¦¦+-----------------------------------------------------------------------+¦¦
  2255. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2256. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  2257. //Estoque disponível: saldo do produto – empenhos – quantidade pedido de venda – quantidade orçamentos Firmes e não efetivados.
  2258. User Function GetEstGeral()
  2259. Local cHtml
  2260. Local cProduto := Alltrim(UnEscape(HttpPost->produto))
  2261. Web Extended Init cHtml Start U_inSite()
  2262. If Empty(HttpSession->CodVend)
  2263. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2264. Return cHtml
  2265. Endif
  2266. //Busca o saldo do produto
  2267. cQry:= "With QRY AS( "
  2268. 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)
  2269. cQry+= "From "+RetSqlName("SB2")+" SB2 "
  2270. cQry+= "Where B2_FILIAL = '"+xFilial("SB2")+"' And B2_COD = '"+cProduto+"' And SB2.D_E_L_E_T_ = ' ' "
  2271. cQry+= "GROUP BY B2_LOCAL "
  2272. cQry+= "UNION ALL "
  2273. cQry+= "Select CK_LOCAL ARMAZEM, 0 EST , SUM(CK_QTDVEN) EMPENHO "
  2274. cQry+= "From "+RetSqlName("SCJ")+" SCJ, "+RetSqlName("SCK")+" SCK "
  2275. cQry+= "Where CJ_FILIAL = '"+xFilial("SB2")+"' AND CJ_STATUS = 'A' AND SCJ.D_E_L_E_T_ = ' ' "
  2276. cQry+= "and CK_FILIAL = CJ_FILIAL AND CK_NUM = CJ_NUM AND CK_PRODUTO = '"+cProduto+"' and SCK.D_E_L_E_T_ = ' ' "
  2277. cQry+= "GROUP BY CK_LOCAL "
  2278. cQry+= ")"
  2279. cQry+= "SELECT ARMAZEM, SUM(EST) -SUM(EMPENHO) SALDO FROM QRY "
  2280. cQry+= "GROUP BY ARMAZEM "
  2281. cQry+= "HAVING (SUM(EST) -SUM(EMPENHO)) > 0"
  2282. If Select("QRS") > 0
  2283. QRS->(dbCloseArea())
  2284. Endif
  2285. APWExOpenQuery(cQry,'QRS',.T.)
  2286. cTabela:= '<table class="table table-bordered table-striped table-condensed mb-none" id="saldoEstGeral">'+CHR(13)+CHR(10)
  2287. cTabela+= " <thead>"+CHR(13)+CHR(10)
  2288. cTabela+= " <tr>"+CHR(13)+CHR(10)
  2289. cTabela+= " <th>Armaz&eacute;m</th>"+CHR(13)+CHR(10)
  2290. cTabela+= " <th>Descri&ccedil;&atilde;o</th>"+CHR(13)+CHR(10)
  2291. cTabela+= " <th>Saldo</th>"+CHR(13)+CHR(10)
  2292. cTabela+= " </tr>"+CHR(13)+CHR(10)
  2293. cTabela+= " </thead>"+CHR(13)+CHR(10)
  2294. cTabela+= " <tbody>"+CHR(13)+CHR(10)
  2295. If QRS->(!Eof())
  2296. While QRS->(!Eof())
  2297. cTabela+= " <tr>
  2298. cTabela+= " <td>"+QRS->ARMAZEM+"</td>"
  2299. cTabela+= " <td>"+FwNoAccent(Upper(Posicione("NNR",1,xFilial("NNR")+QRS->ARMAZEM,"NNR_DESCRI")))+"</td>"
  2300. cTabela+= " <td>"+cvaltochar(QRS->SALDO)+"</td>"
  2301. cTabela+= " </tr>"
  2302. QRS->(dbSkip())
  2303. End
  2304. cTabela+=" </tbody>"+CHR(13)+CHR(10)
  2305. cTabela+="</table>"+CHR(13)+CHR(10)
  2306. QRS->(dbCloseArea())
  2307. Else
  2308. cTabela+= " <tr>
  2309. cTabela+= " <td>**Sem saldo em estoque**</td>"
  2310. cTabela+= " </tr>"
  2311. Endif
  2312. cHtml:= cTabela
  2313. Web Extended end
  2314. Return cHtml
  2315. /*__________________________________________________________________________
  2316. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2317. ¦¦+-----------------------------------------------------------------------+¦¦
  2318. ¦¦¦Funçäo ¦ GetLimCred ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 04.07.19 ¦¦¦
  2319. ¦¦+----------+------------------------------------------------------------¦¦¦
  2320. ¦¦¦Descriçäo ¦ Função utilizada no Ajax pra retornar o limite disponível ¦¦¦
  2321. ¦¦+-----------------------------------------------------------------------+¦¦
  2322. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2323. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2324. */
  2325. User Function GetLimCred()
  2326. Local cHtml
  2327. Local cCliente := Alltrim(HttpPost->cliente)
  2328. Local nTotal := Val(HttpPost->valor)
  2329. Local nSaldo := 0
  2330. Local nToler := 0
  2331. Local lVldLimite:= .F.
  2332. Web Extended Init cHtml Start U_inSite()
  2333. If Empty(HttpSession->CodVend)
  2334. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2335. Return cHtml
  2336. endif
  2337. lVldLimite:= GetNewPar("PR_VLDLIMT",.F.)
  2338. If !lVldLimite
  2339. cHtml:= cValtochar(99999999)+"|"+cValtochar(0)
  2340. Else
  2341. //Posiciona no cliente
  2342. dbSelectArea("SA1")
  2343. SA1->(dbSeek(xFilial("SA1")+cCliente))
  2344. //Busca valor em pedidos liberados
  2345. cQry:= "SELECT SUM(C6_VALOR) TOTAL FROM "+RetSqlName("SC6")+" SC6 "
  2346. cQry+= "INNER JOIN "+RetSqlName("SC5")+" SC5 ON C5_FILIAL = C6_FILIAL AND C5_NUM = C6_NUM AND C5_CLIENT = C6_CLI "
  2347. cQry+= "AND C5_LOJACLI = C6_LOJA AND C5_LIBEROK = 'S' AND C5_NOTA = ' ' AND SC5.D_E_L_E_T_ = ' ' "
  2348. cQry+= "WHERE C6_CLI = '"+SA1->A1_COD+"' AND C6_LOJA = '"+SA1->A1_LOJA+"' "
  2349. 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') "
  2350. cQry+= "AND SC9.D_E_L_E_T_ = ' ') "
  2351. cQry+= "AND SC6.D_E_L_E_T_ = ' ' "
  2352. If Select("QRL") > 0
  2353. QRL->(dbCloseArea())
  2354. Endif
  2355. APWExOpenQuery(cQry,'QRL',.T.)
  2356. nSaldo:= SA1->A1_LC - (SA1->A1_SALDUP + QRL->TOTAL)
  2357. nToler:= nSaldo * GetNewPar("PR_TOLERLC",0)/100 //Tolerancia de 1%
  2358. //nSaldo:= nSaldo + nToler
  2359. cHtml:= cValtochar(nSaldo)+"|"+cValtochar(nToler) //Alltrim(Transform(nSaldo,"@E 999,999,999,999.99"))
  2360. Endif
  2361. Web Extended end
  2362. Return cHtml
  2363. /*__________________________________________________________________________
  2364. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2365. ¦¦+-----------------------------------------------------------------------+¦¦
  2366. ¦¦¦Funçäo ¦ DescVista ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 21.08.19 ¦¦¦
  2367. ¦¦+----------+------------------------------------------------------------¦¦¦
  2368. ¦¦¦Descriçäo ¦ Verifica se a condição de pagamento tem desconto à vista ¦¦¦
  2369. ¦¦+-----------------------------------------------------------------------+¦¦
  2370. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2371. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2372. */
  2373. User Function DescVista()
  2374. Local cHtml
  2375. Local cCondicao := Alltrim(HttpPost->condicao)
  2376. Web Extended Init cHtml Start U_inSite()
  2377. cHtml:= cValtoChar(Posicione("SE4",1,xFilial("SE4")+cCondicao,"E4_DESCPED"))
  2378. Web Extended end
  2379. Return cHtml
  2380. /*__________________________________________________________________________
  2381. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2382. ¦¦+-----------------------------------------------------------------------+¦¦
  2383. ¦¦¦Funçäo ¦ MargemPT ¦ Autor ¦ Lucilene Mendes ¦ Data ¦ 01.02.25 ¦¦¦
  2384. ¦¦+----------+------------------------------------------------------------¦¦¦
  2385. ¦¦¦Descriçäo ¦ Calcula a margem de contribuição do orçamento ¦¦¦
  2386. ¦¦+-----------------------------------------------------------------------+¦¦
  2387. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2388. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2389. */
  2390. User Function MargemPt()
  2391. Local cHtml
  2392. Local cMgItem := ""
  2393. Local cSepField := "|#|"
  2394. Local cAcessorio:= ""
  2395. Local cLinha:= HttpPost->item
  2396. Local cProduto:= HttpPost->produto
  2397. Local cCliente:= HttpPost->cliente
  2398. Local cCodVend:= HttpPost->vendedor
  2399. Local cTes:= HttpPost->tes
  2400. Local nQtde := val(HttpPost->qtd)
  2401. Local nValor := val(HttpPost->valor)
  2402. Local nCusto := val(HttpPost->custo)
  2403. Local nComis2 := val(HttpPost->comis2)
  2404. Local nComis3 := val(HttpPost->comis3)
  2405. Local nRT := val(HttpPost->RT)
  2406. Local cTpFrete:= HttpPost->tpfrete
  2407. Local nPerFrete:= val(HttpPost->perfrete)
  2408. Local nTotOrc := val(HttpPost->total)
  2409. Local nMC_T := val(HttpPost->mct)
  2410. Local nMcTotIt := val(HttpPost->mcit)
  2411. Local nMC_L:= 0
  2412. Local nMC_E:= 0
  2413. Local nMC_P:= 0
  2414. Local nMCTotIt_L := 0
  2415. Local nMCTotIt_E := 0
  2416. Local nMCTotIt_P := 0
  2417. Web Extended Init cHtml Start U_inSite()
  2418. aRet:= u_PtCalcMc(cProduto,cTes,cCliente,nQtde,nValor,nCusto,nComis2, nComis3,nRT,cTpFrete,nPerFrete,nTotOrc,cCodVend)
  2419. If Empty(aRet)
  2420. cHtml := "Falha ao calcular a margem"
  2421. Else
  2422. cTipo := Alltrim(SB1->B1_TIPO)
  2423. cGrupo := Alltrim(SB1->B1_GRUPO)
  2424. nCusto:= aRet[1]
  2425. nICMS:= aRet[2]
  2426. nSubsTrb:= aRet[3]
  2427. nSubsCus:= aRet[4]
  2428. nPIS:= aRet[5]
  2429. nCofins:= aRet[6]
  2430. nComissao:= aRet[7]
  2431. nFrete:= aRet[8]
  2432. nRT:= aRet[9]
  2433. nIPI:= aRet[10]
  2434. nST:= aRet[11]
  2435. nPerST:= aRet[12]
  2436. nINSSP:= aRet[13]
  2437. nCargIcm:= aRet[14]
  2438. nMC:= aRet[15]
  2439. nPMC:= ((nMC / nValor) * 100)
  2440. nRecLiq:= aRet[17]
  2441. //Cria o grid da tabela de margem
  2442. cMgItem+= '<tr class="odd" id="linha'+cLinha+'">'
  2443. cMgItem+= ' <td align="text-left">'
  2444. cMgItem+= ' <input id="ITEM'+cLinha+'" name="CK_ITEM'+cLinha+'" class="form-control input-block " type="text" disabled value="'+cLinha+'">'
  2445. cMgItem+= ' </td>'
  2446. cMgItem+= ' <td align="text-left">'
  2447. cMgItem+= ' <input id="CODIGO'+cLinha+'" name="CODIGO'+cLinha+'" class="form-control input-block " type="text" width="*" disabled value="'+Alltrim(cProduto)+' - '+Alltrim(SB1->B1_DESC)+'">'
  2448. cMgItem+= ' </td>'
  2449. cMgItem+= ' <td align="text-left">'
  2450. cMgItem+= ' <input id="GRUPO'+cLinha+'" name="GRUPO'+cLinha+'" class="form-control input-block " type="text" width="*" disabled value="'+cTipo+' - '+cGrupo+'">'
  2451. cMgItem+= ' </td>'
  2452. cMgItem+= ' <td align="text-left">'
  2453. 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")+'">'
  2454. cMgItem+= ' </td>'
  2455. cMgItem+= ' <td align="text-left">'
  2456. 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")+'">'
  2457. cMgItem+= ' </td>'
  2458. cMgItem+= '</tr>'
  2459. // Carrega as Variaveis Totalizador Orçamento, Luminarias e Equipamentos.
  2460. If cTipo == "CO" .AND. cGrupo== "ELEV"
  2461. // soma a margem total
  2462. nMC_T := nMC_T + (nValor * -1)
  2463. // soma o valor total
  2464. nMCTotIt := nMCTotIt + nValor
  2465. Else
  2466. // se nao é do grupo pan e nao são acessorios de painel de led
  2467. cAcessorio:= GetNewPar("PR_ACESSOR","ACS-LHT44BC/ACS-LHT44PT/ACS-LHT45BC/ACS-LHT45PT")
  2468. If cGRUPO <> 'PAN' .and. !(AllTrim(cProduto) $ cAcessorio)
  2469. // soma a margem total
  2470. nMC_T := nMC_T + nMC
  2471. // soma o valor total
  2472. nMCTotIt := nMCTotIt + nValor
  2473. EndIf
  2474. EndIf
  2475. //Luminarias
  2476. If cTipo == "PA"
  2477. 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.;
  2478. cGRUPO == "LED" .OR. cGRUPO == "LEDC" .OR. cGRUPO == "LEDD" .OR. cGRUPO == "LEDT" .OR. cGRUPO == "PEL" .OR. cGRUPO == "REIL" .OR. cGRUPO == "REIO" .OR. cGRUPO == "REAB"
  2479. nMC_L := nMC_L + nMc
  2480. nMCTotIt_L := nMCTotIt_L + nValor
  2481. ElseIf cGrupo == "IMP" .AND. Substr(cProduto,1,2) <> "AC"
  2482. nMC_L := nMC_L + nMc
  2483. nMCTotIt_L := nMCTotIt_L + nValor
  2484. EndIf
  2485. nMLuminaria:= (nMC_L / nMCTotIt_L)*100
  2486. ElseIf cTipo == "RE" .AND. cGrupo == "RELU"
  2487. nMC_L := nMC_L + nMc
  2488. nMCTotIt_L := nMCTotIt_L + nValor
  2489. nMLuminaria:= (nMC_L / nMCTotIt_L)*100
  2490. EndIf
  2491. // Acessorios e Equipamentos.
  2492. If cTipo == "PA"
  2493. 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.;
  2494. cGRUPO == "E046" .OR. cGRUPO == "E047" .OR. cGRUPO == "E048" .OR. cGRUPO == "E049"
  2495. // Acessorios PAN 23.01.2023 sao contabilizados junto do grupo pan
  2496. If !(AllTrim(cProduto) $ cAcessorio)
  2497. nMC_E := nMC_E + nMc
  2498. nMCTotIt_E := nMCTotIt_E + nValor
  2499. Endif
  2500. ElseIf cGrupo == "IMP" .AND. Substr(cProduto,1,2) = "AC"
  2501. nMC_E := nMC_E + nMc
  2502. nMCTotIt_E := nMCTotIt_E + nValor
  2503. EndIf
  2504. nMEquipa:= (nMC_E / nMCTotIt_E)*100
  2505. ElseIf (cTipo == "MP" .OR. cTipo == "RE")
  2506. If cGRUPO <> "RELU"
  2507. nMC_E := nMC_E + nMc
  2508. nMCTotIt_E := nMCTotIt_E + nValor
  2509. nMEquipa:= (nMC_E / nMCTotIt_E)*100
  2510. EndIf
  2511. EndIf
  2512. // Grupo PAN
  2513. IF cGrupo == "PAN" .or. (AllTrim(cProduto) $ cAcessorio)
  2514. nMC_P := nMC_P + nMc
  2515. nMCTotIt_P := nMCTotIt_P + nValor
  2516. nMPainel:= (nMC_P / nMCTotIt_P)*100
  2517. EndIf
  2518. cHtml := "OK:"
  2519. cHtml += cMgItem+cSepField
  2520. cHtml += Alltrim(Transform(nMC_T,"@E 999,999,999.99"))+cSepField
  2521. cHtml += Alltrim(Transform(nMCTotIt,"@E 999,999,999.99"))+cSepField
  2522. cHtml += Alltrim(Transform(nMC_L,"@E 999,999,999.99"))+cSepField
  2523. cHtml += Alltrim(Transform(nMCTotIt_L,"@E 999,999,999.99"))+cSepField
  2524. cHtml += Alltrim(Transform(nMC_E,"@E 999,999,999.99"))+cSepField
  2525. cHtml += Alltrim(Transform(nMCTotIt_E,"@E 999,999,999.99"))+cSepField
  2526. cHtml += Alltrim(Transform(nMC_P,"@E 999,999,999.99"))+cSepField
  2527. cHtml += Alltrim(Transform(nMCTotIt_P,"@E 999,999,999.99"))
  2528. Endif
  2529. Web Extended end
  2530. Return cHtml
  2531. /*__________________________________________________________________________
  2532. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2533. ¦¦+-----------------------------------------------------------------------+¦¦
  2534. ¦¦¦Funçäo ¦ InfGetAn ¦ Autor ¦ Anderson Zelenski ¦ Data ¦ 24.08.17 ¦¦¦
  2535. ¦¦+----------+------------------------------------------------------------¦¦¦
  2536. ¦¦¦Descriçäo ¦ Função para utilizar no Ajax pra retornar os anexos ¦¦¦
  2537. ¦¦+-----------------------------------------------------------------------+¦¦
  2538. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  2539. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  2540. */
  2541. /*
  2542. User Function InfGetAn()
  2543. Local cHtml
  2544. Local cCotacao := ""
  2545. Local cFornece := ""
  2546. Local cLoja := ""
  2547. Local cDirCot := "anexosPortal\cotacoes\"
  2548. Web Extended Init cHtml Start U_inSite()
  2549. #IFDEF SMSDEBUG
  2550. conOut(Procname()+"("+ltrim(str(procline()))+") *** Portal ")
  2551. aInfo := HttpGet->aGets
  2552. For nI := 1 to len(aInfo)
  2553. conout('GET '+str(nI,3)+' = '+aInfo[nI]+' -> '+&("HTTPGET->"+aInfo[nI]))
  2554. Next
  2555. aInfo := HttpPost->aPost
  2556. For nI := 1 to len(aInfo)
  2557. conout('POST '+str(nI,3)+' = '+aInfo[nI]+' -> '+&("HTTPPOST->"+aInfo[nI]))
  2558. Next
  2559. #ENDIF
  2560. cCotacao := HttpPost->cotacao
  2561. cFornece := HttpPost->fornece
  2562. cLoja := HttpPost->loja
  2563. //Verifica se existem anexos
  2564. cDirCot += cCotacao+'\'+cFornece+cLoja+'\'
  2565. cDirPortal := "../anexos/cotacoes/"+cCotacao+"/"+cFornece+cLoja+"/"
  2566. aAnexos := DIRECTORY(cDirCot+"*.*","",,.T.)
  2567. If Len(aAnexos) > 0
  2568. cHTML := U_GetAnexos(aAnexos,cDirPortal)
  2569. Else
  2570. cHTML := "Sem Anexos para essa cotação."
  2571. EndIf
  2572. Web Extended End
  2573. Return (cHTML)
  2574. Static Function NewDlg1()
  2575. /*
  2576. A tag abaixo define a criação e ativação do novo diálogo. Você pode colocar esta tag
  2577. onde quer que deseje em seu código fonte. A linha exata onde esta tag se encontra, definirá
  2578. quando o diálogo será exibido ao usuário.
  2579. Nota: Todos os objetos definidos no diálogo serão declarados como Local no escopo da
  2580. função onde a tag se encontra no código fonte.
  2581. */
  2582. Return
  2583. //-------------------------------------------------------------------
  2584. /*/{Protheus.doc} U_GETPARC
  2585. Retorna lista de parceiros ativos do AC4
  2586. @param
  2587. @return cHtml - HTML com options dos parceiros
  2588. @author Matheus Bientinezi
  2589. @version P12
  2590. @since 09/01/2025
  2591. /*/
  2592. //-------------------------------------------------------------------
  2593. User Function GETPARC()
  2594. Local cHtml := ""
  2595. Local cQry := ""
  2596. Web Extended Init cHtml Start U_inSite()
  2597. If Empty(HttpSession->Regional)
  2598. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2599. Return cHtml
  2600. endif
  2601. cQry := "SELECT AC4_PARTNE, AC4_NOME "
  2602. cQry += "FROM " + RetSqlName("AC4") + " AC4 "
  2603. cQry += "WHERE AC4.D_E_L_E_T_ = ' ' "
  2604. cQry += "AND AC4_FILIAL = '" + xFilial("AC4") + "' "
  2605. cQry += "AND AC4_MSBLQL <> '1' " // Status do registro não bloqueado
  2606. cQry += "ORDER BY AC4_NOME"
  2607. If Select("QRT") > 0
  2608. QRT->(dbCloseArea())
  2609. Endif
  2610. APWExOpenQuery(cQry,'QRT',.T.)
  2611. cHtml := '<option value="">Selecione...</option>'
  2612. While !QRT->(Eof())
  2613. cHtml += '<option value="' + AllTrim(QRT->AC4_PARTNE) + '">'
  2614. cHtml += AllTrim(QRT->AC4_PARTNE) + ' - ' + AllTrim(QRT->AC4_NOME)
  2615. cHtml += '</option>'
  2616. QRT->(dbSkip())
  2617. EndDo
  2618. QRT->(dbCloseArea())
  2619. Web Extended End
  2620. Return cHtml
  2621. //-------------------------------------------------------------------
  2622. /*/{Protheus.doc} U_ADDPARC
  2623. Adiciona parceiro na tabela Z81
  2624. @param
  2625. @return cHtml - JSON com status da operação
  2626. @author Matheus Bientinezi
  2627. @version P12
  2628. @since 09/01/2025
  2629. /*/
  2630. //-------------------------------------------------------------------
  2631. User Function ADDPARC()
  2632. Local cHtml := ""
  2633. Local cParceiro := HttpPost->parceiro
  2634. Local nRTPagar := Val(HttpPost->rtpagar)
  2635. Local nRTAumentar:= Val(HttpPost->rtaumentar)
  2636. Local cNumOrc := HttpPost->numOrc
  2637. Local lSuccess := .T.
  2638. local LFA074G := GetMv('LC_FA074G1')
  2639. Web Extended Init cHtml Start U_inSite()
  2640. If Empty(HttpSession->Regional)
  2641. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2642. Return cHtml
  2643. endif
  2644. If Empty(cNumOrc)
  2645. lSuccess := .F.
  2646. cHtml := "NOK - Número do orçamento não informado"
  2647. return cHtml
  2648. EndIf
  2649. // Verifica se usuário tem permissão para RT Aumentar
  2650. If HttpSession->Regional $ lFA074G .And. !Empty(nRTAumentar)
  2651. cHtml := "NOK - Usuário sem permissão para informar RT Aumentar"
  2652. return cHtml
  2653. EndIf
  2654. DbSelectArea("Z81")
  2655. RecLock("Z81", .T.)
  2656. Z81->Z81_FILIAL := xFilial("Z81")
  2657. Z81->Z81_ORCAME := cNumOrc
  2658. Z81->Z81_PARTNE := cParceiro
  2659. Z81->Z81_PERRT := nRTPagar
  2660. Z81->Z81_PERAUM := nRTAumentar
  2661. MsUnlock()
  2662. cHtml := "OK - Parceiro adicionado com sucesso!"
  2663. Web Extended End
  2664. Return cHtml
  2665. //-------------------------------------------------------------------
  2666. /*/{Protheus.doc} U_EDITPARC
  2667. Adiciona parceiro na tabela Z81
  2668. @param
  2669. @return cHtml - JSON com status da operação
  2670. @author Matheus Bientinezi
  2671. @version P12
  2672. @since 09/01/2025
  2673. /*/
  2674. //-------------------------------------------------------------------
  2675. User Function EDITPARC()
  2676. Local cHtml := ""
  2677. Local cParceiro := HttpPost->parceiro
  2678. Local nRTPagar := Val(HttpPost->rtpagar)
  2679. Local nRTAumentar:= Val(HttpPost->rtaumentar)
  2680. Local cNumOrc := HttpPost->numOrc
  2681. local LFA074G := GetMv('LC_FA074G1')
  2682. Web Extended Init cHtml Start U_inSite()
  2683. If Empty(HttpSession->Regional)
  2684. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2685. Return cHtml
  2686. endif
  2687. If Empty(cNumOrc)
  2688. cHtml := "NOK - Número do orçamento não informado"
  2689. return cHtml
  2690. EndIf
  2691. // Verifica se usuário tem permissão para RT Aumentar
  2692. If HttpSession->Regional $ lFA074G .And. !Empty(nRTAumentar)
  2693. cHtml := "NOK - Usuário sem permissão para informar RT Aumentar"
  2694. return cHtml
  2695. EndIf
  2696. DbSelectArea("Z81")
  2697. DbSetOrder(1)
  2698. If DbSeek(xFilial("Z81")+ cNumOrc + cParceiro)
  2699. RecLock("Z81", .F.)
  2700. Z81->Z81_PERRT := nRTPagar
  2701. Z81->Z81_PERAUM := nRTAumentar
  2702. MsUnlock()
  2703. cHtml := "OK"
  2704. Else
  2705. cHtml := "NOK - Parceiro não encontrado!"
  2706. return cHtml
  2707. EndIf
  2708. Web Extended End
  2709. Return cHtml
  2710. //-------------------------------------------------------------------
  2711. /*/{Protheus.doc} U_DELPARC
  2712. Exclui parceiro da tabela Z81
  2713. @param
  2714. @return cHtml - JSON com status da operação
  2715. @author Matheus Bientinezi
  2716. @version P12
  2717. @since 09/01/2025
  2718. /*/
  2719. //-------------------------------------------------------------------
  2720. User Function DELPARC()
  2721. Local cHtml := ""
  2722. Local cParceiro := HttpPost->parceiro
  2723. Local nOrc := HttpPost->numOrc
  2724. Web Extended Init cHtml Start U_inSite()
  2725. If Empty(HttpSession->Regional)
  2726. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2727. Return cHtml
  2728. endif
  2729. DbSelectArea("Z81")
  2730. DbSetOrder(1)
  2731. If DbSeek(xFilial("Z81") + nOrc + cParceiro )
  2732. RecLock("Z81", .F.)
  2733. DbDelete()
  2734. MsUnlock()
  2735. cHtml := "OK - Parceiro excluído com sucesso!"
  2736. Else
  2737. cHtml := "NOK - Parceiro não encontrado!"
  2738. EndIf
  2739. Web Extended End
  2740. Return cHtml
  2741. //-------------------------------------------------------------------
  2742. /*/{Protheus.doc} U_LISTPARC
  2743. Lista os parceiros cadastrados na Z81
  2744. @param
  2745. @return cHtml - HTML com as linhas da tabela de parceiros
  2746. @author Matheus Bientinezi
  2747. @version P12
  2748. @since 09/01/2025
  2749. /*/
  2750. //-------------------------------------------------------------------
  2751. User Function LISTPARC()
  2752. Local cHtml := ""
  2753. Local cQry := ""
  2754. Local cNumOrc := HttpPost->numOrc
  2755. Web Extended Init cHtml Start U_inSite()
  2756. If Empty(HttpSession->Regional)
  2757. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2758. Return cHtml
  2759. endif
  2760. If Empty(cNumOrc)
  2761. cHtml := "NOK - Numero do orcameto nao informado"
  2762. Return(cHtml)
  2763. EndIf
  2764. cQry := "SELECT Z81.Z81_PARTNE, AC4.AC4_NOME, Z81.Z81_PERRT, Z81.Z81_PERAUM, Z81.Z81_ORCAME "
  2765. cQry += "FROM " + RetSqlName("Z81") + " Z81 "
  2766. cQry += "INNER JOIN " + RetSqlName("AC4") + " AC4 ON "
  2767. cQry += "AC4.AC4_FILIAL = '" + xFilial("AC4") + "' AND "
  2768. cQry += "AC4.AC4_PARTNE = Z81.Z81_PARTNE AND "
  2769. cQry += "AC4.AC4_MSBLQL <> '1' AND " // Status do registro não bloqueado
  2770. cQry += "AC4.D_E_L_E_T_ = ' ' "
  2771. cQry += "WHERE Z81.D_E_L_E_T_ = ' ' "
  2772. cQry += "AND Z81.Z81_FILIAL = '" + xFilial("Z81") + "' "
  2773. cQry += "AND Z81.Z81_ORCAME = '" + cNumOrc + "' "
  2774. cQry += "ORDER BY AC4.AC4_NOME"
  2775. If Select("QRC") > 0
  2776. QRC->(dbCloseArea())
  2777. Endif
  2778. APWExOpenQuery(cQry,'QRC',.T.)
  2779. cHtml := ""
  2780. While !QRC->(Eof())
  2781. cHtml += '<tr>'
  2782. cHtml += '<td>' + AllTrim(QRC->Z81_PARTNE) + ' - ' + AllTrim(QRC->AC4_NOME) + '</td>'
  2783. cHtml += '<td>' + AllTrim(Str(QRC->Z81_PERRT)) + '%</td>'
  2784. cHtml += '<td>' + AllTrim(Str(QRC->Z81_PERAUM)) + '%</td>'
  2785. cHtml += '<td>'
  2786. 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'"+')">'
  2787. cHtml += '<i class="fa fa-pencil"></i>'
  2788. cHtml += '</span> '
  2789. 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'"+')">'
  2790. cHtml += '<i class="fa fa-trash"></i>'
  2791. cHtml += '</span>'
  2792. cHtml += '</td>'
  2793. cHtml += '</tr>'
  2794. QRC->(dbSkip())
  2795. EndDo
  2796. QRC->(dbCloseArea())
  2797. Web Extended End
  2798. Return cHtml
  2799. //-------------------------------------------------------------------
  2800. /*/{Protheus.doc} U_LISTNEG
  2801. Lista as etapas cadastradas na SZW
  2802. @param
  2803. @return cHtml - HTML com as linhas da tabela de etapas
  2804. @author Matheus Bientinezi
  2805. @version P12
  2806. @since 04/02/2025
  2807. /*/
  2808. //-------------------------------------------------------------------
  2809. User Function LISTNEG()
  2810. Local cHtml := ""
  2811. Local cQry := ""
  2812. Local cNumOrc := HttpPost->numOrc
  2813. Web Extended Init cHtml Start U_inSite()
  2814. If Empty(HttpSession->Regional)
  2815. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2816. Return cHtml
  2817. endif
  2818. If Empty(cNumOrc)
  2819. cHtml := "NOK - Numero do orcameto nao informado"
  2820. Return(cHtml)
  2821. EndIf
  2822. cQry := "SELECT * FROM " + RetSQLName("SZW") + " WHERE ZW_FILIAL = '" + xFilial("SCJ") + "' AND "
  2823. cQry += "ZW_ORCAMEN = '" + Trim(cNumOrc) + "' AND " + RetSQLName("SZW") + ".D_E_L_E_T_ = ' ' "
  2824. cQry += "ORDER BY ZW_DATA, ZW_HORA, R_E_C_N_O_ "
  2825. If Select("QRC") > 0
  2826. QRC->(dbCloseArea())
  2827. Endif
  2828. APWExOpenQuery(cQry,'QRC',.T.)
  2829. cHtml := ""
  2830. While !QRC->(Eof())
  2831. cHtml += '<tr>'
  2832. cHtml += '<td>' + cvaltochar(stod(QRC->ZW_DATA))+ '</td>'
  2833. cHtml += '<td>' + AllTrim(QRC->ZW_HORA) + '</td>'
  2834. cHtml += '<td>' + AllTrim(QRC->ZW_USUARIO) + '</td>'
  2835. cHtml += '<td>' + AllTrim(QRC->ZW_HISTOR) + '</td>'
  2836. // cHtml += '<td>'
  2837. // 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'"+')">'
  2838. // cHtml += '<i class="fa fa-pencil"></i>'
  2839. // cHtml += '</span> '
  2840. // 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'"+')">'
  2841. // cHtml += '<i class="fa fa-trash"></i>'
  2842. // cHtml += '</span>'
  2843. // cHtml += '</td>'
  2844. cHtml += '</tr>'
  2845. QRC->(dbSkip())
  2846. EndDo
  2847. QRC->(dbCloseArea())
  2848. Web Extended End
  2849. Return cHtml
  2850. //-------------------------------------------------------------------
  2851. /*/{Protheus.doc} U_ADDETAPA
  2852. Adiciona parceiro na tabela szw
  2853. @param
  2854. @return cHtml - JSON com status da operação
  2855. @author Matheus Bientinezi
  2856. @version P12
  2857. @since 04/02/2025
  2858. /*/
  2859. //-------------------------------------------------------------------
  2860. User Function ADDETAPA()
  2861. Local cHtml := ""
  2862. Local cDescri := HttpPost->cdescricao
  2863. Local cNumOrc := HttpPost->corcamento
  2864. Local lSuccess := .T.
  2865. Web Extended Init cHtml Start U_inSite()
  2866. If Empty(HttpSession->Regional)
  2867. cHtml := '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL=U_PortalLogin.apw">'
  2868. Return cHtml
  2869. endif
  2870. If Empty(cNumOrc)
  2871. lSuccess := .F.
  2872. cHtml := "NOK - Número do orçamento não informado"
  2873. return cHtml
  2874. EndIf
  2875. RecLock("SZW",.T.)
  2876. ZW_FILIAL := Trim(cFilAnt)
  2877. ZW_DATA := DDATABASE
  2878. ZW_HORA := LEFT(TIME(),5)
  2879. ZW_HISTOR := cDescri
  2880. ZW_USUARIO := HttpSession->Regional
  2881. ZW_ORCAMEN := cNumOrc
  2882. MsUnlock()
  2883. cHtml := "OK - Parceiro adicionado com sucesso!"
  2884. Web Extended End
  2885. Return cHtml
  2886. /*/{Protheus.doc} CopiarZ81
  2887. copiar parceiros de comissao rt
  2888. @type function
  2889. @author Luiz Jacinto
  2890. @since 24/04/2024
  2891. @param cOrcamento, character, orcamento original
  2892. @param cNovo, character, novo orcamento
  2893. /*/
  2894. Static Function CopiarZ81(cOrcamento,cNovo)
  2895. // salva area aberta
  2896. Local aArea := FwGetArea()
  2897. // item temporario
  2898. Local aItem := {}
  2899. // parceiros
  2900. Local aDados:= {}
  2901. // lista de campos reais da tabela
  2902. Local aCab := FwSX3Util():GetAllFields("Z81",.F.)
  2903. // contador
  2904. Local nX := 0
  2905. // contador
  2906. Local nY := 0
  2907. // abre a tabela
  2908. Z81->(DbSetOrder(1))
  2909. // se nao achou parceiros no orcamento original
  2910. If !Z81->(MsSeek(xFilial("Z81")+cOrcamento))
  2911. // sai da funcao
  2912. Return
  2913. Endif
  2914. // passa por todos os parceiros
  2915. While !Z81->(EOF()) .and. Z81->Z81_FILIAL == xFilial("Z81") .and. Z81->Z81_ORCAME == cOrcamento
  2916. // limpa array temporario
  2917. aItem := {}
  2918. // passa por todos os campos da tabela
  2919. For nX := 1 to Len(aCab)
  2920. // adiciona valor da coluna
  2921. aadd(aItem,&("Z81->"+aCab[nX]))
  2922. Next
  2923. // adiciona parceiro ao array de parceiros
  2924. aadd(aDados,aItem)
  2925. // proximo registro
  2926. Z81->(DbSkip())
  2927. Enddo
  2928. // se achou parceiro
  2929. If !Vazio(aDados)
  2930. // passa por todos os parceiros
  2931. For nX := 1 to Len(aDados)
  2932. // trava o registro
  2933. RecLock("Z81",.T.)
  2934. // passa por todos os campos da tabela
  2935. For nY := 1 to Len(aCab)
  2936. // atualiza o valor do novo registro
  2937. &("Z81->"+aCab[nY]) := aDados[nX][nY]
  2938. Next
  2939. // altera o numero do orcamento para o novo numero
  2940. Z81->Z81_ORCAME := cNovo
  2941. // destrava o registro
  2942. MsUnLock("Z81")
  2943. Next
  2944. Endif
  2945. // restaura area aberta
  2946. FwRestArea(aArea)
  2947. Return