Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.98 KB | None | 0 0
  1. var Partidas = new Array();
  2. var total = 0.0;
  3. var claveadd_id = 0;
  4. var db;
  5. var request;
  6.  
  7. function sellsingle() {
  8.  
  9.  
  10.  
  11. $('sendButton').text('Sending request');
  12. var prodId = $('#prodtb').val();
  13. var clientid = $('#clienttb').val();
  14.  
  15. var queryString =
  16. endpoint + '/sellsingle.ashx?prod=' + prodId + '&client=' + clientid + '&format=json';
  17.  
  18. $.getJSON(queryString, function (results) {
  19. showSellSingleResults(results);
  20. }
  21. ).fail(function (jqXHR) {
  22. setStatLabel("danger", "Un error ocurrió")
  23. })
  24.  
  25. return false;
  26.  
  27. }
  28.  
  29. function showSellSingleResults(results) {
  30. var vta = results.VENTA;
  31. $("#statuslabel").removeAttr ("class");
  32. $('#statuslabel').text('Venta ' + vta + ' hecha');
  33. }
  34.  
  35. function populateSearch(results) {
  36.  
  37. var endpoint = localStorage.getItem("endpoint");
  38. var term = $('#searchProdText').val();
  39.  
  40. if (term.length > 0) {
  41. var url =
  42. endpoint + '/search.ashx?q=contains&c=' + term;
  43.  
  44. $('#prodSearch ul').empty();
  45.  
  46. $.getJSON(url, function (results) {
  47. for (i = 0; i < results.length; i++) {
  48. addToProdList(results[i]);
  49. }
  50. }
  51. ).fail(function (jqXHR) {
  52. setStatLabel("danger", "Un error ocurrió")
  53. });
  54.  
  55. }else{
  56. setStatLabel("warning", 'Escribe un articulo para buscar')
  57. }
  58.  
  59.  
  60. }
  61.  
  62. function searchClient(){
  63. var endpoint = localStorage.getItem("endpoint");
  64. var term = $('#searchClientText').val();
  65.  
  66. if (term.length > 0)
  67. {
  68. var url =
  69. endpoint + '/searchclient.ashx?c=' + term;
  70.  
  71. $('#clientSearch ul').empty();
  72.  
  73. $.getJSON(url, function (results) {
  74. for (i = 0; i < results.length; i++) {
  75. addToClientList(results[i]);
  76. }
  77. }
  78. ).fail(function (jqXHR) {
  79. setStatLabel("danger", 'Un error ocurrió');
  80. });
  81. }else{
  82. setStatLabel("warning", 'Escribe un cliente para buscar');
  83. }
  84.  
  85. }
  86.  
  87. function addToClientList(result){
  88. $('#clientSearch ul').append(
  89. '<li class="list-group-item" id="' +
  90. result.cliente + '">' +
  91. result.nombre + '</li>');
  92.  
  93.  
  94.  
  95. $(document).on('click', '#' + result.cliente,
  96. function(){
  97. $('#clienttb').val(result.cliente);
  98. $('#searchClientModal').modal('hide');
  99. } );
  100. }
  101.  
  102. function addToProdList(item)
  103. {
  104.  
  105.  
  106. $('#prodSearch ul').append(
  107. '<li class="list-group-item" id="' +
  108. item.ARTICULO + '">' +
  109. item.DESCRIP + '</li>');
  110.  
  111.  
  112. $(document).on('click', '#' + item.ARTICULO,
  113. function(){
  114.  
  115. //Deselecciona las lineas de abajo para agregar el articulo directamente
  116. //window.alert(item.PRECIO);
  117. //$('#prodtb').val(item.ARTICULO);
  118. //$('#pricetb').val(item.PRECIO);
  119. $('#searchProdModal').modal('hide');
  120.  
  121. // Selecciona la linea de abajo para agregar el articulo directamente
  122. selectclaveadd2(item.ARTICULO);
  123. } );
  124.  
  125. }
  126.  
  127. function addProd(results) {
  128. var endpoint = localStorage.getItem("endpoint");
  129.  
  130. var prodId = $('#prodtb').val();
  131.  
  132. var queryString = endpoint + '/prods.ashx?single=true&p=' + prodId;
  133.  
  134. var prod = $.getJSON(queryString, function (results) {
  135. // edit here, result will be an array with multiple product presentations
  136. instanceProd(results);
  137. }).fail(function (jqXHR) {
  138. setStatLabel("danger", "algo fallo :()")
  139. });
  140.  
  141.  
  142. }
  143.  
  144. function statCheck2(){
  145. //window.alert("intentando conexión")
  146. setStatLabel("info", "intentando conexion");
  147.  
  148.  
  149. var endpoint = localStorage.getItem("endpoint");
  150.  
  151. var url = endpoint + '/dbstatus.ashx';
  152.  
  153. var stat = $.getJSON(url, function(result){
  154. if (result.exists == true){
  155.  
  156. $('#addButton' ).unbind('click').click(addProd ); // Add prod to prods to be sent
  157. $('#terminateButton' ).unbind('click').click(terminateSell ); // terminate sell on click
  158. $('#searchProdButton' ).unbind('click').click(populateSearch ); // On search prod click
  159.  
  160. setStatLabel("success", "Sistema cargado y listo");
  161. }else{
  162. setStatLabel("danger", "No se pudo conectar a la base de datos");
  163. }
  164. }).error(function(jqXHR, textStatus, errorThrown){
  165. $('#addButton' ).unbind('click').click(addProdOffline ); // Add prod to prods to be sent
  166. $('#terminateButton' ).unbind('click').click(insertPendingSell );
  167. $('#searchProdButton' ).unbind('click').click(searchProdOffline );
  168.  
  169. setStatLabel("danger", "No se pudo conectar al servidor: " + textStatus);
  170. });
  171. }
  172.  
  173. function instanceProd2(results){
  174. var price = $('#pricetb').val();
  175.  
  176. var newP = {
  177. Precio: price,
  178. Cantidad: 1,
  179. Impuesto: 0,
  180. Costo: results.ARTICULO.COSTO,
  181. Articulo: results.ARTICULO.ARTICULO}
  182.  
  183. Partidas.push(newP);
  184.  
  185. total = total + newP.Precio;
  186.  
  187. $("#statuslabel").removeAttr ("class" );
  188. $('#statuslabel').addClass ("alert alert alert-success" );
  189. $('#statuslabel').text ('Articulo agregado, total: ' + total );
  190. $('#prods ul' ).append ('<li class="list-group-item">' + results.ARTICULO.DESCRIP + '</li>' );
  191. }
  192.  
  193. function instanceProd(results) {
  194. var price = $('#pricetb').val();
  195. if (results.clavesadd.length > 0)
  196. {
  197. selectclaveadd(results.clavesadd, results.ARTICULO);
  198. }else{
  199. var newP = {
  200. Precio: price,
  201. Cantidad: 1,
  202. Impuesto: 0,
  203. Costo: results.ARTICULO.COSTO,
  204. Articulo: results.ARTICULO.ARTICULO
  205. };
  206. Partidas.push(newP);
  207.  
  208. total = total + newP.Precio;
  209.  
  210. $("#statuslabel").removeAttr ("class" );
  211. $('#statuslabel').addClass ("alert alert alert-success" );
  212. $('#statuslabel').text ('Articulo agregado, total: ' + total );
  213. $('#prods ul' ).append ('<li class="list-group-item">' + results.ARTICULO.DESCRIP + '</li>' );
  214. }
  215. }
  216.  
  217. function selectclaveadd2(art){
  218. // url del articulo
  219. var endpoint = localStorage.getItem("endpoint");
  220. var url = endpoint + '/prods.ashx?single=true&p=' + art;
  221.  
  222.  
  223. $.getJSON(url, function (results) {
  224. if (results.clavesadd.length > 0){
  225. selectclaveadd(results.clavesadd, results.ARTICULO)
  226. }else{
  227. instanceProd2(results)
  228. }
  229.  
  230. }
  231. ).fail(function (jqXHR) {
  232. setStatLabel("danger", 'Un error ocurrió');
  233. });
  234.  
  235.  
  236.  
  237. }
  238.  
  239. function selectclaveadd(data, art){
  240. $('#presList ul').empty();
  241. $('#clavesaddModal').modal('show');
  242. //$('#presList ul').append('<li>' + data[0].Dato1 + '</li>')
  243.  
  244. for (i = 0; i < data.length; i++) {
  245.  
  246. var item = data[i];
  247.  
  248.  
  249. var displayText = item.Clave + '(' + item.Precio + ')';
  250.  
  251. $('#presList ul').append(
  252. '<li class="list-group-item" id="' +
  253. item.Clave + '">' +
  254. displayText+ '</li>');
  255.  
  256. //$('#presList ul').append('<li class="list-group-item">' + item.Dato1 +'</li>');
  257.  
  258.  
  259. $("#presList ul").unbind('click').on('click', '#' + item.Clave,
  260. function(){
  261. var newP = {
  262. Precio: item.Precio,
  263. Cantidad: 1,
  264. Impuesto: 0,
  265. Costo: art.COSTO,
  266. Articulo: art.ARTICULO
  267. };
  268. Partidas.push(newP);
  269.  
  270. total = total + newP.Precio;
  271.  
  272. $("#statuslabel" ).removeAttr ("class" );
  273. $('#statuslabel' ).addClass ("alert alert alert-success" );
  274. $('#statuslabel' ).text ('Articulo agregado, total: ' + total );
  275. $('#prods ul' ).append ('<li class="list-group-item">' + art.DESCRIP + '</li>' );
  276. $('#clavesaddModal' ).modal ('hide' );
  277. } // function
  278. ); // on click
  279.  
  280. } // for
  281.  
  282.  
  283.  
  284. } //selectclaveadd
  285.  
  286. function terminateSell() {
  287. var clientid = $('#clienttb').val();
  288.  
  289. if (Partidas.length > 0 && clientid.length > 0){
  290. var endoint = localStorage.getItem("endpoint");
  291.  
  292.  
  293. var ob = { "ClientId": clientid, "Partidas": Partidas };
  294.  
  295. var data = JSON.stringify(ob);
  296.  
  297. var url = endoint + '//makesell.ashx';
  298.  
  299. $.ajax({
  300. type: "POST",
  301. data: data,
  302. url: url,
  303. contentType: "application/json",
  304. dataType: 'json'
  305. }).done(function (res) {
  306. setStatLabel("success", "Venta hecha")
  307. console.log('res', res);
  308. // Do something with the result :)
  309. });
  310.  
  311. $('#prods ul').empty();
  312. Partidas = [];
  313. total = 0;
  314. }
  315.  
  316. }
  317.  
  318. function showTerminateSellResults(data, status) {
  319. $('#statuslabel').text(status);
  320. }
  321.  
  322. function saveUser(){
  323. var user = $('#usertb').val();
  324. var password = $('#passwordtb').val();
  325.  
  326. var endpoint = localStorage.getItem("endpoint");
  327.  
  328. var url = endpoint + '/login.ashx?user=' + user + '&password=' + password;
  329.  
  330. $.getJSON(url, function (results) {
  331. if (results.success = true){
  332. localStorage.setItem("user", user);
  333.  
  334. var message = 'Iniciaste sesión como ' + user
  335. setStatLabel("success", message);
  336. $('#configModal').modal('hide');
  337. }else{
  338. setStatLabel("warning", 'Usuario o contraseñas incorrectos');
  339. $('#configModal').modal('hide');
  340. }
  341. }
  342. ).fail(function (jqXHR) {
  343. setStatLabel("danger", "Ocurrió un error al iniciar sesión :()")
  344. });
  345.  
  346. }
  347.  
  348. function setStatLabel(style, value){
  349. $("#statuslabel").removeAttr ("class");
  350.  
  351. switch (style){
  352.  
  353. case "info":
  354. $("#statuslabel").addClass("alert alert-info");
  355. break;
  356.  
  357. case "success":
  358. $("#statuslabel").addClass("alert alert-success");
  359. break;
  360.  
  361. case "danger":
  362. $("#statuslabel").addClass("alert alert-danger");
  363. break;
  364.  
  365. case "warning":
  366. $("#statuslabel").addClass("alert alert-warning");
  367. break;
  368.  
  369. default:
  370. $("#statuslabel").addClass("alert alert-info");
  371. break;
  372. }
  373.  
  374. $("#statuslabel").text(value);
  375. }
  376.  
  377. function generateClaveAddId(){
  378. claveadd_id += 1;
  379.  
  380. }
  381.  
  382. function opendb(){
  383. window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
  384.  
  385.  
  386. window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction;
  387.  
  388. window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange;
  389.  
  390. if (!window.indexedDB) {
  391. window.alert("Your browser doesn't support a stable version of IndexedDB.");
  392. }else{
  393. //window.alert("Listo para conectarse");
  394. }
  395.  
  396.  
  397. var request = window.indexedDB.open("mbptest5", 1);
  398.  
  399. request.onerror = function(event) {
  400. console.log("error: ");
  401. };
  402.  
  403. request.onsuccess = function(event) {
  404. db = request.result;
  405. console.log("success: "+ db);
  406. };
  407.  
  408. request.onupgradeneeded = function(event) {
  409. db = event.target.result;
  410. var prodStore = db.createObjectStore("prods", {keyPath: "ARTICULO"});
  411. var sellStore = db.createObjectStore("ventas", {keyPath: "id", autoIncrement: true});
  412.  
  413.  
  414.  
  415. }
  416. }
  417.  
  418. function syncdb(){
  419.  
  420. setStatLabel("info", "Sincronizando bases de datos");
  421. var endpoint = localStorage.getItem("endpoint");
  422.  
  423. var url = endpoint + "/prods.ashx?take=5000"
  424.  
  425.  
  426. $.getJSON(url, function (results) {
  427. var count = 0;
  428.  
  429. for (count = 0; count < results.length; count++){
  430. var item = results[count];
  431.  
  432. var request = db.transaction('prods', "readwrite")
  433. .objectStore("prods")
  434. .add(item);
  435.  
  436. request.onsuccess = function(event) {
  437. console.log(item.DESCRIP + " agregado");
  438. setStatLabel("info", item.DESCRIP + " agregado");
  439. };
  440.  
  441. request.onerror = function(event) {
  442.  
  443. var request = db.transaction('prods', "readwrite")
  444. .objectStore("prods")
  445. .put(item);
  446.  
  447. console.log(item.DESCRIP + " actualizado");
  448. setStatLabel("info", item.DESCRIP + " actualizado");
  449.  
  450. }
  451.  
  452. } // for
  453.  
  454. //setStatLabel("success", "Bases de datos sincronizadas con exito");
  455.  
  456. }// function
  457. ).fail(function (jqXHR) {
  458. window.alert("Error al descargar información del servidor :()")
  459. }).done(function(){
  460. setStatLabel("success", "Bases de datos sincronizadas con exito");
  461. }).complete(function(){
  462. setStatLabel("success", "Bases de datos sincronizadas con exito");
  463. });
  464.  
  465. } //syncdb
  466.  
  467. //offline functions
  468.  
  469. function searchProdOffline()
  470. {
  471. var key = $('#searchProdText').val();
  472. var data = read(key);
  473. if (data){
  474. $('#prodtb').val(data.DESCRIP);
  475. }
  476. }
  477.  
  478. function addProdOffline(){
  479. var transaction = db.transaction(["prods"]);
  480. var objectStore = transaction.objectStore("prods");
  481. var key = $('#prodtb').val();
  482. var request = objectStore.get(key);
  483.  
  484. request.onerror = function(event) {
  485. setStatLabel("danger", "no se pudo extraer información de la base de datos");
  486. };
  487.  
  488. request.onsuccess = function(event) {
  489. if(request.result) {
  490.  
  491. instanceProdOffline(request.result);
  492.  
  493. }
  494.  
  495. else {
  496. setStatLabel("danger", "no se pudo extraer información de la base de datos");
  497. }
  498. };
  499. }
  500.  
  501. function instanceProdOffline(prod){
  502. var price = parseInt($('#pricetb').val());
  503. //if (results.clavesadd.length > 0)
  504. //{
  505. //selectclaveadd(results.clavesadd, results.ARTICULO);
  506. //}else{
  507. var newP = {
  508. Precio: price,
  509. Cantidad: 1,
  510. Impuesto: 0,
  511. Costo: 0,
  512. Articulo: prod.ARTICULO
  513. };
  514. Partidas.push(newP);
  515.  
  516. total = total + newP.Precio;
  517.  
  518. $("#statuslabel").removeAttr ("class" );
  519. $('#statuslabel').addClass ("alert alert alert-success" );
  520. $('#statuslabel').text ('Articulo agregado, total: ' + total );
  521. $('#prods ul' ).append ('<li class="list-group-item">' + prod.DESCRIP + '</li>' );
  522. //}
  523. }
  524.  
  525. function read(key) {
  526. var transaction = db.transaction(["prods"]);
  527. var objectStore = transaction.objectStore("prods");
  528. var request = objectStore.get(key);
  529.  
  530. request.onerror = function(event) {
  531. setStatLabel("danger", "no se pudo extraer información de la base de datos");
  532. };
  533.  
  534. request.onsuccess = function(event) {
  535. if(request.result) {
  536. //window.alert(request.result);
  537. $('#prodtb').val(request.result.ARTICULO);
  538. }
  539.  
  540. else {
  541. setStatLabel("danger", "no se pudo extraer información de la base de datos");
  542. }
  543. };
  544. }
  545.  
  546. function insertPendingSell(){
  547.  
  548. var d = new Date();
  549. var fecha = d.toLocaleDateString();
  550. var CANTIDAD = $('#qtytb').val();
  551. var cliente = $('#clienttb').val();
  552. var qty = $('#qtytb').val()
  553.  
  554. var newvta = {PRECIO: total, CLIENTE: cliente, USUFECHA: fecha, cantidad: qty, PARTIDAS: Partidas};
  555.  
  556.  
  557.  
  558. var request = db.transaction('ventas', "readwrite")
  559. .objectStore("ventas")
  560. .add(newvta);
  561.  
  562. request.onsuccess = function(event) {
  563. console.log("Venta agregada a pendientes");
  564. setStatLabel("sucess", "Venta agregada a pendientes");
  565. };
  566.  
  567.  
  568. }
  569.  
  570. function getPendingSales(callback){
  571. var trans = db.transaction("ventas", "readwrite");
  572. var store = trans.objectStore("ventas");
  573. var items = [];
  574.  
  575. trans.oncomplete = function(evt) {
  576. callback(items);
  577. };
  578.  
  579. var cursorRequest = store.openCursor();
  580.  
  581. cursorRequest.onerror = function(error) {
  582. console.log(error);
  583. };
  584.  
  585. cursorRequest.onsuccess = function(evt) {
  586. var cursor = evt.target.result;
  587. if (cursor) {
  588. items.push(cursor.value);
  589. cursor.continue();
  590. }
  591. };
  592. }
  593.  
  594. function renderPendingSales(){
  595. getPendingSales(function(items){
  596. var c = 0;
  597. var l = items.length;
  598.  
  599. for (c = 0; c < l; c++){
  600. var item = items[c];
  601. var div = $('<div class="list-group-item"></div>')
  602. var span = '<span>' + "venta: " + item.id + ", importe: " + item.PRECIO + '<span>';
  603. var button = $('<button>Enviar a MyBusiness</button>').click(
  604. function(){
  605. //window.alert(item.id);
  606. terminateSell2(item);
  607. }
  608. )
  609.  
  610. div.append(span);
  611. div.append(button);
  612.  
  613. $('#pendingSalesList ul').append(div);
  614.  
  615. }
  616.  
  617. })
  618. }
  619.  
  620. function terminateSell2(item) {
  621.  
  622. var clientid = $('#clienttb').val();
  623.  
  624. if (clientid.length > 0){
  625. var endpoint = localStorage.getItem("endpoint");
  626.  
  627.  
  628. var ob = { "ClientId": item.CLIENTE, "Partidas": item.PARTIDAS };
  629.  
  630. var data = JSON.stringify(ob);
  631.  
  632. var url = endpoint + '//makesell.ashx';
  633.  
  634. $.ajax({
  635. type: "POST",
  636. data: data,
  637. url: url,
  638. contentType: "application/json",
  639. dataType: 'json'
  640. }).done(function (res) {
  641. console.log("i'm going to remove entry")
  642. removePendingSale(item.id)
  643.  
  644. setStatLabel("success", "Venta hecha")
  645. console.log('res', res);
  646. // Do something with the result :)
  647. });
  648.  
  649. $('#prods ul').empty();
  650. Partidas = [];
  651. total = 0;
  652. }
  653.  
  654. }
  655.  
  656. function removePendingSale(id){
  657. var transaction = db.transaction(["ventas"], "readwrite");
  658.  
  659. transaction.oncomplete = function(event) {
  660.  
  661. };
  662.  
  663. transaction.onerror = function(event) {
  664.  
  665. };
  666.  
  667. // create an object store on the transaction
  668. var objectStore = transaction.objectStore("ventas");
  669.  
  670. // Delete the specified record out of the object store
  671. var objectStoreRequest = objectStore.delete(id);
  672.  
  673. objectStoreRequest.onsuccess = function(event) {
  674. // report the success of our delete operation
  675.  
  676. };
  677. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement