AddOrc - Copia.aph.bak 108 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279
  1. <%
  2. /**** Pagina de login do site ****/
  3. Local cLCodLogin := ""
  4. if type ("cCodLogin") <> "U"
  5. cLCodLogin := cCodLogin
  6. Endif
  7. %>
  8. <!DOCTYPE html>
  9. <html class="fixed sidebar-left-collapsed">
  10. <head>
  11. <!-- Basic -->
  12. <meta charset="iso-8859-1">
  13. <link rel="shortcut icon" href="images/favicon.png" type="image/x-icon" />
  14. <title><%=cTitle%></title>
  15. <meta name="keywords" content="<%=cTitle%>" />
  16. <meta name="description" content="<%=cTitle%>">
  17. <meta name="author" content="SMSTI">
  18. <meta http-equiv="Chache-Control" content="no-cache" />
  19. <meta http-equiv="Expires" content="0" />
  20. <meta http-equiv="Pragma" content="no-cache" />
  21. <!-- Mobile Metas -->
  22. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  23. <!-- Web Fonts -->
  24. <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800|Shadows+Into+Light" rel="stylesheet" type="text/css">
  25. <!-- Vendor CSS -->
  26. <link rel="stylesheet" href="assets/vendor/bootstrap/css/bootstrap.css" />
  27. <link rel="stylesheet" href="assets/vendor/font-awesome/css/font-awesome.css" />
  28. <link rel="stylesheet" href="assets/vendor/magnific-popup/magnific-popup.css" />
  29. <link rel="stylesheet" href="assets/vendor/bootstrap-datepicker/css/bootstrap-datepicker3.css" />
  30. <link rel="stylesheet" href="assets/vendor/bootstrap-select/css/bootstrap-select.min.css" />
  31. <style>
  32. body .btn {
  33. white-space: nowrap !important;
  34. display: inline;
  35. overflow-y: hidden;
  36. }
  37. </style>
  38. <!-- Specific Page Vendor CSS -->
  39. <link rel="stylesheet" href="assets/vendor/select2/css/select2.css" />
  40. <link rel="stylesheet" href="assets/vendor/select2-bootstrap-theme/select2-bootstrap.min.css" />
  41. <link rel="stylesheet" href="assets/vendor/jquery-datatables-bs3/assets/css/datatables.css" />
  42. <link rel="stylesheet" href="assets/vendor/bootstrap-fileupload/bootstrap-fileupload.min.css" />
  43. <link rel="stylesheet" href="assets/vendor/pnotify/pnotify.custom.css" />
  44. <!-- Theme CSS -->
  45. <link rel="stylesheet" href="assets/stylesheets/theme.css" />
  46. <!-- Skin CSS -->
  47. <link rel="stylesheet" href="assets/stylesheets/skins/default.css" />
  48. <!-- Theme Custom CSS -->
  49. <link rel="stylesheet" href="assets/stylesheets/theme-custom.css">
  50. <!-- Head Libs -->
  51. <script src="assets/vendor/modernizr/modernizr.js"></script>
  52. <script src="assets/vendor/style-switcher/style.switcher.localstorage.js"></script>
  53. <style>
  54. .flexContainer {
  55. display: flex;
  56. }
  57. .smsediticon {
  58. flex: 1;
  59. }
  60. .btedit { /* margem e largura da imagem */
  61. margin-left: -45px;
  62. width: 47px;
  63. }
  64. </style>
  65. </head>
  66. <body>
  67. <section class="body">
  68. <!-- start: header -->
  69. <header class="header">
  70. <%=cHeader%>
  71. </header>
  72. <!-- end: header -->
  73. <div class="inner-wrapper">
  74. <!-- start: sidebar -->
  75. <aside id="sidebar-left" class="sidebar-left">
  76. <div class="sidebar-header">
  77. <div class="sidebar-title">
  78. Menu
  79. </div>
  80. <div class="sidebar-toggle hidden-xs" data-toggle-class="sidebar-left-collapsed" data-target="html" data-fire-event="sidebar-left-toggle">
  81. <i class="fa fa-bars" aria-label="Toggle sidebar"></i>
  82. </div>
  83. </div>
  84. <div class="nano">
  85. <div class="nano-content">
  86. <nav id="menu" class="nav-main" role="navigation">
  87. <ul class="nav nav-main">
  88. <%=cMenus%>
  89. </ul>
  90. </nav>
  91. </div>
  92. <script>
  93. // Maintain Scroll Position
  94. if (typeof localStorage !== 'undefined') {
  95. if (localStorage.getItem('sidebar-left-position') !== null) {
  96. var initialPosition = localStorage.getItem('sidebar-left-position'),
  97. sidebarLeft = document.querySelector('#sidebar-left .nano-content');
  98. sidebarLeft.scrollTop = initialPosition;
  99. }
  100. }
  101. </script>
  102. </div>
  103. </aside>
  104. <!-- end: sidebar -->
  105. <section role="main" class="content-body">
  106. <header class="page-header">
  107. <h2><%=cPagina%></h2>
  108. <div class="right-wrapper pull-right">
  109. </div>
  110. </header>
  111. <!-- start: page -->
  112. <section class="panel">
  113. <!-- <header class="panel-heading">
  114. </header> -->
  115. <div class="panel-body">
  116. <div class="row">
  117. <div class="col-lg-12">
  118. <section class="panel form-wizard" id="w9">
  119. <form action = "" method="post" class="form-horizontal" id="formOrc">
  120. <div class="tabs">
  121. <ul class="nav nav-tabs nav-justify">
  122. <li class="active">
  123. <a href="#orc-informar" data-toggle="tab" class="text-center">Orçamento</a>
  124. </li>
  125. <!--
  126. <li class="">
  127. <a href="#orc-anexos" data-toggle="tab" class="text-center">Anexos</a>
  128. </li>
  129. -->
  130. </ul>
  131. <div class="tab-content">
  132. <div id="orc-informar" class="tab-pane active">
  133. <!--
  134. <%=cVendedor%>
  135. -->
  136. <!-- linha 0: dados do Orçamento -->
  137. <%=cFilOrc%>
  138. <%=cCodOrc%>
  139. <div class="mb-md hidden-lg hidden-xl"></div>
  140. <div class="mb-md hidden-lg hidden-xl"></div>
  141. <!-- linha 1: dados da empresa -->
  142. <div class="row form-group">
  143. <div class="col-lg-6">
  144. <label class="control-label">Cliente</label>
  145. <%=cCliente%>
  146. </div>
  147. <div class="col-lg-5">
  148. <label class="control-label">Oportunidade</label>
  149. <%=cOport%>
  150. </div>
  151. <div class="col-lg-1">
  152. <label class="control-label">Revisão</label>
  153. <%=cRevOpt%>
  154. </div>
  155. </div>
  156. <!-- linha 3: input -->
  157. <div class="row form-group">
  158. <div class="col-lg-3">
  159. <label class="control-label">Tipo de Cliente</label>
  160. <%=cTpCliente%>
  161. </div>
  162. <div class="col-lg-2">
  163. <label class="control-label">Grupo de Tributação</label>
  164. <%=cGrpTrib%>
  165. </div>
  166. <div class="col-lg-5" style="display:none;">
  167. <label class="control-label">Tabela de Preço</label>
  168. <%=cTabela%>
  169. </div>
  170. <div class="col-lg-4">
  171. <label class="control-label">Contato</label>
  172. <%=cContato%>
  173. </div>
  174. <div class="col-lg-1">
  175. <label class="control-label">DDD</label>
  176. <%=cContDDD%>
  177. </div>
  178. <div class="col-lg-2">
  179. <label class="control-label">Telefone</label>
  180. <%=cContTel%>
  181. </div>
  182. </div>
  183. <!-- linha 4 input -->
  184. <div class="row form-group">
  185. <div class="col-lg-6">
  186. <label class="control-label">Cliente de Entrega</label>
  187. <%=cCliEntr%>
  188. </div>
  189. <div class="col-lg-6">
  190. <label class="control-label">Local de Entrega</label>
  191. <%=cLocalEnt%>
  192. </div>
  193. </div>
  194. <!-- linha 5 input -->
  195. <div class="row form-group">
  196. <div class="col-lg-6">
  197. <label class="control-label">Obra</label>
  198. <%=cObra%>
  199. </div>
  200. <div class="col-lg-3">
  201. <label class="control-label">Status da Obra</label>
  202. <%=cStatusObra%>
  203. </div>
  204. <div class="col-lg-3">
  205. <label class="control-label">Previsão de Fechamento</label>
  206. <%=cPrevFecha%>
  207. </div>
  208. </div>
  209. <!-- linha 6 input -->
  210. <div class="row form-group">
  211. <div class="col-lg-3">
  212. <label class="control-label">Condição de Pagamento</label>
  213. <%=cCondPag%>
  214. </div>
  215. <div class="col-lg-6">
  216. <label class="control-label">Intermediador</label>
  217. <%=cIntermed%>
  218. </div>
  219. <div class="col-lg-2">
  220. <label class="control-label">Retorno</label>
  221. <%=cRetorno%>
  222. </div>
  223. </div>
  224. <!-- linha 7 input -->
  225. <div class="row form-group">
  226. <div class="col-lg-2">
  227. <label class="control-label">Estudo Luminotécnico</label>
  228. <%=cEstudo%>
  229. </div>
  230. <div class="col-lg-2">
  231. <label class="control-label">Num. Estudo</label>
  232. <%=cNumEst%>
  233. </div>
  234. <div class="col-lg-3">
  235. <label class="control-label">Segmento</label>
  236. <%=cSegmento%>
  237. </div>
  238. <div class="col-lg-2">
  239. <label class="control-label">Prospecção</label>
  240. <%=cProsp%>
  241. </div>
  242. <div class="col-lg-3">
  243. <label class="control-label">Prospectado Por</label>
  244. <%=cProspPor%>
  245. </div>
  246. </div>
  247. <!-- linha 8: input -->
  248. <div class="row form-group">
  249. <div class="col-lg-4">
  250. <label class="control-label">Regional</label>
  251. <%=cRegional%>
  252. </div>
  253. <div class="col-lg-4">
  254. <label class="control-label">Vendedor 2</label>
  255. <%=cVend2%>
  256. </div>
  257. <div class="col-lg-4">
  258. <label class="control-label">Vendedor 3</label>
  259. <%=cVend3%>
  260. </div>
  261. </div>
  262. <!-- linha 9: input -->
  263. <div class="row form-group">
  264. <div class="col-lg-4">
  265. <label class="control-label">Vendedor 4</label>
  266. <%=cVend4%>
  267. </div>
  268. <div class="col-lg-4">
  269. <label class="control-label">Especificado por</label>
  270. <%=cEspecif%>
  271. </div>
  272. <div class="col-lg-4">
  273. <label class="control-label">Negociadora</label>
  274. <%=cNegociad%>
  275. </div>
  276. </div>
  277. <!-- linha 10: input -->
  278. <div class="row form-group">
  279. <div class="col-lg-2">
  280. <label class="control-label">Validade</label>
  281. <%=cValidade%>
  282. </div>
  283. <div class="col-lg-2">
  284. <label class="control-label">Prazo de Embarque</label>
  285. <%=cPrazoEmb%>
  286. </div>
  287. <div class="col-lg-2">
  288. <label class="control-label">Tipo de Frete</label>
  289. <%=cTpFrete%>
  290. </div>
  291. <div class="col-lg-2">
  292. <label class="control-label">% Frete</label>
  293. <%=cPFrete%>
  294. </div>
  295. <div class="col-lg-2">
  296. <label class="control-label">Valor do Frete</label>
  297. <%=cValFre%>
  298. </div>
  299. <div class="col-lg-2">
  300. <label class="control-label">% RT</label>
  301. <%=cComRT%>
  302. </div>
  303. <!--
  304. <div class="col-lg-4">
  305. <label class="control-label">Transportadora</label>
  306. <%=cTransp%>
  307. </div>
  308. -->
  309. </div>
  310. <!-- linha 11 input -->
  311. <div class="row form-group">
  312. <div class="col-md-5">
  313. <label class="control-label" for="textareaDefault">Observação Comercial</label>
  314. <textarea class="form-control" rows="3" data-plugin-maxlength="" maxlength="240" id="CJ_OBS" name="CJ_OBS" <%=Iif(!lEdit,'disabled','')%>><%=cObsCom%></textarea>
  315. </div>
  316. <%=cMargemCont%>
  317. </div>
  318. <!-- linha 12 input -->
  319. <div class="row form-group">
  320. </div>
  321. <br>
  322. <br>
  323. <!-- tabela com os produtos do orçamento -->
  324. <div class="table-responsive" id="ItensOrc" style="overflow-x:visible">
  325. <section class="panel">
  326. <header class="panel-heading">
  327. <h2 class="panel-title">Itens do Orçamento</h2>
  328. </header>
  329. <table class="table table-bordered table-striped mb-none table-hover table-condensed" id="datatable-editable" aria-describedby="datatable-details_info">
  330. <thead>
  331. <tr>
  332. <%=cOrcCabec%>
  333. </tr>
  334. </thead>
  335. <tbody>
  336. <%=cOrcItens%>
  337. </tbody>
  338. </table>
  339. </section>
  340. </div>
  341. <br>
  342. <!-- botões com ações na tabela dos itens -->
  343. <%=cBtnItens%>
  344. <br>
  345. <br>
  346. <!-- Totais -->
  347. <div class="col-lg-13">
  348. <section class="panel">
  349. <header class="panel-heading">
  350. <h2 class="panel-title">Totais do Orçamento</h2>
  351. </header>
  352. <div class="panel-body">
  353. <div class="form-inline" align="center">
  354. <div class="row">
  355. <div class="col-sm-12">
  356. <label class="">Itens&nbsp;</label>
  357. <input class="form-control text-right" id="TOTAL_ITENS" name="TOTAL_ITENS" placeholder="0,00" disabled="" type="text" value=<%=Transform(nTVlrUnit,"@E 999,999,999,999.99")%>></input>
  358. &nbsp;&nbsp;&nbsp;&nbsp;
  359. <label class="">Impostos&nbsp;</label>
  360. <input class="form-control text-right" id="TOTAL_IMP" name="TOTAL_IMP" placeholder="0,00" disabled="" type="text" value=<%=Transform(nTImpostos,"@E 999,999,999,999.99")%>></input>
  361. &nbsp;&nbsp;&nbsp;&nbsp;
  362. <label class="">Frete&nbsp;</label>
  363. <input class="form-control text-right" id="TOTAL_FRETE" name="TOTAL_FRETE" placeholder="0,00" disabled="" type="text" value=<%=Transform(nTFrete,"@E 999,999,999,999.99")%>></input>
  364. &nbsp;&nbsp;&nbsp;&nbsp;
  365. <label class="text-weight-extrabold">Total&nbsp;</label>
  366. <input class="form-control text-right text-weight-bold" id="TOTAL_ORC" name="TOTAL_ORC" placeholder="0,00" disabled="" type="text" value=<%=Transform(nTTotal,"@E 999,999,999,999.99")%>></input>
  367. </div>
  368. </div>
  369. <br>
  370. <!--
  371. <div class="row">
  372. <div class="col-sm-12">
  373. <label class="">Desconto&nbsp;</label>
  374. <input class="form-control text-right" id="TOTAL_ACRESC" name="TOTAL_ACRESC" placeholder="0,00" disabled="" type="text" value=<%=Transform(nTAcresc,"@E 999,999,999,999.99")%>></input>
  375. <label class="">Total&nbsp;</label>
  376. <input class="form-control text-right" id="TOTAL_ORC" name="TOTAL_ORC" placeholder="0,00" disabled="" type="text" value=<%=Transform(nTTotal,"@E 999,999,999,999.99")%>></input>
  377. </div>
  378. </div>
  379. <div class="row">
  380. <div class="col-sm-12">
  381. <label class="">Comissão Prevista&nbsp;</label>
  382. <input class="form-control text-right" id="TOTAL_COM" name="TOTAL_COM" placeholder="0,00" disabled="" type="text" value=<%=Transform(nTComiss,"@E 999,999,999,999.99")%>></input>
  383. </div>
  384. </div>
  385. -->
  386. </div>
  387. </div>
  388. </section>
  389. </div>
  390. <br>
  391. <br>
  392. <div class="row form-group" align="center">
  393. <%=cBotoes%>
  394. </div>
  395. </div>
  396. <!-- aba de anexos
  397. <div id="orc-anexos" class="tab-pane">
  398. <div class="form-group">
  399. <label class="col-md-3 control-label">Anexar: </label>
  400. <div class="col-md-9">
  401. <div class="fileupload fileupload-new" data-provides="fileupload">
  402. <div class="input-append">
  403. <div class="uneditable-input">
  404. <i class="fa fa-file fileupload-exists"></i>
  405. <span class="fileupload-preview"></span>
  406. </div>
  407. <span class="btn btn-default btn-file">
  408. <span class="fileupload-exists">Selecionar</span>
  409. <span class="fileupload-new">Arquivo</span>
  410. <input type="file" name="anexo" id="anexo" />
  411. </span>
  412. <a href="#" id="btnOrcUpload" class="btn btn-default fileupload-exists" data-dismiss="fileupload">Gravar</a>
  413. </div>
  414. </div>
  415. </div>
  416. </div>
  417. <div class="row mg-files" data-sort-destination data-sort-id="media-gallery" id="OrcAnexos">
  418. <%=cAnexos%>
  419. </div>
  420. </div>
  421. -->
  422. </div>
  423. </div>
  424. </form>
  425. </section>
  426. </div>
  427. </div>
  428. </div>
  429. </section>
  430. <div style="display:none;">
  431. <form action="U_OrcUpload.apw?PR=<%=cLCodLogin%>" method="post" id="frmOrcUpload" enctype="multipart/form-data">
  432. <input type="hidden" name="dirOrc" value="<%=cDirOrc%>" />
  433. </form>
  434. </div>
  435. <footer class="panel-footer text-right">
  436. Desenvolvido por <img src="images/sms.png" />
  437. </footer>
  438. </div>
  439. </section>
  440. <!-- end: page -->
  441. <div id="dialogRemover" class="modal-block mfp-hide">
  442. <section class="panel">
  443. <header class="panel-heading">
  444. <h2 class="panel-title">Exclusão da linha</h2>
  445. </header>
  446. <div class="panel-body">
  447. <div class="modal-wrapper">
  448. <div class="modal-text">
  449. <p>Confirma a exclusão desta linha?</p>
  450. </div>
  451. </div>
  452. </div>
  453. <footer class="panel-footer">
  454. <div class="row">
  455. <div class="col-md-12 text-right">
  456. <button id="dialogConfirm" class="btn btn-primary">Confirma</button>
  457. <button id="dialogCancel" class="btn btn-default">Cancela</button>
  458. </div>
  459. </div>
  460. </footer>
  461. </section>
  462. </div>
  463. <div id="modalSuccess" class="modal-block modal-block-success mfp-hide">
  464. <section class="panel">
  465. <header class="panel-heading">
  466. <h2 class="panel-title">Success!</h2>
  467. </header>
  468. <div class="panel-body">
  469. <div class="modal-wrapper">
  470. <div class="modal-icon">
  471. <i class="fa fa-check"></i>
  472. </div>
  473. <div class="modal-text">
  474. <h4>Success</h4>
  475. <p>This is a successfull message.</p>
  476. </div>
  477. </div>
  478. </div>
  479. <footer class="panel-footer">
  480. <div class="row">
  481. <div class="col-md-12 text-right">
  482. <button class="btn btn-success modal-dismiss">OK</button>
  483. </div>
  484. </div>
  485. </footer>
  486. </section>
  487. </div>
  488. <!-- Vendor -->
  489. <script src="assets/vendor/jquery/jquery.js"></script>
  490. <script src="assets/vendor/jquery-browser-mobile/jquery.browser.mobile.js"></script>
  491. <script src="assets/vendor/bootstrap/js/bootstrap.js"></script>
  492. <script src="assets/vendor/nanoscroller/nanoscroller.js"></script>
  493. <script src="assets/vendor/bootstrap-datepicker/js/bootstrap-datepicker.js"></script>
  494. <script src="assets/vendor/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js"></script>
  495. <script src="assets/vendor/magnific-popup/jquery.magnific-popup.js"></script>
  496. <script src="assets/vendor/jquery-placeholder/jquery-placeholder.js"></script>
  497. <script src="assets/vendor/fuelux/js/spinner.js"></script>
  498. <!-- Custom -->
  499. <script src="custom/js/bootbox.js"></script>
  500. <script src="custom/js/moeda.js"></script>
  501. <!-- Specific Page Vendor -->
  502. <script src="assets/vendor/select2/js/select2.js"></script>
  503. <script src="assets/vendor/jquery-datatables/media/js/jquery.dataTables.js"></script>
  504. <script src="assets/vendor/jquery-datatables/extras/TableTools/js/dataTables.tableTools.min.js"></script>
  505. <script src="assets/vendor/jquery-datatables-bs3/assets/js/datatables.js"></script>
  506. <script src="assets/vendor/jquery-datatables/media/js/jquery.dataTables.js"></script>
  507. <script src="assets/vendor/bootstrap-maxlength/bootstrap-maxlength.js"></script>
  508. <script src="assets/vendor/autosize/autosize.js"></script>
  509. <script src="assets/vendor/bootstrap-fileupload/bootstrap-fileupload.min.js"></script>
  510. <script src="assets/vendor/pnotify/pnotify.custom.js"></script>
  511. <script src="assets/vendor/bootstrap-select/bootstrap-select.min.js"></script>
  512. <!-- Theme Base, Components and Settings -->
  513. <script src="assets/javascripts/theme.js"></script>
  514. <!-- Theme Initialization Files -->
  515. <script src="assets/javascripts/theme.init.js"></script>
  516. <!-- Theme Custom -->
  517. <script src="assets/javascripts/theme.custom.js"></script>
  518. <script src="custom/js/jquery.maskMoney.js"></script>
  519. <script src="custom/js/portalMask.js"></script>
  520. <script type="text/javascript">
  521. var tblDesc = [];
  522. var optProd = '<%=cOptProd%>';
  523. var optCond = '<%=cOptCond%>';
  524. var optCli = '<%=cOptCli%>';
  525. /**
  526. Desabilita o enter na página
  527. **/
  528. $(function () {
  529. $('form').bind("keypress", function (e) {
  530. if (e.keyCode == 13) return false;
  531. });
  532. });
  533. //Remove as opções da tabela e adiciona o scroll
  534. $(document).ready(function () {
  535. $('#datatable-editable').DataTable({
  536. "scrollX": true,
  537. "ordering": false,
  538. "searching": false,
  539. "paging": false,
  540. "autoWidth": true,
  541. "info": false
  542. });
  543. $('.dataTables_length').addClass('.w-auto'); //ajusta o tamanho das colunas automaticamente
  544. });
  545. //Formata campos de moeda
  546. $(function() {
  547. //$('#iCK_PRCVEN01').maskMoney({thousands:'.', decimal:','});
  548. $('.myformato').maskMoney({thousands:'.', decimal:','});
  549. $('.percentual').maskMoney({thousands:'.', decimal:',', suffix:'%',allowNegative:true});
  550. })
  551. function formate() {
  552. $('.myformato').maskMoney({thousands:'.', decimal:','});
  553. $('.percentual').maskMoney({thousands:'.', decimal:',', suffix:'%',allowNegative:true});
  554. }
  555. <%=cTblDesc%>
  556. function sleep(ms) {
  557. return new Promise(resolve => setTimeout(resolve, ms));
  558. }
  559. //Manipulando as colunas
  560. function ocultaColumn (colIndex) {
  561. var table = document.getElementById('datatable-editable');
  562. for (var r = 0; r < table.rows.length; r++)
  563. table.rows[r].cells[colIndex].style.display = 'none';
  564. }
  565. function mostraColumn (colIndex) {
  566. var table = document.getElementById('datatable-editable');
  567. for (var r = 0; r < table.rows.length; r++)
  568. table.rows[r].cells[colIndex].style.display = '';
  569. }
  570. /**
  571. Funcao excutada ao selecionar o cliente
  572. **/
  573. function SelCliente(){
  574. var cliente;
  575. var lOK = false;
  576. var dialogCli = bootbox.dialog({
  577. message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i>&nbsp;&nbsp;Buscando dados do cliente. Aguarde...</p>',
  578. closeButton: false
  579. });
  580. cliente = $("#CJ_CLIENTE").val();
  581. //Verifica se cliente tem títulos em atraso
  582. $.ajax({
  583. url: "U_GetSitCli.apw?PR=<%=cLCodLogin%>",
  584. type: "POST",
  585. data: 'cliente='+cliente,
  586. cache: false,
  587. success: function(data){
  588. dialogCli.modal('hide');
  589. if (data.indexOf('<META HTTP-EQUIV') >= 0 ) {
  590. $("html").html(data);
  591. return;
  592. }
  593. aCli = data.split('|#|');
  594. if (aCli[1] != "" && aCli[1] != "::" && aCli[1].indexOf("Expires") == -1) {
  595. var dialog = bootbox.dialog({
  596. title: 'Mensagem do Cliente',
  597. message: "<p>"+aCli[1]+"</p>",
  598. backdrop: true,
  599. buttons: {
  600. ok: {
  601. label: "OK"
  602. }
  603. }
  604. });
  605. }
  606. //cliente bloqueado para comprar
  607. if (aCli[0] == "0"){
  608. //Bloqueia os campos para impossibilitar continuar a inclusão
  609. atuModoCpo('B')
  610. } else {
  611. //Desbloqueia os campos
  612. atuModoCpo('D')
  613. $("#select2-CJ_TIPOCLI-container").html($("#CJ_TIPOCLI option[value='"+aCli[2]+"']").html());
  614. $("#CJ_TIPOCLI").val(aCli[2]);
  615. $("#CJ_GRPTRIB").val(aCli[3]);
  616. if (aCli[4] != ""){
  617. $("#CJ_CONDPAG").val(aCli[4]);
  618. $("#select2-CJ_CONDPAG-container").html($("#CJ_CONDPAG option[value='"+aCli[4]+"']").html());
  619. }
  620. $("#CJ_CONDPAG").removeAttr('disabled');
  621. $("#CJ_UFENT").val(aCli[5]);
  622. //Adiciona as opções do cliente
  623. //optCli = document.querySelector("#CJ_CLIENTE").options;
  624. //$("#CJ_CLIINTE").append($(optCli).clone(true).removeAttr('id').attr("id","CJ_CLIINTE"));
  625. $("#CJ_CLIINTE").append($.parseHTML(optCli));
  626. $('.selectpicker').selectpicker('render');
  627. $('.selectpicker').selectpicker('refresh');
  628. $("#CJ_CLIENT").append($.parseHTML(optCli));
  629. $('.selectpicker').selectpicker('render');
  630. $('.selectpicker').selectpicker('refresh');
  631. $('#CJ_CLIENT').selectpicker('val', cliente);
  632. $("#CJ_NROPOR").focus();
  633. }
  634. }
  635. });
  636. }
  637. /**
  638. Atualiza o modo de edição do campo
  639. **/
  640. function atuModoCpo(cTipo){
  641. var aCampos = ["CJ_CLIENTE","CJ_NROPOR","CJ_XCONTAT","CJ_XCONDDD","CJ_XCONTEL","CJ_CLIENT","CJ_UFENT","CJ_OBRA","CJ_VEND6","CJ_TERMOME","CJ_CONDPAG","CJ_CLIINTE","CJ_RETORNO","CJ_LUMINOT","CJ_SEGMENT","CJ_PROPECC","CJ_REGIAO","CJ_VEND","CJ_VEND3","CJ_VEND4","CJ_CODESP","CJ_VEND7","CJ_VALIDA","CJ_PRZEMB","CJ_TPFRETE","CJ_PERCFRT","CJ_FRETE","CJ_OBS","CK_PRODUTO01"];
  642. var nI = 0;
  643. //Atualiza os campos
  644. for (nI = 0; nI < (aCampos.length-1) ; nI++) {
  645. if(cTipo == 'B'){
  646. $("#"+aCampos[nI]).attr("disabled","");
  647. } else {
  648. $("#"+aCampos[nI]).removeAttr('disabled');
  649. $("#"+aCampos[nI]).attr("disabled",false);
  650. }
  651. }
  652. }
  653. /**
  654. Preenche a revisão da oportunidade
  655. **/
  656. function atuRevOpt(){
  657. var cOport = $("#CJ_NROPOR").val();
  658. var cobjOport = $("#CJ_NROPOR")[0];
  659. var cRevisa = cobjOport.options[cobjOport.selectedIndex].text.substr(7,2)
  660. var dialog = bootbox.dialog({
  661. message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i>&nbsp;&nbsp;Buscando dados da oportunidade... Aguarde...</p>',
  662. closeButton: false
  663. });
  664. if(cOport != ""){
  665. $("#CJ_REVISA").val(cRevisa);
  666. $.ajax({
  667. url: "U_GetDadosOpt.apw?PR=<%=cLCodLogin%>",
  668. data: 'oportunidade='+cOport+'&revisao='+cRevisa,
  669. type: "POST",
  670. async: false,
  671. success:
  672. function(dados) {
  673. if (dados.indexOf('<META HTTP-EQUIV') >= 0 ) {
  674. $("html").html(dados);
  675. return;
  676. } else {
  677. if (dados.substr(0, 2) == "OK") {
  678. aVlr = dados.substr(5).split('|#|');
  679. //Atualiza a comissão
  680. $("#CJ_COMISTR").val(aVlr[0]);
  681. //Atualiza o vendedor
  682. $("#CJ_VEND3").append($.parseHTML(aVlr[1]));
  683. $('.selectpicker').selectpicker('render');
  684. $('.selectpicker').selectpicker('refresh');
  685. $("#select2-CJ_VEND3-container").html($("#CJ_VEND3 option[value='"+aVlr[2]+"']").html());
  686. } else {
  687. bootbox.alert("Falha ao localizar os dados da oportunidade!");
  688. }
  689. }
  690. }
  691. });
  692. } else {
  693. $("#CJ_REVISA").val("");
  694. }
  695. dialog.modal('hide');
  696. }
  697. /**
  698. Atualiza o valor do frete
  699. **/
  700. function atuVlrFrete(){
  701. var cUFEnt = $("#CJ_UFENT").val().substr(0,2)
  702. var cMunEnt = $("#CJ_UFENT").val().substr(3,5)
  703. if(cUFEnt != ""){
  704. $.ajax({
  705. url: "U_GetPerFrt.apw?PR=<%=cLCodLogin%>",
  706. data: 'uf='+cUFEnt+'&mun='+cMunEnt,
  707. type: "POST",
  708. async: false,
  709. success:
  710. function(frete) {
  711. if (frete.indexOf('<META HTTP-EQUIV') >= 0 ) {
  712. $("html").html(frete);
  713. return;
  714. } else {
  715. //Atualiza o frete
  716. $("#CJ_PERCFRT").removeAttr("disabled");
  717. $("#CJ_PERCFRT").val(frete);
  718. }
  719. }
  720. });
  721. }
  722. }
  723. /**
  724. Valida o estudo
  725. **/
  726. function vldEstudo(){
  727. var cEstudo = $("#CJ_LUMINOT").val();
  728. if(cEstudo == "1"){
  729. $("#CJ_REGLUMI").removeAttr('disabled');
  730. } else {
  731. $("#CJ_REGLUMI").val("");
  732. $("#select2-CJ_REGLUMI-container").html($("#CJ_REGLUMI option[value='']").html());
  733. $("#CJ_REGLUMI").attr("disabled","");
  734. }
  735. }
  736. /**
  737. Valida a prospecção
  738. **/
  739. function vldProspec(){
  740. var cProspec = $("#CJ_PROPECC").val();
  741. if(cProspec == "S"){
  742. $("#CJ_PROSCOD").removeAttr('disabled');
  743. } else {
  744. $("#CJ_PROSCOD").val("");
  745. $("#select2-CJ_PROSCOD-container").html($("#CJ_PROSCOD option[value='']").html());
  746. $("#CJ_PROSCOD").attr("disabled","");
  747. }
  748. }
  749. /**
  750. Valida o campo prospectado por
  751. **/
  752. function vldProsPor(){
  753. var cProspec = $("#CJ_PROPECC").val();
  754. var cProsPor = $("#CJ_PROSCOD").val();
  755. if(cProspec == "S" && cProsPor == ""){
  756. bootbox.alert("Informe o campo Prospectado Por!")
  757. }
  758. if (cProspec == "N"){
  759. $("#CJ_PROSCOD").val("");
  760. $("#select2-CJ_PROSCOD-container").html($("#CJ_PROSCOD option[value='']").html());
  761. $("#CJ_PROSCOD").attr("disabled","");
  762. }
  763. }
  764. /**
  765. Busca os produtos a partir da tabela de preço
  766. **/
  767. function selProd(){
  768. var tabpreco;
  769. var cliente;
  770. var item;
  771. cliente = $("#CJ_CLIENTE").val();
  772. tabpreco = $("#CJ_TABELA").val();
  773. item = $("#PROXIMO").val();
  774. $.ajax({
  775. url: "U_GetProdutos.apw?PR=<%=cLCodLogin%>",
  776. data: 'cliente='+cliente+'&tabela='+tabpreco,
  777. type: "POST",
  778. async: false,
  779. success:
  780. function(produtos) {
  781. if (produtos.indexOf('<META HTTP-EQUIV') >= 0 ) {
  782. $("html").html(produtos);
  783. return;
  784. }
  785. if ( produtos == "" ) {
  786. bootbox.alert('Não foram encontrados produtos para a tabela de preço '+tabpreco+'!');
  787. $("#CJ_TABELA").focus();
  788. }
  789. else {
  790. //Bloqueia a edição do campo de tabela
  791. $("#CJ_TABELA").attr("disabled","");
  792. //Preenche o select dos produtos
  793. $("#CK_PRODUTO"+item).append($.parseHTML(produtos));
  794. $('.selectpicker').selectpicker('render');
  795. $('.selectpicker').selectpicker('refresh');
  796. optProd = produtos;
  797. }
  798. }
  799. });
  800. }
  801. /**
  802. Busca as condições de pagamento disponíveis de acordo com a modalidade
  803. **/
  804. function condPag(){
  805. var modali = $("#CJ_XMODALI").val();
  806. var dialogTab = bootbox.dialog({
  807. message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i>&nbsp;&nbsp;Buscando condições de pagamento... Aguarde...</p>',
  808. closeButton: false
  809. });
  810. $.ajax({
  811. url: "U_GetCondPgto.apw?PR=<%=cLCodLogin%>",
  812. data: 'modali='+modali,
  813. type: "POST",
  814. async: false,
  815. success:
  816. function(condicao) {
  817. if (condicao.indexOf('<META HTTP-EQUIV') >= 0 ) {
  818. $("html").html(condicao);
  819. return;
  820. }
  821. if ( condicao == "" ) {
  822. bootbox.alert('Falha ao localizar as condições de pagamento para esta modalidade!');
  823. document.getElementById('CJ_CONDPAG').innerText = null;
  824. $('.selectpicker').selectpicker('render');
  825. $('.selectpicker').selectpicker('refresh');
  826. $("#CJ_XMODALI").focus();
  827. }
  828. else {
  829. //Preenche o select das condições
  830. document.getElementById('CJ_CONDPAG').innerText = null;
  831. $("#CJ_CONDPAG").append(condicao);
  832. optCond = condicao;
  833. if ($("#CJ_XMODALI").val() != "") {
  834. $("#CJ_CONDPAG").removeAttr('disabled');
  835. }
  836. //Para cartão habilita as opções de parcela e bandeira
  837. if ($("#CJ_XMODALI").val() == "03") {
  838. $("#CJ_XPARC").removeAttr('disabled');
  839. $("#CJ_XPARC").attr("required","");
  840. $("#CJ_XPARC").attr("aria-required","true"); //torna obrigatório
  841. // $("#CJ_XBAND").removeAttr('disabled');
  842. // $("#CJ_XBAND").attr("required","");
  843. // $("#CJ_XBAND").attr("aria-required","true"); //torna obrigatório
  844. } else {
  845. $("#CJ_XPARC").attr('disabled',"");
  846. //$("#CJ_XBAND").attr('disabled',"");
  847. }
  848. }
  849. }
  850. });
  851. dialogTab.modal('hide');
  852. }
  853. /**
  854. Valida a condição de pagamento selecionada
  855. **/
  856. function vldCond(){
  857. var valDesc = 0;
  858. $.ajax({
  859. url: "U_VldCondPg.apw?PR=<%=cLCodLogin%>",
  860. data: 'condPgto='+$("#CJ_CONDPAG").val(),
  861. type: "POST",
  862. async: false,
  863. success:
  864. function(retorno) {
  865. valDesc = parseFloat(retorno);
  866. //Atualiza a variável
  867. $("#DESCCOND").val(valDesc);
  868. if (valDesc > 0) {
  869. bootbox.alert("Condição de pagamento com desconto. Ao salvar o orçamento será aplicado o desconto de "+mascaraValor(valDesc.toFixed(2))+"%.");
  870. } else {
  871. $("#DESCCOND").val("0");
  872. }
  873. //Atualiza o valor do produto quando altera a condição de pagamento
  874. if ($('#iCK_PRCVEN01').val()!=$('#CK_PRCVEN01').val() || $("#DESCCOND").val()=="0"){
  875. AtuValProd();
  876. }
  877. }
  878. });
  879. }
  880. /**
  881. Monta a tela para selecionar o produto
  882. **/
  883. function getProduto(btPesquisa){
  884. var objProd = btPesquisa.closest("td").find("[autocomplete=off]");
  885. var cProdBusca = $("#"+objProd.attr("name")).val().toUpperCase();
  886. //var nItem = btPesquisa[0].id.substr(8,2);
  887. var nItem = objProd.attr("name").substr(10);
  888. $("#PROXIMO").val(nItem);
  889. // Usando a função buscarProdutos com um callback
  890. buscarProdutos(cProdBusca, nItem, function (produtosEncontrados) {
  891. if (produtosEncontrados.length >= 1) {
  892. var selectOptions = '<select id="produtoSelecionado">';
  893. //var selectOptions = '<select data-plugin-selectTwo class="form-control populate placeholder" data-plugin-options="{ "placeholder": "Selecione...", "allowClear": false }" id="produtoSelecionado">';
  894. var indiceHifen;
  895. var selOptions = '';
  896. produtosEncontrados.forEach(function (produto) {
  897. selectOptions += "<option value='" + produto + "'>" + produto + "</option>";
  898. //selOptions+= "{text: '"+produto+"',value: '"+produto+"'},";
  899. });
  900. selectOptions += "</select>";
  901. bootbox.dialog({
  902. title: 'Produtos',
  903. message: "<p>Selecione o produto desejado:</p>" + selectOptions,
  904. backdrop: false,
  905. size: 'large',
  906. buttons: {
  907. confirm: {
  908. label: 'Confirmar',
  909. className: 'btn-primary',
  910. callback: function () {
  911. var produtoSelecionado = $("#produtoSelecionado").val();
  912. // Atualiza o campo original com o produto escolhido
  913. $("#CK_PRODUTO" + nItem).val(produtoSelecionado);
  914. // Encontra a posição do primeiro h?fen na string
  915. indiceHifen = produtoSelecionado.indexOf("-");
  916. //Pega apenas o codigo do produto
  917. produtoSelecionado = produtoSelecionado.substring(0, indiceHifen);
  918. //Remove espaços vazios
  919. produtoSelecionado = produtoSelecionado.trim();
  920. //gatProduto(objProd,produtoSelecionado);
  921. }
  922. },
  923. cancel: {
  924. label: 'Cancelar',
  925. className: 'btn-default',
  926. callback: function () {
  927. }
  928. }
  929. }/*,
  930. callback: function (result) {
  931. console.log(result);
  932. }*/
  933. });
  934. /*
  935. bootbox.dialog({
  936. title: 'Produtos',
  937. message: "<p>Selecione o produto desejado:</p>" + selectOptions,
  938. backdrop: false,
  939. size: 'large',
  940. buttons: {
  941. confirm: {
  942. label: 'Confirmar',
  943. className: 'btn-primary',
  944. callback: function () {
  945. var produtoSelecionado = $("#produtoSelecionado").val();
  946. // Atualiza o campo original com o produto escolhido
  947. $("#CK_PRODUTO" + nItem).val(produtoSelecionado);
  948. // Encontra a posição do primeiro h?fen na string
  949. indiceHifen = produtoSelecionado.indexOf("-");
  950. //Pega apenas o codigo do produto
  951. produtoSelecionado = produtoSelecionado.substring(0, indiceHifen);
  952. //Remove espaços vazios
  953. produtoSelecionado = produtoSelecionado.trim();
  954. gatProduto(objProd,produtoSelecionado);
  955. }
  956. },
  957. cancel: {
  958. label: 'Cancelar',
  959. className: 'btn-default',
  960. callback: function () {
  961. }
  962. }
  963. }
  964. });*/
  965. } else {
  966. // Nenhum produto encontrado
  967. bootbox.alert("Nenhum produto encontrado!")
  968. }
  969. });
  970. }
  971. /**
  972. Busca dados do produto a partir do código ou descrição
  973. **/
  974. function buscarProdutos(cProdBusca,item,callback){
  975. var cliente = $("#CJ_CLIENTE").val();
  976. var tabpreco = $("#CJ_TABELA").val();
  977. var item = $("#PROXIMO").val();
  978. if (cProdBusca != ""){
  979. if(cliente == ""){
  980. bootbox.alert("Selecione o cliente para continuar!");
  981. return false;
  982. }
  983. $.ajax({
  984. url: "U_GetLikePro.apw?PR=<%=cLCodLogin%>",
  985. data: 'cliente=' + cliente + '&tabela=' + tabpreco + '&digit=' + cProdBusca,
  986. method: "POST",
  987. async: false,
  988. success: function( produtos ) {
  989. if (produtos.toLowerCase().indexOf('<META HTTP-EQUIV') >= 0 ||produtos.toLowerCase().indexOf("Expires") != -1) {
  990. $("html").html(produtos);
  991. callback([]); // Retorna uma lista vazia em caso de erro
  992. }
  993. if (produtos == "") {
  994. bootbox.alert('Não foram encontrados produtos para o termo pesquisado!');
  995. callback([]); // Retorna uma lista vazia em caso de erro
  996. } else {
  997. $("#CK_PRODUTO" + item).empty(); // Limpa o conteúdo existente
  998. /*
  999. // Preenche o select dos produtos
  1000. $("#CK_PRODUTO" + item).empty(); // Limpa o conteúdo existente
  1001. $("#CK_PRODUTO"+item).append($.parseHTML(produtos));
  1002. $('.selectpicker').selectpicker('render');
  1003. $('.selectpicker').selectpicker('refresh');
  1004. optProd = produtos;
  1005. */
  1006. var selectpicker = $("<select>", {
  1007. class: "selectpicker",
  1008. title: "Selecione um produto"
  1009. });
  1010. selectpicker.append($.parseHTML(produtos));
  1011. // Adiciona os valores dos elementos <option> listaProdutos
  1012. var listaProdutos = selectpicker.find('option').map(function () {
  1013. //return $(this).val();
  1014. ////Luiz SMS - 04/01/2024
  1015. return $(this).text();//Pegar o texto completo
  1016. }).get();
  1017. $("#CK_PRODUTO" + item).append(selectpicker);
  1018. callback(listaProdutos); // Retorna a lista de produtos encontrados
  1019. }
  1020. }
  1021. });
  1022. } else {
  1023. bootbox.alert("Informe o produto para busca!");
  1024. }
  1025. }
  1026. /**
  1027. Busca dados do produto a partir do código de barras
  1028. **/
  1029. function Maiuscula(cItemAtu){
  1030. var cCodBar = $("#"+cItemAtu.attr("id")).val().toUpperCase();
  1031. $(cItemAtu).val(cCodBar);
  1032. }
  1033. /**
  1034. Gatilho acionado ao selecionar o produto para preencher os valores
  1035. **/
  1036. function gatProduto(objInput) {
  1037. var nItens = parseFloat($("#PROXIMO").val());
  1038. var lProdOK = true
  1039. var nItem = objInput.attr("name").substr(10);
  1040. var dialogProd = bootbox.dialog({
  1041. message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i>&nbsp;&nbsp;Buscando dados do produto... Aguarde...</p>',
  1042. closeButton: false
  1043. });
  1044. //valida a digitação duplicada de itens
  1045. for (i = 1; i<=nItens; i++) {
  1046. cItem = String(i);
  1047. if (parseInt(i) < 10 ){cItem = "0"+String(i)};
  1048. cItmOrc = $("#CK_ITEM"+cItem).val();
  1049. if(cItmOrc != "x" && nItem != cItem ) {
  1050. if ($('#CK_PRODUTO'+cItem).val() == objInput.val()){
  1051. lProdOK = false;
  1052. $('#CK_PRODUTO'+nItem).val("");
  1053. $("#select2-CK_PRODUTO"+cItem+"-container").html("Selecione...");
  1054. }
  1055. }
  1056. }
  1057. if (!lProdOK ) {
  1058. bootbox.alert("Este item já foi informado no orçamento!");
  1059. dialogProd.modal('hide');
  1060. }
  1061. //Fim da validação de itens duplicados
  1062. if ( ! objInput.is('[readonly]') && $.trim(objInput.val()) != "" && lProdOK ) {
  1063. jQuery.ajax({
  1064. type: "POST",
  1065. url: "U_GATPROD.APW?PR=<%=cLCodLogin%>",
  1066. data: 'produto='+encodeURIComponent(objInput.val()),
  1067. error: function (jqXHR, textStatus, error){
  1068. dialogProd.modal('hide');
  1069. bootbox.alert("Falha ao recuperar informações!");
  1070. console.log(error);
  1071. },
  1072. success: function( data ) {
  1073. var aVlr;
  1074. var cMsgErro;
  1075. var nItem = objInput.attr("name").substr(10);
  1076. dialogProd.modal('hide');
  1077. if (data.substr(0, 2) == "OK") {
  1078. aVlr = data.substr(3).split('|#|');
  1079. $("input[name='CK_UM"+nItem+"']").val(aVlr[0]);
  1080. $.trim($("input[name='CK_PRCVEN"+nItem+"']").val(aVlr[1]));
  1081. $.trim($("input[name='iCK_PRCVEN"+nItem+"']").val(aVlr[1]));
  1082. $.trim($("input[name='CK_XVALICM"+nItem+"']").val(aVlr[2]));
  1083. $.trim($("input[name='CK_XVALIPI"+nItem+"']").val(aVlr[3]));
  1084. $.trim($("input[name='CK_XICMST"+nItem+"']").val(aVlr[4]));
  1085. $.trim($("input[name='CK_LOCAL"+nItem+"']").val(aVlr[15]));
  1086. //Input hidden
  1087. $("input[id='ALIQ_IPI"+nItem+"']").val(aVlr[5]);
  1088. $("input[id='ALIQ_ICMS"+nItem+"']").val(aVlr[6]);
  1089. $("input[id='ALIQ_ST"+nItem+"']").val(aVlr[12]);
  1090. $("input[id='BASE_IPI"+nItem+"']").val(aVlr[11]);
  1091. $("input[id='BASE_ICMS"+nItem+"']").val(aVlr[9]);
  1092. $("input[id='BASE_ST"+nItem+"']").val(aVlr[10]);
  1093. $("input[id='VAL_ICMS"+nItem+"']").val(aVlr[2]);
  1094. $("input[id='VAL_ST"+nItem+"']").val(aVlr[4]);
  1095. $("input[id='VAL_IPI"+nItem+"']").val(aVlr[3]);
  1096. $("input[id='QTD_EMB"+nItem+"']").val(aVlr[7]);
  1097. $("input[id='CK_TES"+nItem+"']").val(aVlr[8]);
  1098. $("input[id='GRUPO"+nItem+"']").val(aVlr[13]);
  1099. $("input[id='QTDMIN"+nItem+"']").val(aVlr[14]);
  1100. $("input[id='EST_DISP"+nItem+"']").val(aVlr[16]);
  1101. //Limpa os inputs, caso tenha trocado o produto
  1102. $("input[name='CK_QTDVEN"+nItem+"']").removeAttr('disabled');
  1103. if ($("#CK_XCODBAR"+nItem).val() == ""){
  1104. $("input[name='CK_QTDVEN"+nItem+"']").val("");
  1105. } else {
  1106. if ($("#XCODBAR"+nItem).val() != aVlr[16] && $("#XCODBAR"+nItem).val() != aVlr[17]){
  1107. $("#XCODBAR"+nItem).val() = "";
  1108. }
  1109. }
  1110. $("input[name='CK_VALOR"+nItem+"']").val("0,00");
  1111. } else {
  1112. if (data.substr(0, 4) == "ERRO") {
  1113. cMsgErro = data.substr(5);
  1114. bootbox.alert(cMsgErro);
  1115. LimpaLinha(nItem);
  1116. } else {
  1117. cMsgErro = "Houve falha ao localizar os dados do produto. Tente novamente!";
  1118. bootbox.alert(cMsgErro);
  1119. LimpaLinha(nItem);
  1120. // Quando ocorre erro no protheus
  1121. console.log(data);
  1122. }
  1123. }
  1124. }
  1125. });
  1126. } else if ($.trim(objInput.val()) == "" ) {
  1127. LimpaLinha(nItem);
  1128. }
  1129. return false;
  1130. }
  1131. /**
  1132. Funcao de calculo do total do item
  1133. **/
  1134. function TotalItem(cItemAtu) {
  1135. var nQuant;
  1136. var nVlrUnit;
  1137. var nVlrTabela;
  1138. var nTotalUnit;
  1139. var nICMS;
  1140. var nICMSST;
  1141. var nIPI;
  1142. var nPerDesc = 0;
  1143. var nValFrete;
  1144. var nVlrTotal;
  1145. var nBaseIPI;
  1146. var nBaseICMS;
  1147. var nBaseST;
  1148. var cFaixaDesc;
  1149. var nPerCom = 0;
  1150. var nValCom = 0;
  1151. var nValDesc = 0;
  1152. cCodProd = $("#CK_PRODUTO"+cItemAtu).val();
  1153. nQuant = parseFloat($("#CK_QTDVEN"+cItemAtu).val().replace('.',"").replace(",","."));
  1154. nVlrTabela = $('#iCK_PRCVEN'+cItemAtu).maskMoney('unmasked')[0];
  1155. //nVlrTabela = $('#CK_PRCVEN'+cItemAtu).maskMoney('unmasked')[0];
  1156. //nVlrUnit = $('#iCK_PRCVEN'+cItemAtu).maskMoney('unmasked')[0];
  1157. nValFrete = $("#CJ_FRETE").maskMoney('unmasked')[0];
  1158. if ($('#CK_DESCONT'+cItemAtu).maskMoney('unmasked')[0] != 0){
  1159. nPerDesc = $("#CK_DESCONT"+cItemAtu).maskMoney('unmasked')[0];
  1160. }
  1161. nVlrUnit = nVlrTabela - (nVlrTabela*(nPerDesc/100));
  1162. nVlrTotal = nVlrTabela*nQuant;
  1163. nTotalUnit = nVlrTotal
  1164. nValDesc = nVlrTotal*(nPerDesc/100);
  1165. nVlrTotal = nVlrTotal - nValDesc;
  1166. //Tratamento para os impostos
  1167. nICMS = $('#CK_XVALICM'+cItemAtu).maskMoney('unmasked')[0];
  1168. nICMSST = $('#CK_XICMST'+cItemAtu).maskMoney('unmasked')[0];
  1169. nIPI = $("#CK_XVALIPI"+cItemAtu).maskMoney('unmasked')[0];
  1170. //Aliquotas
  1171. nAliqIPI = parseFloat($("#ALIQ_IPI"+cItemAtu).val());
  1172. nAliqICMS = parseFloat($("#ALIQ_ICMS"+cItemAtu).val());
  1173. nAliqST = parseFloat($("#ALIQ_ST"+cItemAtu).val());
  1174. //Valores Base
  1175. nBaseIPI = parseFloat($("#BASE_IPI"+cItemAtu).val());
  1176. nBaseICMS = parseFloat($("#BASE_ICMS"+cItemAtu).val());
  1177. nBaseST = parseFloat($("#BASE_ST"+cItemAtu).val());
  1178. //Valor do imposto
  1179. nIPI = nBaseIPI * nQuant * (nAliqIPI /100)
  1180. nICMS = nBaseICMS * nQuant * (nAliqICMS /100)
  1181. nICMSST = nQuant * parseFloat($("#VAL_ST"+cItemAtu).val().replace(",","."));
  1182. //nIPI = nVlrTotal*(nAliqIPI /100)
  1183. //nICMS = nVlrTotal*(nAliqICMS /100)
  1184. //nIPI = nQuant * parseFloat($("#VAL_IPI"+cItemAtu).val().replace(",","."));
  1185. //nICMS = nQuant * parseFloat($("#VAL_ICMS"+cItemAtu).val().replace(",","."));
  1186. //nICMSST = nQuant * parseFloat($("#VAL_ST"+cItemAtu).val().replace(",","."));
  1187. nVlrTotal = nVlrTotal+nIPI+nICMSST;
  1188. nTotalUnit = nVlrTotal / nQuant;
  1189. //Atualiza o campo do total
  1190. $.trim($("#CK_XVALICM"+cItemAtu).val(mascaraValor(nICMS.toFixed(2))));
  1191. $.trim($("#CK_XVALIPI"+cItemAtu).val(mascaraValor(nIPI.toFixed(2))));
  1192. $.trim($("#CK_XICMST"+cItemAtu).val(mascaraValor(nICMSST.toFixed(2))));
  1193. $.trim($("#iCK_PRCVEN"+cItemAtu).val(mascaraValor(nVlrUnit.toFixed(2))));
  1194. $.trim($("#CK_VALOR"+cItemAtu).val(mascaraValor(nVlrTotal.toFixed(2))));
  1195. $.trim($("#CK_XPRCIMP"+cItemAtu).val(mascaraValor(nTotalUnit.toFixed(2))));
  1196. //Atualiza o total geral
  1197. TotalGeral();
  1198. }
  1199. /**
  1200. Total Geral
  1201. **/
  1202. function TotalGeral() {
  1203. var nItens = parseFloat($("#PROXIMO").val());
  1204. var i;
  1205. var nVlrTabela = 0;
  1206. var nVlrUnit = 0;
  1207. var nICMS = 0;
  1208. var nICMSST = 0;
  1209. var nIPI = 0;
  1210. var nImpostos = 0;
  1211. var nValFrete = 0;
  1212. var nTotal = 0;
  1213. var nAcresc = 0;
  1214. var nDescCond = 0;
  1215. var nQuant = 0;
  1216. var nValCom = 0;
  1217. var cCodProd;
  1218. var cItmOrc;
  1219. var nTotQuant = 0.00;
  1220. var nSaldo = 0;
  1221. var nTotalProm = 0
  1222. for (i = 1; i<=nItens; i++) {
  1223. cItem = String(i);
  1224. if (parseInt(i) < 10 ){cItem = "0"+String(i)};
  1225. cCodProd = $("#CK_PRODUTO"+cItem).val();
  1226. cItmOrc = $("#CK_ITEM"+cItem).val();
  1227. if(cItmOrc != "x") {
  1228. nQuant = parseFloat($("#CK_QTDVEN"+cItem).val().replace('.',"").replace(",","."));
  1229. nTotQuant += nQuant;
  1230. nVlrUnit += nQuant * $('#iCK_PRCVEN'+cItem).maskMoney('unmasked')[0];
  1231. nICMS += $('#CK_XVALICM'+cItem).maskMoney('unmasked')[0];
  1232. nICMSST += $('#CK_XICMST'+cItem).maskMoney('unmasked')[0];
  1233. nIPI += $("#CK_XVALIPI"+cItem).maskMoney('unmasked')[0];
  1234. nValCom += $("#VAL_COM"+cItem).maskMoney('unmasked')[0];
  1235. nTotal += $('#CK_VALOR'+cItem).maskMoney('unmasked')[0];
  1236. if ($("#PROMOCAO"+cItem).val() == "1"){
  1237. nTotalProm += $('#CK_VALOR'+cItem).maskMoney('unmasked')[0];
  1238. }
  1239. nSaldo += $('#SALDO'+cItem).maskMoney('unmasked')[0];
  1240. }
  1241. }
  1242. nImpostos = nICMSST+nIPI; //nICMS
  1243. nValFrete = $("#CJ_FRETE").maskMoney('unmasked')[0];
  1244. /*
  1245. //Verifica acrescimo da condição de pagamento
  1246. $.ajax({
  1247. url: "U_ValAcresc.apw?PR=<%=cLCodLogin%>",
  1248. data: 'condPgto='+$("#CJ_CONDPAG").val()+'&valor='+nTotal,
  1249. type: "POST",
  1250. async: false,
  1251. success:
  1252. function(retorno) {
  1253. //nAcresc = parseFloat(retorno);
  1254. nAcresc = parseFloat(nTotal*(retorno/100))
  1255. }
  1256. });
  1257. */
  1258. nDescCond = parseFloat((nTotal-nTotalProm)*($("#DESCCOND").val()/100)); //desconto da condição de pagamento
  1259. //nDescCond = parseFloat(nTotal*($("#DESCCOND").val()/100)); //desconto da condição de pagamento
  1260. nTotal = (nTotal+nValFrete+nAcresc)-nDescCond;
  1261. //Atualiza os totais
  1262. $("#TOTAL_QITENS").val($.trim(mascaraValor(nTotQuant.toFixed(2))));
  1263. $("#TOTAL_ITENS").val($.trim(mascaraValor(nVlrUnit.toFixed(2))));
  1264. $("#TOTAL_IMP").val($.trim(mascaraValor(nImpostos.toFixed(2))));
  1265. $("#TOTAL_FRETE").val($("#CJ_FRETE").val());
  1266. $("#TOTAL_ACRESC").val($.trim(mascaraValor(nDescCond.toFixed(2))));
  1267. //$("#TOTAL_ACRESC").val($.trim(mascaraValor(nAcresc.toFixed(2))));
  1268. $("#TOTAL_ORC").val($.trim(mascaraValor(nTotal.toFixed(2))));
  1269. $("#TOTAL_COM").val($.trim(mascaraValor(nValCom.toFixed(2))));
  1270. $("#TOTAL_SALDO").val($.trim(mascaraValor(nSaldo.toFixed(2))));
  1271. }
  1272. /**
  1273. Atualiza o valor do produto ao trocar a condição de pagamento
  1274. **/
  1275. function AtuValProd(){
  1276. var nItens = parseFloat($("#PROXIMO").val());
  1277. var i;
  1278. var nvalorcheio = 0;
  1279. for (i = 1; i<=nItens; i++) {
  1280. cItem = String(i);
  1281. if (parseInt(i) < 10 ){cItem = "0"+String(i)};
  1282. cItmOrc = $("#CK_ITEM"+cItem).val();
  1283. if(cItmOrc != "x") {
  1284. nvalorcheio = $('#CK_PRCVEN'+cItem).val();
  1285. $('#iCK_PRCVEN'+cItem).val(nvalorcheio);
  1286. TotalItem(cItem);
  1287. }
  1288. }
  1289. }
  1290. /**
  1291. Verifica se a quantidade é múltiplo da embalagem
  1292. **/
  1293. function VldQtd(cItemAtu) {
  1294. var nQuant;
  1295. var nQtdEmb;
  1296. var nQtdMin;
  1297. var resto;
  1298. cCodProd = $("#CK_PRODUTO"+cItemAtu).val();
  1299. var lRet = true
  1300. //Valida a quantidade por embalagem
  1301. nQtdEmb = parseFloat($("#QTD_EMB"+cItemAtu).val());
  1302. nQtdMin = $("#QTDMIN"+cItemAtu).val();
  1303. nQuant = parseFloat($("#CK_QTDVEN"+cItemAtu).val().replace('.',"").replace(",","."));
  1304. if (nQuant > 0){
  1305. //Valida a quantidade da embalagem
  1306. if (nQtdEmb > 0){
  1307. if (nQuant < (nQtdEmb)){
  1308. bootbox.alert("A quantidade deve ser múltiplo de "+nQtdEmb.toString()+".");
  1309. $("#CK_QTDVEN"+cItemAtu).val("");
  1310. lRet = false;
  1311. return false;
  1312. } else {
  1313. resto = nQuant % nQtdEmb;
  1314. if (resto != 0 ){
  1315. bootbox.alert("A quantidade deve ser múltiplo de "+nQtdEmb.toString()+".");
  1316. $("#CK_QTDVEN"+cItemAtu).val("");
  1317. lRet = false;
  1318. return false;
  1319. }
  1320. }
  1321. }
  1322. var dialogProd = bootbox.dialog({
  1323. message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i>&nbsp;&nbsp;Buscando dados do produto... Aguarde...</p>',
  1324. closeButton: false
  1325. });
  1326. //Atualiza o preço de acordo com a quantidade
  1327. jQuery.ajax({
  1328. type: "POST",
  1329. url: "U_GATPROD.APW?PR=<%=cLCodLogin%>",
  1330. data: 'produto='+encodeURIComponent(cCodProd)+'&quant='+nQuant,
  1331. error: function (jqXHR, textStatus, error){
  1332. dialogProd.modal('hide');
  1333. bootbox.alert("Falha ao recuperar informações!");
  1334. console.log(error);
  1335. },
  1336. success: function( data ) {
  1337. var aVlr;
  1338. var cMsgErro;
  1339. dialogProd.modal('hide');
  1340. if (data.substr(0, 2) == "OK") {
  1341. aVlr = data.substr(3).split('|#|');
  1342. $("input[name='CK_UM"+cItemAtu+"']").val(aVlr[0]);
  1343. $.trim($("input[name='CK_PRCVEN"+cItemAtu+"']").val(aVlr[1]));
  1344. $.trim($("input[name='iCK_PRCVEN"+cItemAtu+"']").val(aVlr[1]));
  1345. $.trim($("input[name='CK_XVALICM"+cItemAtu+"']").val(aVlr[2]));
  1346. $.trim($("input[name='CK_XVALIPI"+cItemAtu+"']").val(aVlr[3]));
  1347. $.trim($("input[name='CK_XICMST"+cItemAtu+"']").val(aVlr[4]));
  1348. $.trim($("input[name='CK_LOCAL"+cItemAtu+"']").val(aVlr[15]));
  1349. //Input hidden
  1350. $("input[id='ALIQ_IPI"+cItemAtu+"']").val(aVlr[5]);
  1351. $("input[id='ALIQ_ICMS"+cItemAtu+"']").val(aVlr[6]);
  1352. $("input[id='ALIQ_ST"+cItemAtu+"']").val(aVlr[12]);
  1353. $("input[id='BASE_IPI"+cItemAtu+"']").val(aVlr[11]);
  1354. $("input[id='BASE_ICMS"+cItemAtu+"']").val(aVlr[9]);
  1355. $("input[id='BASE_ST"+cItemAtu+"']").val(aVlr[10]);
  1356. $("input[id='VAL_ICMS"+cItemAtu+"']").val(aVlr[2]);
  1357. $("input[id='VAL_ST"+cItemAtu+"']").val(aVlr[4]);
  1358. $("input[id='VAL_IPI"+cItemAtu+"']").val(aVlr[3]);
  1359. $("input[id='QTD_EMB"+cItemAtu+"']").val(aVlr[7]);
  1360. $("input[id='CK_TES"+cItemAtu+"']").val(aVlr[8]);
  1361. $("input[id='GRUPO"+cItemAtu+"']").val(aVlr[13]);
  1362. $("input[id='QTDMIN"+cItemAtu+"']").val(aVlr[14]);
  1363. } else {
  1364. if (data.substr(0, 4) == "ERRO") {
  1365. cMsgErro = data.substr(5);
  1366. bootbox.alert(cMsgErro);
  1367. LimpaLinha(cItemAtu);
  1368. } else {
  1369. cMsgErro = "Houve falha ao localizar os dados do produto. Tente novamente!";
  1370. bootbox.alert(cMsgErro);
  1371. LimpaLinha(cItemAtu);
  1372. // Quando ocorre erro no protheus
  1373. console.log(data);
  1374. }
  1375. }
  1376. }
  1377. });
  1378. } else {
  1379. bootbox.alert("Informe a quantidade!");
  1380. lRet = false;
  1381. return false;
  1382. }
  1383. if (lRet == true){
  1384. //Valida o estoque do produto
  1385. vldEstoque(cItemAtu);
  1386. }
  1387. //Gatilho para total do item
  1388. TotalItem(cItemAtu);
  1389. }
  1390. /**
  1391. Verifica se existe estoque disponível
  1392. **/
  1393. function vldEstoque(cItem){
  1394. var produto = $("#CK_PRODUTO"+cItem).val();
  1395. var quantidade = parseFloat($("#CK_QTDVEN"+cItem).val().replace('.',","));
  1396. var qtd = $("#CK_QTDVEN"+cItem).val();
  1397. var lret = true;
  1398. var retVld = true;
  1399. var dialogTab = bootbox.dialog({
  1400. message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i>&nbsp;&nbsp;Verificando estoque disponível... Aguarde...</p>',
  1401. closeButton: false
  1402. });
  1403. $.ajax({
  1404. url: "U_GetEstDisp.apw?PR=<%=cLCodLogin%>",
  1405. data: 'produto='+encodeURIComponent(produto)+'&quantidade='+qtd,
  1406. type: "POST",
  1407. async: false,
  1408. success:
  1409. function(retorno) {
  1410. if (retorno.indexOf('<META HTTP-EQUIV') >= 0 ) {
  1411. $("html").html(retorno);
  1412. return;
  1413. }
  1414. saldo = parseInt(retorno);
  1415. $("#EST_DISP"+cItem).val(saldo);
  1416. if ( saldo <= 0 || saldo < quantidade) {
  1417. if(retorno < 0){
  1418. retorno = 0
  1419. };
  1420. dialogTab.modal('hide');
  1421. bootbox.alert('Não há saldo disponível em estoque para a quantidade solicitada para o item '+produto+'! <br>O saldo atual é de '+retorno+'.');
  1422. if ($('#CJ_XTPORC').val() == "1"){
  1423. $("#CK_QTDVEN"+cItem).val("");
  1424. lret = false;
  1425. retVld = false;
  1426. }
  1427. }
  1428. }
  1429. });
  1430. if (lret == true){
  1431. //Habilita os campos para edição
  1432. $("#CK_XPEDCLI"+cItem).removeAttr('disabled');
  1433. $("#CK_XITEMCL"+cItem).removeAttr('disabled');
  1434. $("#CK_DESCONT"+cItem).removeAttr('disabled');
  1435. }
  1436. dialogTab.modal('hide');
  1437. return retVld;
  1438. }
  1439. /**
  1440. Limpa os valores da linha
  1441. **/
  1442. function LimpaLinha(cItem) {
  1443. $("#CK_QTDVEN"+cItem).val("");
  1444. $("#CK_LOCAL"+cItem).val("");
  1445. $("#iCK_PRCVEN"+cItem).val("");
  1446. $("#CK_PRCVEN"+cItem).val("");
  1447. $("#CK_XPRCIMP"+cItem).val("");
  1448. $("#CK_XVALIPI"+cItem).val("");
  1449. $("#CK_XVALICM"+cItem).val("");
  1450. $("#CK_XICMST"+cItem).val("");
  1451. $("#CK_VALOR"+cItem).val("");
  1452. $("#PER_COM"+cItem).val("");
  1453. $("#VAL_COM"+cItem).val("");
  1454. $("#CK_DESCONT"+cItem).val("");
  1455. TotalGeral();
  1456. }
  1457. /**
  1458. Verifica se o valor digitado é maior que o valor de tabela
  1459. **/
  1460. function VldValor(cItemAtu) {
  1461. var nVlrTabela = $('#CK_PRCVEN'+cItemAtu).maskMoney('unmasked')[0];
  1462. var nVlrUnit = $('#iCK_PRCVEN'+cItemAtu).maskMoney('unmasked')[0];
  1463. var produto = $("#CK_PRODUTO"+cItemAtu).val();
  1464. var nValMin = 0;
  1465. var nDescont = 0;
  1466. var nDescMax = 0;
  1467. var aDesc;
  1468. var lOK = true;
  1469. var lMostra = false;
  1470. var dialogTab = bootbox.dialog({
  1471. message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i>&nbsp;&nbsp;Verificando valores... Aguarde...</p>',
  1472. closeButton: false
  1473. });
  1474. if ($('#CK_DESCONT'+cItemAtu).maskMoney('unmasked')[0] != 0){
  1475. nDescont = $('#CK_DESCONT'+cItemAtu).maskMoney('unmasked')[0];
  1476. if (nDescont < -10) {
  1477. dialogTab.modal('hide');
  1478. bootbox.alert('O desconto negativo deve ser no máximo -10%!');
  1479. $('#CK_DESCONT'+cItemAtu).val("");
  1480. return false;
  1481. }
  1482. }
  1483. //Valida o valor máximo --retirado Lucilene 11.08.20
  1484. //if ( lOK && nVlrUnit > nVlrTabela){
  1485. // dialogTab.modal('hide');
  1486. // bootbox.alert("O valor máximo permitido é o valor da tabela!");
  1487. // $("#iCK_PRCVEN"+cItemAtu).val($('#CK_PRCVEN'+cItemAtu).val());
  1488. // $("#iCK_PRCVEN"+cItemAtu).focus();
  1489. // lOK = false;
  1490. //}
  1491. //dialogTab.modal('hide');
  1492. //Atualiza o valor dos impostos
  1493. if (lOK && nDescont != 0){
  1494. var cCodProd = $("#CK_PRODUTO"+cItemAtu).val();
  1495. var cQuant = $("#CK_QTDVEN"+cItemAtu).val();
  1496. //var dialogImp = bootbox.dialog({
  1497. // message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i>&nbsp;&nbsp;Atualizando os valores dos impostos... Aguarde...</p>',
  1498. // closeButton: false
  1499. // });
  1500. nVlrUnit = nVlrTabela - (nVlrTabela * (nDescont/100))
  1501. $.ajax({
  1502. url: "U_GetImpostos.apw?PR=<%=cLCodLogin%>",
  1503. data: 'produto='+encodeURIComponent(cCodProd)+'&prcvenda='+nVlrUnit+'&quantidade='+cQuant,
  1504. type: "POST",
  1505. async: false,
  1506. error: function (jqXHR, textStatus, error){
  1507. dialogTab.modal('hide');
  1508. bootbox.alert("Falha ao atualizar o valor dos impostos!");
  1509. console.log(error);
  1510. lOK = false;
  1511. },
  1512. success:
  1513. function(data) {
  1514. dialogTab.modal('hide');
  1515. if (data.indexOf('<META HTTP-EQUIV') >= 0 ) {
  1516. $("html").html(data);
  1517. return;
  1518. }
  1519. if (data.substr(0, 2) == "OK") {
  1520. aVlr = data.substr(3).split('|#|');
  1521. $.trim($("input[name='CK_XVALICM"+cItemAtu+"']").val(aVlr[2]));
  1522. $.trim($("input[name='CK_XICMST"+cItemAtu+"']").val(aVlr[4]));
  1523. $.trim($("input[name='CK_XVALIPI"+cItemAtu+"']").val(aVlr[3]));
  1524. $.trim($("#iCK_PRCVEN"+cItemAtu).val(mascaraValor(nVlrUnit.toFixed(2))));
  1525. //Input hidden
  1526. $("input[id='ALIQ_IPI"+cItemAtu+"']").val(aVlr[5]);
  1527. $("input[id='ALIQ_ICMS"+cItemAtu+"']").val(aVlr[6]);
  1528. $("input[id='ALIQ_ST"+cItemAtu+"']").val(aVlr[12]);
  1529. $("input[id='CK_TES"+cItemAtu+"']").val(aVlr[8]);
  1530. $("input[id='BASE_IPI"+cItemAtu+"']").val(aVlr[11]);
  1531. $("input[id='BASE_ICMS"+cItemAtu+"']").val(aVlr[9]);
  1532. $("input[id='BASE_ST"+cItemAtu+"']").val(aVlr[10]);
  1533. $("input[id='VAL_ICMS"+cItemAtu+"']").val(aVlr[2]);
  1534. $("input[id='VAL_ST"+cItemAtu+"']").val(aVlr[4]);
  1535. $("input[id='VAL_IPI"+cItemAtu+"']").val(aVlr[3]);
  1536. } else {
  1537. cMsgErro = "Houve falha ao atualizar os impostos. Tente novamente!";
  1538. bootbox.alert(cMsgErro);
  1539. LimpaLinha(cItemAtu);
  1540. lOK = false;
  1541. if (data.substr(0, 4) == "ERRO") {
  1542. cMsgErro = data.substr(5);
  1543. } else {
  1544. // Quando ocorre erro no protheus
  1545. console.log(data);
  1546. }
  1547. }
  1548. }
  1549. });
  1550. }
  1551. dialogTab.modal('hide');
  1552. //Gatilho para total do item
  1553. if(lOK){
  1554. TotalItem(cItemAtu);
  1555. }
  1556. }
  1557. /**
  1558. Função para anexar os documentos ao orçamento
  1559. **/
  1560. function OrcGetAnex() {
  1561. $.ajax({
  1562. url: "U_OrcGetAn.apw?PR=<%=cLCodLogin%>",
  1563. type: "POST",
  1564. data: "fornece="+$("#fornece").val()+"&loja="+$("#loja").val(),
  1565. cache: false,
  1566. success: function(html){
  1567. $("#InfAnexos").html(html);
  1568. new PNotify({
  1569. title: 'Anexar arquivo',
  1570. text: 'Anexado com sucesso',
  1571. type: 'success',
  1572. icon: 'fa fa-file-o',
  1573. cornerclass: 'ui-pnotify-sharp'
  1574. });
  1575. $("#arquivo").remove();
  1576. }
  1577. });
  1578. }
  1579. /**
  1580. Funcao de validação do tipo de frete
  1581. **/
  1582. function VldFrete() {
  1583. var cFrete;
  1584. var tabpreco = $("#CJ_TABELA").val();
  1585. cFrete = $("#CJ_TPFRETE").val();
  1586. if (cFrete == 'C' || cFrete == 'F'){
  1587. $("#CJ_FRETE").attr("required","");
  1588. $("#CJ_FRETE").attr("aria-required","true");
  1589. $("#CJ_FRETE").removeAttr('disabled');
  1590. //$("#CJ_XTRANSP").removeAttr('disabled');
  1591. $("#CJ_FRETE").focus();
  1592. //$("#CJ_XTRANSP").val("");
  1593. //Localiza a transportadora
  1594. /*
  1595. $.ajax({
  1596. url: "U_GetTransp.apw?PR=<%=cLCodLogin%>",
  1597. type: "POST",
  1598. data: 'tabela='+tabpreco,
  1599. async: false,
  1600. success:
  1601. function(transp) {
  1602. if (transp.indexOf('<META HTTP-EQUIV') >= 0 ) {
  1603. $("html").html(transp);
  1604. return;
  1605. }
  1606. if ( transp != "" ) {
  1607. //Preenche o campo da transportadora
  1608. document.getElementById('CJ_XTRANSP').innerText = null;
  1609. $("#CJ_XTRANSP").append(transp);
  1610. } else {
  1611. bootbox.alert('Cliente sem transportadora cadastrada!');
  1612. $("#CJ_TPFRETE").val("S")
  1613. $("#select2-CJ_TPFRETE-container").html("Sem Frete")
  1614. $("#CJ_FRETE").removeAttr("required");
  1615. $("#CJ_FRETE").removeAttr("aria-required");
  1616. $("#CJ_FRETE").attr("disabled","");
  1617. $("#CJ_XTRANSP").attr("disabled","");
  1618. $("#CJ_FRETE").val("0,00");
  1619. $("#CJ_XTRANSP").val("");
  1620. $("#select2-CJ_XTRANSP-container").html("Selecione uma Transportadora");
  1621. }
  1622. }
  1623. });
  1624. */
  1625. //$("#select2-CJ_XTRANSP-container").html("Selecione uma Transportadora");
  1626. }
  1627. if (cFrete == 'S'){
  1628. $("#CJ_FRETE").removeAttr("required");
  1629. $("#CJ_FRETE").removeAttr("aria-required");
  1630. $("#CJ_FRETE").attr("disabled","");
  1631. //$("#CJ_XTRANSP").attr("disabled","");
  1632. $("#CJ_FRETE").val("0,00");
  1633. //$("#CJ_XTRANSP").val("");
  1634. $("#select2-CJ_XTRANSP-container").html("Selecione uma Transportadora");
  1635. }
  1636. TotalGeral();
  1637. }
  1638. /**
  1639. Validação do valor mínimo de Frete
  1640. **/
  1641. function freteMinimo(objInput) {
  1642. var valFre;
  1643. var tipoFre;
  1644. tipoFre = $("#CJ_TPFRETE").val();
  1645. valFre = $("#CJ_FRETE").maskMoney('unmasked')[0];
  1646. $.ajax({
  1647. url: "U_FreteMinimo.apw?PR=<%=cLCodLogin%>",
  1648. data: 'tipoFrete='+tipoFre,
  1649. type: "POST",
  1650. async: false,
  1651. success:
  1652. function(retorno) {
  1653. if (retorno.indexOf('<META HTTP-EQUIV') >= 0 ) {
  1654. $("html").html(retorno);
  1655. return;
  1656. }
  1657. valMin = parseInt(retorno);
  1658. if (tipoFre == 'C'){
  1659. tipo = 'CIF';
  1660. }
  1661. else {
  1662. tipo = 'FOB';
  1663. }
  1664. if (valFre < valMin ) {
  1665. bootbox.alert('O valor mínimo para frete do tipo '+tipo+' é R$'+retorno+'!');
  1666. $("#CJ_FRETE").val(retorno);
  1667. $("#CJ_FRETE").focus();
  1668. $("#TOTAL_FRETE").val($("#CJ_FRETE").val());
  1669. return false;
  1670. }
  1671. TotalGeral();
  1672. }
  1673. });
  1674. }
  1675. /**
  1676. // Função para ver detalhes da linha
  1677. **/
  1678. function detalheOrc(cItem){
  1679. var msg = "";
  1680. var produto = $("#CK_PRODUTO"+cItem);
  1681. var retorno = "";
  1682. var estoque = "";
  1683. var dialogTab = "";
  1684. if(produto.val() == ""){
  1685. bootbox.alert("Selecione o produto para ver os detalhes!");
  1686. return false;
  1687. }
  1688. /*
  1689. dialogTab = bootbox.dialog({
  1690. message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i>&nbsp;&nbsp;Carregando detalhes... Aguarde...</p>',
  1691. closeButton: false
  1692. });
  1693. $.ajax({
  1694. url: "U_GetEstGeral.apw?PR=<%=cLCodLogin%>",
  1695. data: 'produto='+encodeURIComponent(produto.val()),
  1696. type: "POST",
  1697. async: false,
  1698. success:
  1699. function(retorno) {
  1700. if (retorno.indexOf('<META HTTP-EQUIV') >= 0 ) {
  1701. $("html").html(retorno);
  1702. return;
  1703. }
  1704. estoque = retorno;
  1705. }
  1706. });
  1707. dialogTab.modal('hide');
  1708. */
  1709. msg = '<div class="row form-group">'
  1710. msg +=' <header class="panel-heading">'
  1711. msg +=' <h2 class="panel-title">Detalhes da linha</h2>'
  1712. msg +=' </header>'
  1713. msg +=' <br>'
  1714. //Descrição do produto
  1715. msg +=' <div class="row form-group">'
  1716. msg +=' <div class="col-lg-1"></div>'
  1717. msg +=' <div class="col-lg-11">'
  1718. msg +=' <label class="control-label">Produto</label>'
  1719. msg +=' <div class="input-group">'
  1720. msg +=' <input class="form-control text-left" style="width: 240%;" value="'+$("#CK_PRODUTO"+cItem).val().split('- ')[1]+'" disabled>'
  1721. //msg +=' <input class="form-control text-left" style="width: 240%;" value="'+$(produto)[0].options[$(produto)[0].selectedIndex].text.split('- ')[1]+'" disabled>'
  1722. msg +=' </div>'
  1723. msg +=' </div>'
  1724. msg +=' </div>'
  1725. //% ICMS
  1726. msg +=' <div class="row form-group">'
  1727. msg +=' <div class="col-lg-1"></div>'
  1728. msg +=' <div class="col-lg-3">'
  1729. msg +=' <label class="control-label">Aliquota ICMS</label>'
  1730. msg +=' <div class="input-group">'
  1731. msg +=' <input class="form-control text-right" value="'+$("#ALIQ_ICMS"+cItem).val()+'%" disabled>'
  1732. msg +=' </div>'
  1733. msg +=' </div>'
  1734. //% ICMS ST
  1735. msg +=' <div class="col-lg-3">'
  1736. msg +=' <label class="control-label">Aliquota ICMS ST</label>'
  1737. msg +=' <div class="input-group">'
  1738. msg +=' <input class="form-control text-right" value="'+$("#ALIQ_ST"+cItem).val()+'%" disabled>'
  1739. msg +=' </div>'
  1740. msg +=' </div>'
  1741. msg +=' </div>'
  1742. //IPI
  1743. msg +=' <div class="row form-group">'
  1744. msg +=' <div class="col-lg-1"></div>'
  1745. msg +=' <div class="col-lg-3">'
  1746. msg +=' <label class="control-label">IPI</label>'
  1747. msg +=' <div class="input-group">'
  1748. msg +=' <input class="form-control text-right" value="'+$("#VAL_IPI"+cItem).val()+'" disabled>'
  1749. msg +=' </div>'
  1750. msg +=' </div>'
  1751. //ICMS
  1752. msg +=' <div class="col-lg-3">'
  1753. msg +=' <label class="control-label">ICMS</label>'
  1754. msg +=' <div class="input-group">'
  1755. msg +=' <input class="form-control text-right" value="'+$("#VAL_ICMS"+cItem).val()+'" disabled>'
  1756. msg +=' </div>'
  1757. msg +=' </div>'
  1758. //ICMS ST
  1759. msg +=' <div class="col-lg-3">'
  1760. msg +=' <label class="control-label">ICMS ST</label>'
  1761. msg +=' <div class="input-group">'
  1762. msg +=' <input class="form-control text-right" value="'+$("#VAL_ST"+cItem).val()+'" disabled>'
  1763. msg +=' </div>'
  1764. msg +=' </div>'
  1765. msg +=' </div>'
  1766. msg +='</div>'
  1767. if(msg != ""){
  1768. bootbox.dialog({
  1769. title: '',
  1770. message: "<p>"+msg+"</p>",
  1771. backdrop: true,
  1772. buttons: {
  1773. ok: {
  1774. label: "OK"
  1775. }
  1776. }
  1777. });
  1778. }
  1779. }
  1780. //Remover linha
  1781. function removeItem(cItem){
  1782. //e.preventDefault();
  1783. //var btnRem = $(this);
  1784. cItem = parseInt(cItem);
  1785. bootbox.confirm({
  1786. title: "Exclusão da linha",
  1787. message: "Confirma a exclusão desta linha?",
  1788. buttons: {
  1789. cancel: {
  1790. label: 'Cancelar'
  1791. },
  1792. confirm: {
  1793. label: 'Confirmar'
  1794. }
  1795. },
  1796. callback: function (result) {
  1797. if (result){
  1798. if (cItem < 10 ){cItem = "0"+String(cItem)};
  1799. //Desabilita o botão
  1800. //btnRem.attr({ 'disabled': 'disabled' });
  1801. $("#CK_ITEM"+cItem).val("x");
  1802. $("#CK_PRODUTO"+cItem).val("");
  1803. $("#CK_QTDVEN"+cItem).val("1");
  1804. $("#CK_LOCAL"+cItem).val("");
  1805. $("#CK_PRUNIT"+cItem).val("0");
  1806. $("#iCK_PRCVEN"+cItem).val("0,00");
  1807. $("#CK_PRCVEN"+cItem).val("0,00");
  1808. $("#CK_XVALICM"+cItem).val("0,00");
  1809. $("#CK_XVALIPI"+cItem).val("0,00");
  1810. $("#CK_XICMST"+cItem).val("0,00");
  1811. $("#CK_VALOR"+cItem).val("0,00");
  1812. $("#linha"+cItem).hide();
  1813. //Atualiza o total geral
  1814. TotalGeral();
  1815. }
  1816. }
  1817. });
  1818. }
  1819. /**
  1820. //Anexar
  1821. **/
  1822. $("#btnInfUpload").click(function() {
  1823. var obAnexo = $("#anexo");
  1824. var obArquivo = obAnexo.clone();
  1825. obArquivo.attr("id", "arquivo");
  1826. $("#frmInfUpload").append(obArquivo);
  1827. var data;
  1828. var contentType = "application/x-www-form-urlencoded";
  1829. var processData = true;
  1830. if ($('#frmInfUpload').attr('enctype') == 'multipart/form-data') {
  1831. data = new FormData($('#frmInfUpload').get(0));//seleciona classe form-horizontal adicionada na tag form do html
  1832. contentType = false;
  1833. processData = false;
  1834. } else {
  1835. data = $('#frmInfUpload').serialize();
  1836. }
  1837. $.ajax({
  1838. data: data,
  1839. type: $('#frmInfUpload').attr('method'),
  1840. url: $('#frmInfUpload').attr('action'),
  1841. contentType: contentType,
  1842. processData: processData,
  1843. success: function (response) {
  1844. //seu código após sucesso
  1845. if( response == "Ok" ) {
  1846. window.location.reload();
  1847. } else {
  1848. bootbox.alert('Erro ao carregar arquivo');
  1849. }
  1850. },
  1851. error: function (exr, sender) {
  1852. bootbox.alert('Erro ao carregar pagina');
  1853. }
  1854. });
  1855. });
  1856. //Adicionar nova linha
  1857. $('#btAddItm').click(function(e) {
  1858. e.preventDefault();
  1859. var newLine = parseFloat($("#PROXIMO").val())+1;
  1860. var nItens = parseFloat($("#PROXIMO").val());
  1861. var linhaAtu = String(newLine);
  1862. var lRet = true;
  1863. var lGridOK = true;
  1864. var btnAdd = $(this);
  1865. var cCodProd;
  1866. var cItmOrc;
  1867. /*
  1868. bootbox.confirm({
  1869. message: "Confirma a inclusão de uma nova linha?",
  1870. buttons: {
  1871. confirm: {
  1872. label: 'Sim',
  1873. className: 'btn btn-primary'
  1874. },
  1875. cancel: {
  1876. label: 'Não',
  1877. className: 'btn btn-default'
  1878. }
  1879. },
  1880. callback: function (result) {
  1881. if(result == true){
  1882. */
  1883. if (parseInt(linhaAtu) < 10 ){linhaAtu = "0"+String(linhaAtu)};
  1884. //Desabilita o botão
  1885. btnAdd.attr({ 'disabled': 'disabled' });
  1886. //Valida o Grid
  1887. if (nItens == 99){
  1888. lRet = false;
  1889. $("#orc-informar").html();
  1890. new PNotify({
  1891. title: 'Quantidade máxima',
  1892. text: 'O orçamento atingiu a quantidade máxima de itens. Crie um novo orçamento.',
  1893. type: 'error',
  1894. });
  1895. btnAdd.removeAttr('disabled');
  1896. return false;
  1897. }
  1898. if (lRet == true) {
  1899. for (i = 1; i<=nItens; i++) {
  1900. cItem = String(i);
  1901. if (parseInt(i) < 10 ){cItem = "0"+String(i)};
  1902. cCodProd = $("#CK_PRODUTO"+cItem).val();
  1903. cItmOrc = $("#CK_ITEM"+cItem).val();
  1904. if(cItmOrc != "x") {
  1905. if ($('#CK_PRODUTO'+cItem).val() == "" || $('#CK_QTDVEN'+cItem).val() == ""){
  1906. lGridOK = false;
  1907. }
  1908. }
  1909. }
  1910. if (lGridOK == false){
  1911. lRet = false;
  1912. $("#orc-informar").html();
  1913. new PNotify({
  1914. title: 'Campo obrigatório',
  1915. text: 'Verifique o preenchimento dos campos Produto e Quantidade antes de incluir uma nova linha!',
  1916. type: 'error',
  1917. });
  1918. btnAdd.removeAttr('disabled');
  1919. //Força fechar a janela
  1920. if (lRet == false){
  1921. bootbox.hideAll();
  1922. }
  1923. return false;
  1924. }
  1925. }
  1926. //Cria a linha
  1927. if (lRet == true) {
  1928. var tbl = document.getElementById('datatable-editable'), // table reference
  1929. row = tbl.insertRow(tbl.rows.length), // append table row
  1930. i;
  1931. // insert table cells to the new row
  1932. for (i = 0; i < tbl.rows[0].cells.length; i++) {
  1933. createCell(row.insertCell(i),i,newLine,tbl.rows[0].cells.length-1);
  1934. //Adiciona os atributos da coluna
  1935. switch (i) {
  1936. //Quantidade
  1937. case 3:
  1938. $('tr:last').find('td:last').attr('style','right');
  1939. break;
  1940. //Preço com impostos
  1941. case 7:
  1942. $('tr:last').find('td:last').attr('hidden','');
  1943. break;
  1944. //Preço
  1945. case 8:
  1946. $('tr:last').find('td:last').attr('hidden','');
  1947. break;
  1948. //IPI
  1949. case 9:
  1950. $('tr:last').find('td:last').attr('hidden','');
  1951. break;
  1952. //ICMS
  1953. case 10:
  1954. $('tr:last').find('td:last').attr('hidden','');
  1955. break;
  1956. //ICMS ST
  1957. case 11:
  1958. $('tr:last').find('td:last').attr('hidden','');
  1959. break;
  1960. //% Desconto
  1961. case 12:
  1962. $('tr:last').find('td:last').attr('hidden','');
  1963. break;
  1964. //% Comissão
  1965. case 13:
  1966. $('tr:last').find('td:last').attr('hidden','');
  1967. break;
  1968. //valor comissão
  1969. case 14:
  1970. $('tr:last').find('td:last').attr('hidden','');
  1971. break;
  1972. //pedido cliente
  1973. case 15:
  1974. $('tr:last').find('td:last').attr('style','right');
  1975. break;
  1976. //item do pedido cliente
  1977. case 16:
  1978. $('tr:last').find('td:last').attr('style','right');
  1979. break;
  1980. //TOTAL
  1981. case 17:
  1982. $('tr:last').find('td:last').attr('style','right');
  1983. break;
  1984. }
  1985. }
  1986. // Adiciona um ouvinte de eventos usando a delegação de eventos
  1987. $(document).on('focusout', '[data-row] input', function () {
  1988. // Captura o valor do campo CK_PRODUTO
  1989. var produtoDigitado = this.value;
  1990. // Obtém o numero da linha associado ao campo
  1991. var linhaAtu = $(this).data('row');
  1992. // Chama a função buscarProdutos
  1993. buscarProdutos(produtoDigitado, function (listaProdutos) {
  1994. // Aqui voce pode fazer algo com a lista de produtos, se necessario
  1995. });
  1996. });
  1997. //Adiciona a classe no ultimo td
  1998. $('tr:last').find('td:last').addClass('actions');
  1999. //Adiciona id na linha
  2000. $('tr:last').attr('id','linha'+linhaAtu);
  2001. $('tr:last').attr('class','odd');
  2002. //Atualiza a quantidade de linhas
  2003. $("#PROXIMO").val(linhaAtu);
  2004. //Habilita o botão para adicionar itens
  2005. btnAdd.removeAttr('disabled');
  2006. formate();
  2007. };
  2008. /*
  2009. };
  2010. }
  2011. });
  2012. */
  2013. });
  2014. // create DIV element and append to the table cell
  2015. function createCell(cell,col,newLine,tam) {
  2016. var linha = String(newLine);
  2017. if (parseInt(linha) < 10 ){linha = "0"+String(linha)};
  2018. switch (col) {
  2019. //Item
  2020. case 0:
  2021. campo = document.createElement('input');
  2022. campo.setAttribute('id', 'CK_ITEM'+linha);
  2023. campo.setAttribute('name', 'CK_ITEM'+linha);
  2024. campo.setAttribute('class', 'form-control text-left input-block');
  2025. campo.setAttribute('disabled', 'disable');
  2026. campo.setAttribute('value', linha);
  2027. campo.setAttribute('type', 'text');
  2028. break;
  2029. //Codigo de barras
  2030. case 1:
  2031. campo = document.createElement('input');
  2032. campo.setAttribute('id', 'CK_XCODBAR'+linha);
  2033. campo.setAttribute('name', 'CK_XCODBAR'+linha);
  2034. campo.setAttribute('class', 'form-control text-left input-block');
  2035. campo.setAttribute('value', '');
  2036. campo.setAttribute('type', 'text');
  2037. campo.setAttribute('onblur', 'javascript:GetProdCB("'+linha+'")');
  2038. break;
  2039. //Select do produto
  2040. case 2:
  2041. campo = document.createElement('select');
  2042. campo.setAttribute('class', 'selectpicker');
  2043. campo.setAttribute('data-live-search', 'true');
  2044. campo.setAttribute('data-width','300px');
  2045. campo.setAttribute('id', 'CK_PRODUTO'+linha);
  2046. campo.setAttribute('name', 'CK_PRODUTO'+linha);
  2047. campo.setAttribute('required','')
  2048. campo.setAttribute('aria-required','true')
  2049. campo.setAttribute('value','')
  2050. campo.setAttribute('onchange', 'javascript:gatProduto($(this))');
  2051. $(campo).append($.parseHTML('<option value="">Selecione...</option>'+optProd));
  2052. break;
  2053. //Quantidade
  2054. case 3:
  2055. campo = document.createElement('input');
  2056. campo.setAttribute('id', 'CK_QTDVEN'+linha);
  2057. campo.setAttribute('name', 'CK_QTDVEN'+linha);
  2058. campo.setAttribute('class', 'form-control text-right only-numbers');
  2059. campo.setAttribute('disabled', 'disable');
  2060. campo.setAttribute('type', 'text');
  2061. campo.setAttribute('value', '');
  2062. campo.setAttribute('placeholder', '0');
  2063. campo.setAttribute('onblur', 'javascript:VldQtd("'+linha+'")');
  2064. campo.setAttribute('onkeyup', 'javascript:TotalItem("'+linha+'")');
  2065. campo.setAttribute('required', '');
  2066. campo.setAttribute('aria-required', 'true');
  2067. break;
  2068. //Local
  2069. case 4:
  2070. campo = document.createElement('input');
  2071. campo.setAttribute('id', 'CK_LOCAL'+linha);
  2072. campo.setAttribute('name', 'CK_LOCAL'+linha);
  2073. campo.setAttribute('class', 'form-control text-right input-block');
  2074. campo.setAttribute('disabled', 'disable');
  2075. campo.setAttribute('value', '');
  2076. campo.setAttribute('type', 'text');
  2077. break;
  2078. //Estoque Disponível
  2079. case 5:
  2080. campo = document.createElement('input');
  2081. campo.setAttribute('id', 'EST_DISP'+linha);
  2082. campo.setAttribute('name', 'EST_DISP'+linha);
  2083. campo.setAttribute('class', 'form-control text-right input-block');
  2084. campo.setAttribute('disabled', 'disable');
  2085. campo.setAttribute('value', '0');
  2086. campo.setAttribute('type', 'text');
  2087. break;
  2088. //Preço de tabela
  2089. case 6:
  2090. campo = document.createElement('input');
  2091. campo.setAttribute('id', 'CK_PRCVEN'+linha);
  2092. campo.setAttribute('name', 'CK_PRCVEN'+linha);
  2093. campo.setAttribute('class', 'form-control text-right input-block');
  2094. campo.setAttribute('disabled', 'disable');
  2095. //campo.setAttribute('type', 'text');
  2096. campo.setAttribute('value', '');
  2097. break;
  2098. //Preço unitário com impostos
  2099. case 7:
  2100. campo = document.createElement('input');
  2101. campo.setAttribute('id', 'CK_XPRCIMP'+linha);
  2102. campo.setAttribute('name', 'CK_XPRCIMP'+linha);
  2103. campo.setAttribute('class', 'form-control text-right input-block');
  2104. campo.setAttribute('disabled', 'disable');
  2105. campo.setAttribute('value', '');
  2106. break;
  2107. //Preço de venda
  2108. case 8:
  2109. campo = document.createElement('input');
  2110. campo.setAttribute('id', 'iCK_PRCVEN'+linha);
  2111. campo.setAttribute('name', 'iCK_PRCVEN'+linha);
  2112. campo.setAttribute('class', 'form-control text-right myformato'); //money5
  2113. campo.setAttribute('disabled', 'disable');
  2114. campo.setAttribute('type', 'text');
  2115. campo.setAttribute('value', '');
  2116. campo.setAttribute('placeholder', '0,00');
  2117. campo.setAttribute('onblur', 'javascript:VldValor("'+linha+'")');
  2118. campo.setAttribute('onkeyup', 'javascript:TotalItem("'+linha+'")');
  2119. // campo.setAttribute('onKeyPress', 'FormataValor(this,28,event,2,".",",")');
  2120. // campo.setAttribute('onKeyPress', 'return(moeda(this,'+"'.'"+','+"','"+',event))');
  2121. break;
  2122. //IPI
  2123. case 9:
  2124. campo = document.createElement('input');
  2125. campo.setAttribute('id', 'CK_XVALIPI'+linha);
  2126. campo.setAttribute('name', 'CK_XVALIPI'+linha);
  2127. campo.setAttribute('class', 'form-control text-right input-block');
  2128. campo.setAttribute('disabled', 'disable');
  2129. campo.setAttribute('value', '');
  2130. campo.setAttribute('type', 'text');
  2131. break;
  2132. //ICMS
  2133. case 10:
  2134. campo = document.createElement('input');
  2135. campo.setAttribute('id', 'CK_XVALICM'+linha);
  2136. campo.setAttribute('name', 'CK_XVALICM'+linha);
  2137. campo.setAttribute('class', 'form-control text-right input-block');
  2138. campo.setAttribute('disabled', 'disable');
  2139. campo.setAttribute('value', '');
  2140. campo.setAttribute('type', 'text');
  2141. break;
  2142. //ICMS ST
  2143. case 11:
  2144. campo = document.createElement('input');
  2145. campo.setAttribute('id', 'CK_XICMST'+linha);
  2146. campo.setAttribute('name', 'CK_XICMST'+linha);
  2147. campo.setAttribute('class', 'form-control text-right input-block');
  2148. campo.setAttribute('disabled', 'disable');
  2149. campo.setAttribute('value', '');
  2150. campo.setAttribute('type', 'text');
  2151. break;
  2152. //% de desconto
  2153. case 12:
  2154. campo = document.createElement('input');
  2155. campo.setAttribute('id', 'CK_DESCONT'+linha);
  2156. campo.setAttribute('name', 'CK_DESCONT'+linha);
  2157. campo.setAttribute('class', 'form-control text-right percentual');
  2158. campo.setAttribute('value', '');
  2159. campo.setAttribute('type', 'text');
  2160. campo.setAttribute('maxlength', '7');
  2161. campo.setAttribute('placeholder', '0,00');
  2162. campo.setAttribute('disabled', 'disable');
  2163. campo.setAttribute('onblur', 'javascript:VldValor("'+linha+'")');
  2164. campo.setAttribute('onkeyup', 'javascript:TotalItem("'+linha+'")');
  2165. break;
  2166. //% de comissão
  2167. case 13:
  2168. campo = document.createElement('input');
  2169. campo.setAttribute('id', 'PER_COM'+linha);
  2170. campo.setAttribute('name', 'PERCOM'+linha);
  2171. campo.setAttribute('class', 'form-control text-right input-block');
  2172. campo.setAttribute('disabled', 'disable');
  2173. campo.setAttribute('value', '');
  2174. campo.setAttribute('type', 'text');
  2175. break;
  2176. //Valor de comissão
  2177. case 14:
  2178. campo = document.createElement('input');
  2179. campo.setAttribute('id', 'VAL_COM'+linha);
  2180. campo.setAttribute('name', 'VAL_COM'+linha);
  2181. campo.setAttribute('class', 'form-control text-right input-block');
  2182. campo.setAttribute('disabled', 'disable');
  2183. campo.setAttribute('type', 'text');
  2184. campo.setAttribute('value', '');
  2185. break;
  2186. //Pedido cliente
  2187. case 15:
  2188. campo = document.createElement('input');
  2189. campo.setAttribute('id', 'CK_XPEDCLI'+linha);
  2190. campo.setAttribute('name', 'CK_XPEDCLI'+linha);
  2191. campo.setAttribute('class', 'form-control text-right input-block');
  2192. campo.setAttribute('disabled', 'disable');
  2193. campo.setAttribute('value', '');
  2194. campo.setAttribute('maxlength', '10');
  2195. campo.setAttribute('type', 'text');
  2196. break;
  2197. //Item Pedido cliente
  2198. case 16:
  2199. campo = document.createElement('input');
  2200. campo.setAttribute('id', 'CK_XITEMCL'+linha);
  2201. campo.setAttribute('name', 'CK_XITEMCL'+linha);
  2202. campo.setAttribute('class', 'form-control text-right input-block');
  2203. campo.setAttribute('disabled', 'disable');
  2204. campo.setAttribute('value', '');
  2205. campo.setAttribute('maxlength', '4');
  2206. campo.setAttribute('type', 'text');
  2207. break;
  2208. //TOTAL
  2209. case 17:
  2210. campo = document.createElement('input');
  2211. campo.setAttribute('id', 'CK_VALOR'+linha);
  2212. campo.setAttribute('name', 'CK_VALOR'+linha);
  2213. campo.setAttribute('class', 'form-control text-right input-block');
  2214. campo.setAttribute('disabled', 'disable');
  2215. campo.setAttribute('type', 'text');
  2216. campo.setAttribute('value', '');
  2217. break;
  2218. //Ações
  2219. case 18:
  2220. //Detalhes da linha
  2221. campo = document.createElement('i');
  2222. campo.setAttribute('class', 'fa fa-info fa-lg');
  2223. campo.setAttribute('Title', 'Detalhes da linha');
  2224. campo.setAttribute('onclick', 'detalheOrc('+"'"+linha+"'"+')');
  2225. cell.appendChild(campo);
  2226. //Remover linha
  2227. campo = document.createElement('i');
  2228. campo.setAttribute('class', 'fa fa-times-circle fa-lg');
  2229. campo.setAttribute('Title', 'Remover linha');
  2230. campo.setAttribute('onclick', 'removeItem('+"'"+linha+"'"+')');
  2231. break;
  2232. //Input Padrão
  2233. default:
  2234. campo = document.createElement('input');
  2235. campo.setAttribute('class', 'form-control input-block');
  2236. campo.setAttribute('disabled', 'disable');
  2237. }
  2238. cell.appendChild(campo); // apenda o campo na celula da tabela
  2239. //Adiciona as variáveis hidden
  2240. if (col == tam){
  2241. $('.selectpicker').selectpicker('render');
  2242. //$('.selectpicker').selectpicker('refresh');
  2243. campo = document.createElement('input');
  2244. campo.setAttribute('id', 'VAL_DESC'+linha);
  2245. campo.setAttribute('name', 'VAL_DESC'+linha);
  2246. campo.setAttribute('type', 'hidden');
  2247. campo.setAttribute('value', '0');
  2248. cell.appendChild(campo);
  2249. campo = document.createElement('input');
  2250. campo.setAttribute('id', 'ALIQ_ICMS'+linha);
  2251. campo.setAttribute('name', 'ALIQ_ICMS'+linha);
  2252. campo.setAttribute('type', 'hidden');
  2253. campo.setAttribute('value', '0');
  2254. cell.appendChild(campo);
  2255. campo = document.createElement('input');
  2256. campo.setAttribute('id', 'ALIQ_IPI'+linha);
  2257. campo.setAttribute('name', 'ALIQ_IPI'+linha);
  2258. campo.setAttribute('type', 'hidden');
  2259. campo.setAttribute('value', '0');
  2260. cell.appendChild(campo);
  2261. campo = document.createElement('input');
  2262. campo.setAttribute('id', 'ALIQ_ST'+linha);
  2263. campo.setAttribute('name', 'ALIQ_ST'+linha);
  2264. campo.setAttribute('type', 'hidden');
  2265. campo.setAttribute('value', '0');
  2266. cell.appendChild(campo);
  2267. campo = document.createElement('input');
  2268. campo.setAttribute('id', 'VAL_ICMS'+linha);
  2269. campo.setAttribute('name', 'VAL_ICMS'+linha);
  2270. campo.setAttribute('type', 'hidden');
  2271. campo.setAttribute('value', '0');
  2272. cell.appendChild(campo);
  2273. campo = document.createElement('input');
  2274. campo.setAttribute('id', 'VAL_IPI'+linha);
  2275. campo.setAttribute('name', 'VAL_IPI'+linha);
  2276. campo.setAttribute('type', 'hidden');
  2277. campo.setAttribute('value', '0');
  2278. cell.appendChild(campo);
  2279. campo = document.createElement('input');
  2280. campo.setAttribute('id', 'VAL_ST'+linha);
  2281. campo.setAttribute('name', 'VAL_ST'+linha);
  2282. campo.setAttribute('type', 'hidden');
  2283. campo.setAttribute('value', '0');
  2284. cell.appendChild(campo);
  2285. campo = document.createElement('input');
  2286. campo.setAttribute('id', 'BASE_ICMS'+linha);
  2287. campo.setAttribute('name', 'BASE_ICMS'+linha);
  2288. campo.setAttribute('type', 'hidden');
  2289. campo.setAttribute('value', '0');
  2290. cell.appendChild(campo);
  2291. campo = document.createElement('input');
  2292. campo.setAttribute('id', 'BASE_ST'+linha);
  2293. campo.setAttribute('name', 'BASE_ST'+linha);
  2294. campo.setAttribute('type', 'hidden');
  2295. campo.setAttribute('value', '0');
  2296. cell.appendChild(campo);
  2297. campo = document.createElement('input');
  2298. campo.setAttribute('id', 'BASE_IPI'+linha);
  2299. campo.setAttribute('name', 'BASE_IPI'+linha);
  2300. campo.setAttribute('type', 'hidden');
  2301. campo.setAttribute('value', '0');
  2302. cell.appendChild(campo);
  2303. campo = document.createElement('input');
  2304. campo.setAttribute('id', 'QTD_EMB'+linha);
  2305. campo.setAttribute('name', 'QTD_EMB'+linha);
  2306. campo.setAttribute('type', 'hidden');
  2307. campo.setAttribute('value', '0');
  2308. cell.appendChild(campo);
  2309. campo = document.createElement('input');
  2310. campo.setAttribute('id', 'CK_TES'+linha);
  2311. campo.setAttribute('name', 'CK_TES'+linha);
  2312. campo.setAttribute('type', 'hidden');
  2313. campo.setAttribute('value', '0');
  2314. cell.appendChild(campo);
  2315. campo = document.createElement('input');
  2316. campo.setAttribute('id', 'QTDMIN'+linha);
  2317. campo.setAttribute('name', 'QTDMIN'+linha);
  2318. campo.setAttribute('type', 'hidden');
  2319. campo.setAttribute('value', '0');
  2320. cell.appendChild(campo);
  2321. campo = document.createElement('input');
  2322. campo.setAttribute('id', 'PROMOCAO'+linha);
  2323. campo.setAttribute('name', 'PROMOCAO'+linha);
  2324. campo.setAttribute('type', 'hidden');
  2325. campo.setAttribute('value', '0');
  2326. cell.appendChild(campo);
  2327. }
  2328. }
  2329. //Salvar o orçamento
  2330. $('#btSalvar').click(function() {
  2331. var lRet = true
  2332. var i = 0;
  2333. var nItens = parseFloat($("#PROXIMO").val());
  2334. var lGrid = true;
  2335. var lGrid1 = true;
  2336. var cCodProd;
  2337. var cItmOrc;
  2338. var btnSlv = $(this);
  2339. var cGrupo = "";
  2340. var dialogOrc = bootbox.dialog({
  2341. message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i>&nbsp;&nbsp;Validando orçamento. Aguarde...</p>',
  2342. closeButton: false
  2343. });
  2344. //Desabilita o botão
  2345. btnSlv.attr({ 'disabled': 'disabled' });
  2346. $.ajax({
  2347. url: "U_VerSessao.apw?PR=<%=cLCodLogin%>",
  2348. type: "POST",
  2349. async: false,
  2350. success:
  2351. function(retorno) {
  2352. if (retorno.indexOf('<META HTTP-EQUIV') >= 0 ) {
  2353. $("html").html(retorno);
  2354. return;
  2355. }
  2356. if (retorno == "nok"||retorno == ''||retorno.indexOf("Expires") != -1){
  2357. $("#orc-informar").html();
  2358. bootbox.alert('Não foi possível realizar a operação pois a sessão foi fechada. Faça login novamente.');
  2359. lRet = false;
  2360. btnSlv.removeAttr('disabled');
  2361. dialogOrc.modal('hide');
  2362. }
  2363. }
  2364. });
  2365. /**
  2366. Valida os campos obrigatorios
  2367. **/
  2368. //Cliente
  2369. if ($("#CJ_CLIENTE").val() == "") {
  2370. lRet = false;
  2371. $("#orc-informar").html();
  2372. new PNotify({
  2373. title: 'Campo obrigatório',
  2374. text: 'Preencha o campo Cliente!',
  2375. type: 'error',
  2376. });
  2377. btnSlv.removeAttr('disabled');
  2378. dialogOrc.modal('hide');
  2379. $("#CJ_CLIENTE").focus();
  2380. }
  2381. //Tabela de preço
  2382. if (lRet == true && $("#CJ_TABELA").val() == "") {
  2383. lRet = false;
  2384. $("#orc-informar").html();
  2385. new PNotify({
  2386. title: 'Campo obrigatório',
  2387. text: 'Preencha o campo Tabela de Preço!',
  2388. type: 'error',
  2389. });
  2390. btnSlv.removeAttr('disabled');
  2391. dialogOrc.modal('hide');
  2392. $("#CJ_TABELA").focus();
  2393. }
  2394. //Data de Entrega
  2395. /*
  2396. if (lRet == true && $("#CK_ENTREG").val() == "") {
  2397. lRet = false;
  2398. $("#orc-informar").html();
  2399. new PNotify({
  2400. title: 'Campo obrigatório',
  2401. text: 'Preencha o campo Previsão de Faturamento!',
  2402. type: 'error',
  2403. });
  2404. btnSlv.removeAttr('disabled');
  2405. dialogOrc.modal('hide');
  2406. $("#CK_ENTREGA").focus();
  2407. }
  2408. */
  2409. //Condição de pagamento
  2410. if (lRet == true && $("#CJ_CONDPAG").val() == "") {
  2411. lRet = false;
  2412. $("#orc-informar").html();
  2413. new PNotify({
  2414. title: 'Campo obrigatório',
  2415. text: 'Preencha o campo Condição de Pagamento!',
  2416. type: 'error',
  2417. });
  2418. btnSlv.removeAttr('disabled');
  2419. dialogOrc.modal('hide');
  2420. $("#CJ_CONDPAG").focus();
  2421. }
  2422. //cartão de crédito
  2423. if (lRet == true & $("#CJ_XMODALI").val() == "03") {
  2424. /*
  2425. if ($("#CJ_XPARC").val() == ""|| $("#CJ_XPARC").val() == "0") {
  2426. lRet = false;
  2427. $("#orc-informar").html();
  2428. new PNotify({
  2429. title: 'Campo obrigatório',
  2430. text: 'Preencha o campo Parcela!',
  2431. type: 'error',
  2432. });
  2433. btnSlv.removeAttr('disabled');
  2434. dialogOrc.modal('hide');
  2435. $("#CJ_XPARC").focus();
  2436. } else {
  2437. if ($("#CJ_XBAND").val() == ""){
  2438. lRet = false;
  2439. $("#orc-informar").html();
  2440. new PNotify({
  2441. title: 'Campo obrigatório',
  2442. text: 'Preencha o campo Bandeira!',
  2443. type: 'error',
  2444. });
  2445. btnSlv.removeAttr('disabled');
  2446. dialogOrc.modal('hide');
  2447. $("#CJ_XBAND").focus();
  2448. }
  2449. }*/
  2450. }
  2451. if (lRet == true && $("#CJ_CONDPAG").val() != "") {
  2452. var totalorc = $("#TOTAL_ORC").val();
  2453. var valMin = 0;
  2454. $.ajax({
  2455. url: "U_ValMinParc.apw?PR=<%=cLCodLogin%>",
  2456. data: 'condPgto='+$("#CJ_CONDPAG").val()+'&valor='+$("#TOTAL_ORC").val(),
  2457. type: "POST",
  2458. async: false,
  2459. success:
  2460. function(retorno) {
  2461. valMin = parseFloat(retorno);
  2462. if (valMin > 0) {
  2463. bootbox.alert('Para a condição de pagamento escolhida o valor mínimo permitido por parcela é de R$'+mascaraValor(valMin.toFixed(2))+'.');
  2464. lRet = false;
  2465. btnSlv.removeAttr('disabled');
  2466. dialogOrc.modal('hide');
  2467. }
  2468. }
  2469. });
  2470. }
  2471. //Transportadora e frete
  2472. if (lRet == true && ($("#CJ_TPFRETE").val() == "C" || $("#CJ_TPFRETE").val() == "F")) {
  2473. if ($("#CJ_XTRANSP").val() == ""){
  2474. lRet = false;
  2475. $("#orc-informar").html();
  2476. new PNotify({
  2477. title: 'Campo obrigatório',
  2478. text: 'Para frete tipo CIF e FOB deve ser informada a Transportadora!',
  2479. type: 'error',
  2480. });
  2481. btnSlv.removeAttr('disabled');
  2482. dialogOrc.modal('hide');
  2483. $("#CJ_XTRANSP").focus();
  2484. }
  2485. }
  2486. //Série da nota para Orçamento Firme
  2487. if (lRet == true && $("#CJ_XTPORC").val() == "1" && $("#CJ_XSERIEN").val() == "") {
  2488. lRet = false;
  2489. $("#orc-informar").html();
  2490. new PNotify({
  2491. title: 'Campo obrigatório',
  2492. text: 'Preencha o campo Série!',
  2493. type: 'error',
  2494. });
  2495. btnSlv.removeAttr('disabled');
  2496. dialogOrc.modal('hide');
  2497. $("#CJ_XSERIEN").focus();
  2498. }
  2499. //Grid
  2500. if (lRet == true) {
  2501. for (i = 1; i<=nItens; i++) {
  2502. cItem = String(i);
  2503. if (parseInt(i) < 10 ){cItem = "0"+String(i)};
  2504. cCodProd = $("#CK_PRODUTO"+cItem).val();
  2505. cItmOrc = $("#CK_ITEM"+cItem).val();
  2506. if(cItmOrc != "x") {
  2507. //Valida o preenchimento dos campos produto e quantidade
  2508. if ($('#CK_PRODUTO'+cItem).val() == "" || $('#CK_QTDVEN'+cItem).val() == ""){
  2509. lGrid = false;
  2510. }
  2511. //Valida o preenchimento do pedido e item
  2512. pedCli = $('#CK_XPEDCLI'+cItem).val();
  2513. itmCli = $('#CK_XITEMCL'+cItem).val();
  2514. if ((pedCli != "" && itmCli == "") || (pedCli == "" && itmCli != "")){
  2515. lGrid1 = false;
  2516. }
  2517. //Valida o estoque no orçamento firme
  2518. if( $('#CJ_XTPORC').val() == "1"){
  2519. if(vldEstoque(cItem) == false){
  2520. lRet = false;
  2521. btnSlv.removeAttr('disabled');
  2522. dialogOrc.modal('hide');
  2523. }
  2524. }
  2525. }
  2526. }
  2527. if (lGrid == false){
  2528. lRet = false;
  2529. $("#orc-informar").html();
  2530. new PNotify({
  2531. title: 'Campo obrigatório',
  2532. text: 'Verifique o preenchimento dos campos Produto e Quantidade!',
  2533. type: 'error',
  2534. });
  2535. btnSlv.removeAttr('disabled');
  2536. dialogOrc.modal('hide');
  2537. }
  2538. if (lGrid1 == false){
  2539. lRet = false;
  2540. $("#orc-informar").html();
  2541. new PNotify({
  2542. title: 'Pedido / Item Cliente',
  2543. text: 'Se informado o item ou o pedido do cliente, os dois campos devem ser preenchidos!',
  2544. type: 'error',
  2545. });
  2546. btnSlv.removeAttr('disabled');
  2547. dialogOrc.modal('hide');
  2548. }
  2549. }
  2550. //Valida a condição de pagamento
  2551. if (lRet == true){
  2552. dialogOrc.modal('hide');
  2553. //Chama a validação do limite e submete o formulário
  2554. vldOrc(btnSlv);
  2555. // $.ajax({
  2556. // url: "U_VldAcresc.apw?PR=<%=cLCodLogin%>",
  2557. // data: 'condicao='+$("#CJ_CONDPAG").val()+'&valor='+$("#TOTAL_ORC").val()+'&modalidade='+$("#CJ_XMODALI").val()+'&grupos='+$('#GRUPOS').val()+
  2558. // '&cliente='+$("#CJ_CLIENTE").val(),
  2559. // type: "POST",
  2560. // async: false,
  2561. // success:
  2562. // function(retorno) {
  2563. // if (retorno.indexOf('<META HTTP-EQUIV') >= 0 ) {
  2564. // $("html").html(retorno);
  2565. // return;
  2566. // }
  2567. // aRet = retorno.split('|');
  2568. // cAcresc = aRet[0];
  2569. // nAcresc = parseFloat(aRet[1]);
  2570. // if (nAcresc > 0 ) {
  2571. // bootbox.confirm({
  2572. // title: "Pedido abaixo do mínimo",
  2573. // message: 'Pedido abaixo do valor mínimo, será aplicado acréscimo de '+cAcresc+'%. Deseja continuar?',
  2574. // buttons: {
  2575. // cancel: {
  2576. // label: 'Não'
  2577. // },
  2578. // confirm: {
  2579. // label: 'Sim'
  2580. // }
  2581. // },
  2582. // callback: function (result) {
  2583. // if(result){
  2584. // //Atualiza a variável
  2585. // $("#ACRESCIMO").val((nAcresc * -1).toString());
  2586. // //Chama a validação do limite e submete o formulário
  2587. // vldOrc(btnSlv);
  2588. // }
  2589. // else {
  2590. // btnSlv.removeAttr('disabled');
  2591. // }
  2592. // }
  2593. // });
  2594. // } else {
  2595. // //Chama a validação do limite e submete o formulário
  2596. // vldOrc(btnSlv);
  2597. // }
  2598. // }
  2599. // });
  2600. }
  2601. })
  2602. $('#btExcluir').click(function() {
  2603. var lRet = true
  2604. var i = 0;
  2605. var lGrid = true;
  2606. var cCodProd;
  2607. var btnSlv = $(this);
  2608. //Desabilita o botão
  2609. $('#btExcluir').attr({ 'disabled': 'disabled' });
  2610. objDados = {
  2611. CJ_CLIENTE: $('#CJ_CLIENTE').val(),
  2612. CJ_NUM: $('#CJ_NUM').val()
  2613. };
  2614. $.ajax({
  2615. type: "POST",
  2616. url: "U_ExcOrc.apw?PR=<%=cLCodLogin%>",
  2617. async: false,
  2618. data: objDados
  2619. }).fail(function(){
  2620. bootbox.alert({
  2621. title: "Exclusão de Orçamento",
  2622. message: "Não foi possível excluir o orçamento.",
  2623. backdrop: true,
  2624. callback: function (result) {
  2625. btnSlv.removeAttr('disabled');
  2626. }
  2627. });
  2628. }).done(function(strXml) {
  2629. if (strXml.indexOf('<META HTTP-EQUIV') >= 0 ) {
  2630. $("html").html(strXml);
  2631. return;
  2632. }
  2633. bootbox.alert({
  2634. title: "Exclusão de Orçamento",
  2635. message: "O orçamento "+$('#CJ_NUM').val()+" foi excluído com sucesso.",
  2636. backdrop: true,
  2637. callback: function (result) {
  2638. document.location.href = "U_Orcamento.apw?PR=<%=cLCodLogin%>";
  2639. }
  2640. });
  2641. });
  2642. })
  2643. //Validação do valor do frete
  2644. function vldOrc(btnSlv){
  2645. vldOrc1(btnSlv);
  2646. /*
  2647. var tipoFre = $('#CJ_TPFRETE').val();
  2648. var total = $("#TOTAL_ITENS").maskMoney('unmasked')[0];
  2649. var valMin = 0;
  2650. if (tipoFre == "C") {
  2651. $.ajax({
  2652. url: "U_FreteMinimo.apw?PR=<%=cLCodLogin%>",
  2653. data: 'tipoFrete='+tipoFre,
  2654. type: "POST",
  2655. async: false,
  2656. success:
  2657. function(retorno) {
  2658. if (retorno.indexOf('<META HTTP-EQUIV') >= 0 ) {
  2659. $("html").html(retorno);
  2660. return;
  2661. }
  2662. valMin = parseInt(retorno);
  2663. if (total < valMin ) {
  2664. bootbox.alert('O valor mínimo de orçamento para frete do tipo CIF é R$'+retorno+'!');
  2665. btnSlv.removeAttr('disabled');
  2666. return false;
  2667. } else {
  2668. vldOrc1(btnSlv);
  2669. }
  2670. }
  2671. });
  2672. } else {
  2673. vldOrc1(btnSlv);
  2674. }*/
  2675. }
  2676. //Se orçamento firme e boleto, valida o limite de crédito disponível
  2677. function vldOrc1(btnSlv){
  2678. if ( ($('#CJ_XTPORC').val() == "1") && ($('#CJ_XMODALI').val() == '01' || $('#CJ_XMODALI').val() == '06') ){
  2679. var cliente = $("#CJ_CLIENTE").val();
  2680. var total = $("#TOTAL_ITENS").maskMoney('unmasked')[0];
  2681. var limDisp = 0;
  2682. lRet = false;
  2683. $.ajax({
  2684. url: "U_GetLimCred.apw?PR=<%=cLCodLogin%>",
  2685. data: 'cliente='+cliente+'&valor='+total,
  2686. cache: false,
  2687. type: "POST",
  2688. async: false,
  2689. success:
  2690. function(retorno) {
  2691. if (retorno.indexOf('<META HTTP-EQUIV') >= 0 ) {
  2692. $("html").html(retorno);
  2693. return;
  2694. }
  2695. // Retorno limiteDisponivel|limiteTolerancia
  2696. var aRet = retorno.split('|');
  2697. var limDisp = 0.00;
  2698. var limTol = 0.00;
  2699. // Pega o limite de tolerancia
  2700. if ( aRet.length > 1 ) {
  2701. limTol= parseFloat(aRet[1]);
  2702. }
  2703. // Pega o limite disponivel
  2704. if ( aRet.length > 0 ) {
  2705. limDisp= parseFloat(aRet[0]);
  2706. }
  2707. if (total > (limTol+limDisp) ) {
  2708. bootbox.alert({
  2709. title: 'Limite de crédito insuficiente',
  2710. message: 'Não é possível salvar o orçamento.<br> Saldo disponível: R$'+mascaraValor(limDisp.toFixed(2))+'.<br>Este cliente só pode realizar compras à vista.', //mascaraValor(limDisp.toFixed(2))
  2711. callback: function () {
  2712. btnSlv.removeAttr('disabled');
  2713. //salvarOrc(btnSlv);
  2714. }
  2715. });
  2716. } else {
  2717. salvarOrc(btnSlv);
  2718. }
  2719. }
  2720. });
  2721. } else {
  2722. salvarOrc(btnSlv);
  2723. }
  2724. }
  2725. //Submete formulario
  2726. function salvarOrc(btnSlv){
  2727. var numorc = "";
  2728. //if (lRet == true){
  2729. //$("#formOrc").submit();
  2730. var dialogSlv = bootbox.dialog({
  2731. message: '<p class="text-center"><i class="fa fa-spin fa-spinner"></i>&nbsp;&nbsp;Salvando orçamento... Aguarde...</p>',
  2732. closeButton: false
  2733. });
  2734. //busca os itens cadastrados
  2735. var ITENS = "";
  2736. var i = 0;
  2737. var nItens = parseFloat($("#PROXIMO").val());
  2738. var cCodProd;
  2739. var cItmOrc;
  2740. var cDescAcresc = "0";
  2741. for (i = 1; i<=nItens; i++) {
  2742. cItem = String(i);
  2743. if (parseInt(i) < 10 ){cItem = "0"+String(i)};
  2744. cCodProd = $("#CK_PRODUTO"+cItem).val();
  2745. cItmOrc = $("#CK_ITEM"+cItem).val();
  2746. if(cItmOrc != "x") {
  2747. cPrcVen = $('#CK_PRCVEN'+cItem).val();
  2748. nDesc = $('#CK_DESCONT'+cItem).val();
  2749. // let cPrcVen = $('#iCK_PRCVEN'+cItem).val();
  2750. // // Se desconto negativo --> salva o preco de tabela original
  2751. // if ($('#CK_DESCONT'+cItem).val().substr(0,1) == "-") {
  2752. // cPrcVen = $('#CK_PRCVEN'+cItem).val();
  2753. // }
  2754. //Tratativa para salvar o desconto correto.
  2755. if($("#OPCAO").val() == "3"){
  2756. nDesc = 0;
  2757. nVlrVenda = $("#CK_PRCVEN"+cItem).maskMoney('unmasked')[0];
  2758. nVlrOri = $("#CK_PRCVEN"+cItem).maskMoney('unmasked')[0];
  2759. }
  2760. ITENS+= $('#CK_PRODUTO'+cItem).val()+';'+$('#CK_QTDVEN'+cItem).val()+';'+cPrcVen+';'+$('#CK_LOCAL'+cItem).val()+';';
  2761. ITENS+= $('#CK_XVALIPI'+cItem).val()+';'+$('#CK_XVALICM'+cItem).val()+';'+$('#CK_XICMST'+cItem).val()+';'+$('#CK_TES'+cItem).val()+';';
  2762. ITENS+= $('#PER_COM'+cItem).val()+';'+$('#ALIQ_ICMS'+cItem).val()+';'+$('#ALIQ_IPI'+cItem).val()+';'+$('#ALIQ_ST'+cItem).val()+';';
  2763. ITENS+= nDesc+';'+$('#CK_XPEDCLI'+cItem).val()+';'+$('#CK_XITEMCL'+cItem).val()+';';
  2764. ITENS+= $('#CK_XPRCIMP'+cItem).val()+';'+$('#CK_XCODBAR'+cItem).val()+'||'
  2765. }
  2766. }
  2767. objDados = {
  2768. CJ_CLIENTE: $('#CJ_CLIENTE').val(),
  2769. CJ_TABELA: $('#CJ_TABELA').val(),
  2770. CJ_VEND: $('#CJ_VEND').val(),
  2771. CJ_XTPORC: $('#CJ_XTPORC').val(),
  2772. CJ_TPFRETE: $('#CJ_TPFRETE').val(),
  2773. CJ_FRETE: $('#CJ_FRETE').val(),
  2774. CJ_XTRANSP: $('#CJ_XTRANSP').val(),
  2775. CJ_XMODALI: $('#CJ_XMODALI').val(),
  2776. CJ_CONDPAG: $('#CJ_CONDPAG').val(),
  2777. CJ_DESC1: $("#DESCCOND").val(),
  2778. CJ_VALIDA: $('#CJ_VALIDA').val(),
  2779. CJ_XSERIEN: $('#CJ_XSERIEN').val(),
  2780. CJ_XPESO: $('#CJ_XPESO').val(),
  2781. CJ_XVOLUME: $('#CJ_XVOLUME').val(),
  2782. CJ_XESPECI: $('#CJ_XESPECI').val(),
  2783. CK_ENTREG: $('#CK_ENTREG').val(),
  2784. CJ_XNOTAIN: $('#CJ_XNOTAIN').val(),
  2785. CJ_XMSGNF: $('#CJ_XMSGNF').val(),
  2786. CJ_XPARC: $('#CJ_XPARC').val(),
  2787. CJ_XBAND: $('#CJ_XBAND').val(),
  2788. CJ_NUM: $('#CJ_NUM').val(),
  2789. PROXIMO: $('#PROXIMO').val(),
  2790. OPCAO: $('#OPCAO').val(),
  2791. aItens: ITENS
  2792. };
  2793. if($("#OPCAO").val() == "3"){
  2794. msg = "O orçamento foi incluído com sucesso.";
  2795. titulo = "Inclusão de Orçamento";
  2796. operacao = "incluir";
  2797. }
  2798. if($("#OPCAO").val() == "4"){
  2799. msg = "O orçamento foi alterado com sucesso.";
  2800. titulo = "Alteração de Orçamento";
  2801. operacao = "alterar";
  2802. }
  2803. if($("#OPCAO").val() == "5"){
  2804. msg = "O orçamento foi excluído com sucesso.";
  2805. titulo = "Exclusão de Orçamento";
  2806. operacao = "excluir";
  2807. }
  2808. $.ajax({
  2809. type: "POST",
  2810. url: "U_SlvOrc.apw?PR=<%=cLCodLogin%>",
  2811. async: false,
  2812. data: objDados
  2813. }).fail(function(){
  2814. bootbox.alert({
  2815. title: titulo,
  2816. message: "Não foi possível "+operacao+" o orçamento.",
  2817. backdrop: true,
  2818. callback: function (result) {
  2819. btnSlv.removeAttr('disabled');
  2820. dialogSlv.modal('hide');
  2821. }
  2822. });
  2823. }).done(function(strXml) {
  2824. if (strXml.indexOf('<META HTTP-EQUIV') >= 0 ) {
  2825. $("html").html(strXml);
  2826. return;
  2827. }
  2828. if (strXml == 'erro'||strXml == ''||strXml.indexOf("Expires") != -1||strXml.indexOf("invalid") != -1){
  2829. if (strXml == ''){
  2830. bootbox.alert({
  2831. title: titulo,
  2832. message: "Aguarde o prazo de 3 minutos para "+operacao+" um novo orçamento.",
  2833. backdrop: true,
  2834. callback: function (result) {
  2835. btnSlv.removeAttr('disabled');
  2836. dialogSlv.modal('hide');
  2837. }
  2838. });
  2839. }else{
  2840. bootbox.alert({
  2841. title: titulo,
  2842. message: "Falha ao "+operacao+" o orçamento.",
  2843. backdrop: true,
  2844. callback: function (result) {
  2845. btnSlv.removeAttr('disabled');
  2846. dialogSlv.modal('hide');
  2847. }
  2848. });
  2849. }
  2850. }
  2851. else {
  2852. if($("#OPCAO").val() == "3"){
  2853. numorc = " Foi gerado o orçamento nº "+strXml+"."
  2854. }
  2855. bootbox.alert({
  2856. title: titulo,
  2857. message: msg+numorc,
  2858. backdrop: true,
  2859. callback: function (result) {
  2860. document.location.href = "U_Orcamento.apw?PR=<%=cLCodLogin%>";
  2861. dialogSlv.modal('hide');
  2862. }
  2863. });
  2864. }
  2865. });
  2866. //};
  2867. }
  2868. </script>
  2869. </body>
  2870. </html>