Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.02 KB | None | 0 0
  1. // Generated by CoffeeScript 1.10.0
  2. (function() {
  3. var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
  4.  
  5. define(['jquery', 'jqLib/Shortcuts', 'service/PinpadService', 'app/ProcessSteps', 'app/Utils', 'base/jquery.validationEngine', 'base/jquery.validationEngine-es'], function($, Shortcuts, PinpadService, ProcessSteps, Utils) {
  6. var Extraccion;
  7. Extraccion = (function() {
  8. function Extraccion(factura) {
  9. this.factura = factura;
  10. this.anularExtraccion = bind(this.anularExtraccion, this);
  11. this.confirmarExtraccion = bind(this.confirmarExtraccion, this);
  12. this.continuarDesdeWorkingKey = bind(this.continuarDesdeWorkingKey, this);
  13. this.continuarDesdeValidarTarjeta = bind(this.continuarDesdeValidarTarjeta, this);
  14. this.imprimirTicketExtraccion = bind(this.imprimirTicketExtraccion, this);
  15. this.realizarExtraccion = bind(this.realizarExtraccion, this);
  16. this.validarTarjetaResponse = bind(this.validarTarjetaResponse, this);
  17. this.habilitarContinuar = bind(this.habilitarContinuar, this);
  18. this.continuarExtraccion = bind(this.continuarExtraccion, this);
  19. this.close = bind(this.close, this);
  20. this.leerImporteExtraccion = bind(this.leerImporteExtraccion, this);
  21. this.inicializarCamposRequeridos = bind(this.inicializarCamposRequeridos, this);
  22. this.clear = bind(this.clear, this);
  23. this.onOpen = bind(this.onOpen, this);
  24. this.open = bind(this.open, this);
  25. this.init = bind(this.init, this);
  26. this.init();
  27. }
  28.  
  29. Extraccion.prototype.init = function() {
  30. $("#extraccionDialog").dialog({
  31. position: {
  32. my: "center",
  33. at: "center top",
  34. of: window
  35. },
  36. dialogClass: 'customDialogThemeBig',
  37. modal: true,
  38. height: "auto",
  39. width: 990,
  40. show: false,
  41. autoOpen: false,
  42. open: (function(_this) {
  43. return function(event, ui) {
  44. return _this.onOpen();
  45. };
  46. })(this),
  47. closeOnEscape: true,
  48. close: (function(_this) {
  49. return function() {
  50. _this.clear();
  51. return setTimeout((function() {
  52. return $('#inputBarCode').focus();
  53. }), 500);
  54. };
  55. })(this)
  56. });
  57. return $('#extraccionDialog').load(window.app.baseUrl + '/extraccion', (function(_this) {
  58. return function(data) {
  59. $("#extraccionCancel").click(_this.close);
  60. return _this.steps = ["Chequeando importe a extraer", "Chequeando conexion con Pinpad", "Solicitando autorizacion para uso de pinpad", "Autorizacion concedida. Por favor deslice tarjeta cuando el pinpad lo solicite", "Tarjeta leida correctamente. Validacion en proceso.", "Tarjeta validada. Chequeando si la tarjeta requiere solicitud de PIN", "Continuando con proceso de extraccion", "Proceso de extraccion finalizada. Retire su ticket"];
  61. };
  62. })(this));
  63. };
  64.  
  65. Extraccion.prototype.open = function() {
  66. this.process = new ProcessSteps("progressStepsExtraccion");
  67. this.process.setSteps(this.steps);
  68. $("#extraccion_campos_requeridos").html(this.process.createCamposRequeridos());
  69. return $("#extraccionDialog").dialog("open");
  70. };
  71.  
  72. Extraccion.prototype.onOpen = function() {
  73. var extraKeys;
  74. $("#importeExtraccion").prop('disabled', true);
  75. Shortcuts.backMode();
  76. $("#permitirAnularExraccion").hide();
  77. $("#anularExtraccion").hide();
  78. extraKeys = [13, 27];
  79. this.factura.totalForm.onlyNumbers("#importeExtraccion", extraKeys);
  80. this.pinpad = new PinpadService();
  81. $("#confirmarExtraccion").click(this.confirmarExtraccion);
  82. this.inicializarCamposRequeridos();
  83. $("#importeExtraccion").bind('change', this.leerImporteExtraccion);
  84. Shortcuts.add(13, this.confirmarExtraccion);
  85. this.leerImporteExtraccion();
  86. setTimeout((function() {
  87. return $("#importeExtraccion").prop('disabled', false);
  88. }), 10);
  89. return setTimeout((function() {
  90. return $("#importeExtraccion").select();
  91. }), 10);
  92. };
  93.  
  94. Extraccion.prototype.clear = function() {
  95. return Shortcuts.restore();
  96. };
  97.  
  98. Extraccion.prototype.inicializarCamposRequeridos = function() {
  99. this.process.inicializarCamposRequeridos();
  100. $("#continuarExtraccion").prop('disabled', true);
  101. $('#mensajeErrorExtraccion').html("");
  102. $("#continuarExtraccion").click("");
  103. return Shortcuts.add(13, "");
  104. };
  105.  
  106. Extraccion.prototype.leerImporteExtraccion = function() {
  107. return $("#importeExtraccion").val(Utils.decimalFormat(Utils.parserMonto($('#importeExtraccion').val())));
  108. };
  109.  
  110. Extraccion.prototype.close = function() {
  111. return $("#extraccionDialog").dialog("close");
  112. };
  113.  
  114. Extraccion.prototype.continuarExtraccion = function() {
  115. var continuar;
  116. continuar = true;
  117. $('#mensajeErrorExtraccion').html("");
  118. Shortcuts.add(13, "");
  119. if (this.process.isDniHabilitado()) {
  120. this.dni = this.process.getDniValue();
  121. if (!this.process.validarDni(this.dni)) {
  122. $('#camposRequeridoDni').validationEngine('showPrompt', 'El campo DNI es requerido para continuar.', '', 'bottomLeft', true);
  123. continuar = false;
  124. }
  125. }
  126. if (this.process.isCodSeguridadHabilitado()) {
  127. this.codigoSeguridadTarjeta = this.process.getCodSeguridadValue();
  128. if (this.codigoSeguridadTarjeta.length === 0) {
  129. $('#campoRequeridoCodSeg').validationEngine('showPrompt', 'El campo Codigo de seguridad es requerido para continuar.', '', 'bottomLeft', true);
  130. continuar = false;
  131. }
  132. }
  133. if (this.process.isNumeroTelefonoHabilitado()) {
  134. this.numeroTelefono = this.process.getNumeroTelefonoValue();
  135. if (!this.process.validarTelefono(this.numeroTelefono)) {
  136. $('#campoRequeridoCodSeg').validationEngine('showPrompt', 'El campo numero de telefono es requerido para continuar.', '', 'bottomLeft', true);
  137. continuar = false;
  138. }
  139. }
  140. this.cuenta = this.validarTarjetaData.cuentas[this.process.obtenerIndexCuenta()];
  141. if (continuar) {
  142. return this.realizarExtraccion();
  143. }
  144. };
  145.  
  146. Extraccion.prototype.habilitarContinuar = function() {
  147. $("#continuarExtraccion").prop('disabled', false);
  148. $("#continuarExtraccion").click(this.continuarExtraccion);
  149. return Shortcuts.add(13, this.continuarExtraccion);
  150. };
  151.  
  152. Extraccion.prototype.validarTarjetaResponse = function() {
  153. var continuarOp;
  154. continuarOp = true;
  155. if (this.validarTarjetaData.cuentas.length > 0) {
  156. this.process.inicializarCuentas(this.validarTarjetaData.cuentas);
  157. if (this.validarTarjetaData.cuentas.length > 1) {
  158. this.process.habilitarCuentas();
  159. continuarOp = false;
  160. }
  161. this.dni = "";
  162. this.pin = "";
  163. this.codigoSeguridadTarjeta = "";
  164. if (this.validarTarjetaData.operacion.requiereDNI === true) {
  165. this.process.habilitarDni();
  166. continuarOp = false;
  167. }
  168. if (this.validarTarjetaData.operacion.requiereSeg === true) {
  169. this.process.habilitarCodSeguridad();
  170. continuarOp = false;
  171. }
  172. if (this.validarTarjetaData.operacion.requiereNumeroCelular === true) {
  173. this.process.habilitarNumeroTelefono();
  174. continuarOp = false;
  175. }
  176. if (continuarOp === false) {
  177. this.habilitarContinuar();
  178. }
  179. } else {
  180. $('#mensajeErrorExtraccion').html("No se encontro informacion de cuenta asociado a la tarjeta. No es posible continuar.");
  181. continuarOp = false;
  182. }
  183. return continuarOp;
  184. };
  185.  
  186. Extraccion.prototype.realizarExtraccion = function() {
  187. var continuarOp, mensajeResult, realizarExtraccionResult, wkResponse;
  188. continuarOp = true;
  189. $("#continuarExtraccion").prop('disabled', true);
  190. if (this.validarTarjetaData.operacion.requierePin === true) {
  191. wkResponse = this.factura.company.getWorkingKeyPin(this.pinpad.getSerialPinpad());
  192. }
  193. if (wkResponse.res) {
  194. this.pin = this.pinpad.leerPin(wkResponse.data);
  195. if (this.pin === "") {
  196. $('#mensajeErrorExtraccion').html("Error en lectura de pin. Proceso abortado");
  197. continuarOp = false;
  198. Shortcuts.add(13, this.confirmarExtraccion);
  199. }
  200. } else {
  201. continuarOp = false;
  202. }
  203. if (continuarOp === true) {
  204. $("#continuarExtraccion").click("");
  205. this.process.nextStep();
  206. realizarExtraccionResult = this.factura.company.realizarExtraccion(this.cardInfo, this.totalExtraccion, this.validarTarjetaData.operacion.ticketCantidadCopias, this.validarTarjetaData.operacion.ticketFirma, this.validarTarjetaData.operacion.requiereAut, this.pinpad.getSerialPinpad(), this.cuenta, this.validarTarjetaData.tokenizadoTarjeta, this.codigoSeguridadTarjeta, this.dni, this.pin, this.numeroTelefono);
  207. if (realizarExtraccionResult.res) {
  208. this.extraccionData = JSON.parse(realizarExtraccionResult.data);
  209. mensajeResult = "Extraccion finalizada - Ticket en progreso";
  210. $('#mensajeErrorExtraccion').html("Imprimiendo ticket...Nro Req: " + this.extraccionData.datosOperacion.idRequerimiento);
  211. this.imprimirTicketExtraccion(this.extraccionData);
  212. if (realizarExtraccionResult.montos) {
  213. $('#montoCobrado').html(realizarExtraccionResult.montos.mCobrado);
  214. $('#limite').html(realizarExtraccionResult.montos.mLimit);
  215. $('#disponible').html(realizarExtraccionResult.montos.mDisponible);
  216. }
  217. $("#permitirAnularExraccion").show();
  218. $("#anularExtraccion").show();
  219. $("#camposRequeridosExtraccion").hide();
  220. $("#anularExtraccion").click(this.anularExtraccion);
  221. } else {
  222. $('#mensajeErrorExtraccion').html(realizarExtraccionResult.data);
  223. mensajeResult = "Error en proceso de extraccion. Detalles a continuacion";
  224. Shortcuts.add(13, this.confirmarExtraccion);
  225. }
  226. this.process.updateStep(this.steps.length, mensajeResult);
  227. return this.process.nextStep();
  228. }
  229. };
  230.  
  231. Extraccion.prototype.imprimirTicketExtraccion = function(data) {
  232. var myWindow;
  233. if (data.ticketsFormatted.length > 0) {
  234. myWindow = window.open('', 'TICKET', 'width=300,height=300');
  235. myWindow.document.html = "";
  236. myWindow.document.write(data.ticketsFormatted);
  237. myWindow.print();
  238. myWindow.close();
  239. this.process.updateStep(this.steps.length, "Finalizado");
  240. return this.process.nextStep();
  241. } else {
  242. return $('#mensajeErrorExtraccion').html("Nada para imprimir");
  243. }
  244. };
  245.  
  246. Extraccion.prototype.continuarDesdeValidarTarjeta = function() {
  247. var vtReponse;
  248. vtReponse = this.factura.company.validarTarjeta(this.cardInfo, this.pinpad.getSerialPinpad());
  249. if (vtReponse.res) {
  250. this.validarTarjetaData = JSON.parse(vtReponse.data);
  251. this.process.nextStep();
  252. return setTimeout(((function(_this) {
  253. return function() {
  254. var tarjeta_ok;
  255. tarjeta_ok = _this.validarTarjetaResponse();
  256. if (tarjeta_ok) {
  257. _this.process.nextStep();
  258. return setTimeout((function() {
  259. return _this.realizarExtraccion();
  260. }), 0);
  261. } else {
  262. return $('#mensajeErrorExtraccion').html("El proceso de extraccion requiere completar los campos a continuacion.");
  263. }
  264. };
  265. })(this)), 0);
  266. } else {
  267. $('#mensajeErrorExtraccion').html("Error en proceso de validacion de tarjeta" + vtReponse.data);
  268. return Shortcuts.add(13, this.confirmarExtraccion);
  269. }
  270. };
  271.  
  272. Extraccion.prototype.continuarDesdeWorkingKey = function() {
  273. var wkResponse;
  274. wkResponse = this.factura.company.getWorkingKeyTarjeta(this.pinpad.getSerialPinpad());
  275. if (wkResponse.res) {
  276. this.process.nextStep();
  277. return setTimeout(((function(_this) {
  278. return function() {
  279. _this.cardInfo = _this.pinpad.leerTarjeta(wkResponse.data);
  280. if (_this.cardInfo !== null) {
  281. _this.process.nextStep();
  282. return setTimeout((function() {
  283. return _this.continuarDesdeValidarTarjeta();
  284. }), 0);
  285. } else {
  286. return $('#mensajeErrorExtraccion').html("Error en lectura de tarjeta. Verifique conexion de pinpad");
  287. }
  288. };
  289. })(this)), 0);
  290. } else {
  291. return $('#mensajeErrorExtraccion').html("Error con solicitud de autorizacion para uso de pinpad. " + wkResponse.data);
  292. }
  293. };
  294.  
  295. Extraccion.prototype.confirmarExtraccion = function() {
  296. this.process.resetSteps();
  297. $("#confirmarExtraccion").prop('disabled', true);
  298. $('#importeExtraccion').validationEngine('hideAll');
  299. this.leerImporteExtraccion();
  300. this.inicializarCamposRequeridos();
  301. if (this.totalExtraccion > 0) {
  302. this.process.nextStep();
  303. return setTimeout(((function(_this) {
  304. return function() {
  305. var pinpadSerial;
  306. _this.pinpad.inicializar();
  307. pinpadSerial = _this.pinpad.getSerialPinpad();
  308. if (pinpadSerial !== null && pinpadSerial !== "") {
  309. _this.process.nextStep();
  310. return setTimeout((function() {
  311. return _this.continuarDesdeWorkingKey();
  312. }), 0);
  313. } else {
  314. return $('#mensajeErrorExtraccion').html("Pinpad no conectado");
  315. }
  316. };
  317. })(this)), 0);
  318. } else {
  319. $('#importeExtraccion').validationEngine('showPrompt', 'Ingrese importe a extraer', '', 'bottomLeft', true);
  320. return setTimeout((function() {
  321. return $('#importeExtraccion').validationEngine('hideAll');
  322. }), 5000);
  323. }
  324. };
  325.  
  326. Extraccion.prototype.anularExtraccion = function() {
  327. var anulacionData, extraccionAnulacion;
  328. $("#anularExtraccion").prop('disabled', true);
  329. $('#mensajeErrorExtraccion').html("Anulación en progreso...");
  330. extraccionAnulacion = this.factura.company.anularExtraccion(this.totalExtraccion, this.cardInfo.number, this.validarTarjetaData.tokenizadoTarjeta, this.dni, this.pin, this.codigoSeguridadTarjeta, this.pinpad.getSerialPinpad(), this.extraccionData.datosOperacion.idInterno);
  331. if (extraccionAnulacion.res) {
  332. anulacionData = JSON.parse(extraccionAnulacion.data);
  333. $('#mensajeErrorExtraccion').html("Imprimiendo ticket de anulación");
  334. this.process.nextStep();
  335. this.imprimirTicketExtraccion(anulacionData);
  336. if (extraccionAnulacion.montos) {
  337. $('#montoCobrado').html(extraccionAnulacion.montos.mCobrado);
  338. $('#limite').html(extraccionAnulacion.montos.mLimit);
  339. $('#disponible').html(extraccionAnulacion.montos.mDisponible);
  340. }
  341. return $('#mensajeErrorExtraccion').html("Extracción Anulada!. Revise el ticket en la impresora.");
  342. } else {
  343. return $('#mensajeErrorExtraccion').html(realizarExtraccionResult.data);
  344. }
  345. };
  346.  
  347. return Extraccion;
  348.  
  349. })();
  350. return Extraccion;
  351. });
  352.  
  353. }).call(this);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement