Advertisement
kevin2458

pagarCtrl.js

Jun 30th, 2021
1,414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function () {
  2.     'use strict';
  3.     angular.module('PosRest.pagar').
  4.         controller('pagarController', pagarController);
  5.  
  6.     pagarController.$inject = ['$http', "prodState",'$state','localStorageService','$scope','$filter','toaster','deviceDetector','$interval','$window']
  7.  
  8.     function pagarController($http, prodState, $state, localStorageService,$scope,$filter,toaster,deviceDetector,$interval,$window) {
  9.         var vm = this
  10.  
  11.         //vm.filtrarCartItems = filtrarCartItems;
  12.         vm.LlamadoFuncion = LlamadoFuncion;
  13.         //vm.nexCartPage = nexCartPage;<
  14.         //vm.prevCartPage = prevCartPage;
  15.         vm.select = select;
  16.         vm.borrarCant = borrarCant;
  17.         vm.limpiar = limpiar;
  18.         vm.cantSalir = cantSalir;
  19.         vm.cantListo = cantListo;
  20.         vm.selectCampo = selectCampo;
  21.         vm.listo = listo;
  22.         vm.regresar = regresar;
  23.         vm.mostrarTeclado = mostrarTeclado;
  24.         vm.teclear = teclear;
  25.         vm.borrar = borrar;
  26.         vm.teclListo = teclListo;
  27.         vm.validarCupon = validarCupon;
  28.         vm.aplicaCupon = aplicaCupon;
  29.         vm.validarCertificado = validarCertificado;
  30.         vm.aplicacertificado = aplicacertificado;
  31.         vm.selCampo = selCampo;
  32.         vm.selectMonto = selectMonto;
  33.         vm.borrarCampo = borrarCampo;
  34.         vm.selectPasarela = selectPasarela;
  35.         vm.digitalizar = digitalizar;
  36.         vm.salvarDatosCliente = salvarDatosCliente;
  37.         vm.limpiarDescuento = limpiarDescuento;
  38.         vm.limpiarPago = limpiarPago;
  39.         vm.aplicaDescManual = aplicaDescManual;
  40.         vm.suma = suma;
  41.         vm.igual = igual;
  42.         vm.resta = resta;
  43.         vm.multiplica = multiplica;
  44.         vm.divide = divide;
  45.         vm.reversarCertificados = reversarCertificados;
  46.         vm.validarCargos = validarCargos;
  47.         vm.listaPagos = listaPagos;
  48.         vm.selectLimPago = selectLimPago;
  49.         vm.borrarLimPago = borrarLimPago;
  50.         vm.GetEmpresa = GetEmpresa;
  51.         vm.selectedEmpresa = selectedEmpresa;
  52.         vm.inputchanged = inputchanged;
  53.         vm.calculatarjeta = calculatarjeta;
  54.         vm.pagaCarnet = pagaCarnet;
  55.         vm.snapShot = snapShot;
  56.         vm.cuponElectronico = cuponElectronico;
  57.         vm.setCuponElectronicoProd = setCuponElectronicoProd;
  58.         vm.GenerarlinkDePago = GenerarlinkDePago;
  59.         vm.copiarLink = copiarLink;
  60.         vm.validarCamposVacios = validarCamposVacios;
  61.         vm.setSeleccionRegalia = setSeleccionRegalia;
  62.         vm.PagoTengo = PagoTengo;
  63.         vm.pagoBipBip = pagoBipBip
  64.         vm.getClienteBipBip = getClienteBipBip
  65.         vm.pagarBipBip = pagarBipBip
  66.         vm.sanitizeCodigoClienteBipBip = sanitizeCodigoClienteBipBip
  67.         vm.validateMontoPuntosBips = validateMontoPuntosBips
  68.         vm.setRedimirPuntosBipsLempiras = setRedimirPuntosBipsLempiras
  69.         vm.validarPagoTengo = validarPagoTengo;
  70.         vm.aplicarTENGO = aplicarTENGO;
  71.         vm.redimirCuponElectronico = redimirCuponElectronico
  72.         vm.autorizando = false;
  73.         vm.Orden = [{
  74.             encabezado: {},
  75.             lineas: [],
  76.         }];
  77.         vm.funciones = [];
  78.         vm.funcionesExtras = [];
  79.         vm.Totales = {
  80.             total: 0,
  81.             subtotal: 0,
  82.             impuestos:0,
  83.             descuento:0
  84.         }
  85.         vm.lectura = {
  86.             identidad : "",
  87.             nombre : "",
  88.             nacimiento : "",
  89.             codigoTransaccion : "",
  90.             transaccion : "",
  91.             numOrden : ""
  92.         }
  93.         vm.pagoParams = {
  94.                     numOrden : "",
  95.                     formaspago : "",
  96.                     descuento : "",
  97.                     cambio : "",
  98.         }
  99.         vm.dataCliente = {
  100.             consumidor : "",
  101.             rtn : "",
  102.             empresa : ""
  103.         }
  104.         vm.PagoTarjeta = {
  105.             numtarjeta : "",
  106.             nombre : "",
  107.             vence : "",
  108.             monto : "",
  109.             autorizacion : "",
  110.             banco : ""
  111.         }
  112.         vm.Tarjetas = [];
  113.         vm.TotalPaginasCart =0;
  114.         vm.Pagineo = 5;
  115.         vm.CartNumItems = vm.Pagineo;
  116.         vm.CartActivePage = 1;
  117.         vm.formasPago = [];
  118.         vm.pagos = [];
  119.         vm.monto = "0.00";
  120.         vm.funcionActual = "";
  121.         vm.cambio = 0;
  122.         vm.pagacon="";
  123.         vm.nomostrar = false;
  124.         vm.textLCD="";
  125.         vm.opcionActual = "";
  126.         vm.aplicar = aplicar;
  127.         vm.enviando=false;
  128.         vm.textLCDError = "Use su tarjeta o huella";
  129.         vm.MensajeError = false;
  130.         vm.enviando = false;
  131.         vm.primero = false;
  132.         vm.impuestos = [];
  133.         vm.descuentoAplicado = "0.00"
  134.         vm.requiereAuth = false;
  135.         vm.cuponingresado = "";
  136.         vm.giftcardIngresado = "";
  137.         vm.ordenesDeCocina = "";
  138.         vm.cuponvalido = "";
  139.         vm.impuestosAplicados = [];
  140.         vm.pasarelas = [];
  141.         vm.formas = [];
  142.         vm.cargosTodos = [];
  143.         vm.cargos = [];
  144.         vm.txtTarjeta = "";
  145.         vm.txtVence = "";
  146.         vm.txtAutorizacion = "";
  147.         vm.txtNombre = "";
  148.         vm.txtMontoTarjeta = "";
  149.         vm.txtMontoImpuesto = "";
  150.         vm.selectedPasarela = "";
  151.         vm.pagandoExacto = false;
  152.         vm.beneficios = "";
  153.         vm.mostrarlogo = true;
  154.         vm.datosMesa ="";
  155.         vm.certificados = "";
  156.         vm.giftcards = "";
  157.         vm.esMovil=deviceDetector.isMobile();
  158.         vm.descuentoAPlicadoCodigo = "";
  159.         vm.totalesTemporal = {
  160.             total : 0,
  161.             subtotal : 0,
  162.             descuentoAplicado : 0,
  163.         }
  164.         vm.certificadosAplicados = [];
  165.         vm.giftcardsAplicados = [];
  166.         vm.lecturaTarjeta = "";
  167.         vm.dataIngresada = "";
  168.         vm.anio = "";
  169.         vm.mes = "";
  170.         vm.dia = "";
  171.         vm.esSeparacion = "";
  172.         vm.tituloRedencion = ""
  173.         vm.esCertificado = false;
  174.         vm.esGiftcard = false;
  175.         vm.descuentosAplicados = [];
  176.         vm.currentLimPago = "";
  177.         vm.esExcento = "";
  178.         vm.encontradoCliente = false;
  179.         vm.intervalPromise = "";
  180.         vm.video="";
  181.         vm.carnet = "";
  182.         vm.pais = ""
  183.         vm.linkDePago = "";
  184.         vm.correo = "";
  185.         vm.constraint = {
  186.             audio: false,
  187.             video: true
  188.         };
  189.         vm.esCuponElectronico = false;
  190.         vm.cuponelectronicoProds=[];
  191.         vm.validandocupon = false;
  192.         vm.seteandoproductocupon = false;
  193.         vm.descuentoForm = "";
  194.         vm.pagoTengoRes = "";
  195.         vm.tengoPagoMonto = "";
  196.         vm.qrTengo = "";
  197.         vm.validandopago = false;
  198.         vm.configuraciones              = []
  199.         vm.cuponElectronicoCampaña      = []
  200.         vm.cuponesElectronicosAgregados = []
  201.         vm.cuponesElectronicosAplicados = []
  202.  
  203.         vm.loadingPagoBipBip        = false
  204.         vm.codigoClienteBipBip      = ''
  205.         vm.clienteBipBip            = {}
  206.         vm.puntosBips               = 0
  207.         vm.montoPuntosBips          = ''
  208.         vm.redimirPuntosBipsLempiras = false
  209.  
  210.         activate();
  211.  
  212.         $.connection.hub.stop()
  213.         $.connection.ordenHub.client.ordenActualizada
  214.             = $.connection.ordenHub.client.ordenCreada
  215.             = $.connection.ordenHub.client.ordenFacturada
  216.             = () => { }
  217.  
  218.         function activate() {
  219.           vm.esCuponElectronico = false;
  220.           if (prodState.dataCliente) {
  221.               vm.dataCliente = prodState.dataCliente;
  222.           }
  223.  
  224.             loadConfiguraciones()
  225.             loadCuponElectronicoCampaña()
  226.  
  227.             getFunciones(8);
  228.             getFunciones(9);
  229.             vm.pais = prodState.Pais;
  230.             var res = prodState.getSeleccionMesaAsiento();
  231.             vm.datosMesa = res;
  232.             if(res.esSeparacion != "" && res.esSeparacion != undefined){
  233.                 vm.esSeparacion = res.esSeparacion.anterior;
  234.             }
  235.             $scope.$watch('vm.txtMontoTarjeta',function() {
  236.               calculatarjeta();
  237.             },true);
  238.             $scope.$on('$viewContentLoaded', function(event,toState,toParams,fromState,fromParams){
  239.                 if(vm.focus){
  240.                     prodState.setFocus(vm.focus);
  241.                     vm.focus="";
  242.                 }
  243.             });
  244.             $scope.$watch('vm.lecturaTarjeta', function () {
  245.                 parsearTarjeta();
  246.             },true);
  247.             $scope.$watch('vm.dataIngresada', function (){
  248.                 parsearIdentidad();
  249.             },true);
  250.             $scope.$on('$viewContentLoaded', function(event,toState,toParams,fromState,fromParams){
  251.                 if(vm.focus){
  252.                     prodState.setFocus(vm.focus);
  253.                     vm.focus="";
  254.                 }
  255.             })
  256.             vm.Usuario = prodState.Usuario;
  257.             var confCajero = prodState.confCajero;
  258.             prodState.getTurnosCaja(vm.Usuario.usuario[0].id).then(function(data){
  259.                 if(data.length == 0 && vm.Usuario.usuario[0].puedeCobrar == "S"){
  260.                   toaster.pop('error', "ATENCION", "ERROR EN TURNO, INGRESO DE NUEVO!");
  261.                   setTimeout(function(){
  262.                       Salir();
  263.                   },5000);
  264.                 }else{
  265.                   if(vm.Usuario.usuario[0].puedeCobrar == "S")
  266.                     prodState.confCajero = {codigoCaja : data[0].cajas,codigoTurno : data[0].turnos};
  267.                   getFormasPago().then(function (){
  268.                     if (res.NumOrden){
  269.                           getOrden(res.NumOrden).then(function(){
  270.                               //calcularTotales();
  271.                                 getTarjetas(res.NumOrden).then(function (data) {
  272.                                   if (data.tarjetas.length > 0) {
  273.                                       vm.Tarjetas = data.tarjetas;
  274.                                       var total = 0;
  275.                                       var dev = 0;
  276.                                       angular.forEach(data.tarjetas, function (m, r) {
  277.                                           if (m.aprobada == "S" && m.anulada != "S") {
  278.                                               total = total + parseFloat(m.monto);
  279.                                               dev = dev + parseFloat(m.devolucion)
  280.                                           }
  281.                                       })
  282.                                       vm.pagos[2].valor = total;
  283.                                       calcularCambio();
  284.                                   }
  285.                                   prodState.MesaAsiento.Zona = "-2";
  286.                                   prodState.MesaAsiento.Mesa = { codigo_Mesa: vm.Orden[0].encabezado.codigo_Mesa };
  287.                                   prodState.MesaAsiento.Asiento = { asiento: { codigo_SubMesa: vm.Orden[0].encabezado.codigo_Asiento } };
  288.                                   vm.TotalPaginasCart = Math.ceil($filter('filter')(vm.Orden[0].lineas, vm.OrdenFilter).length / vm.Pagineo);
  289.                                   console.log("Orden Procesada")
  290.                                   vm.validarCargos();
  291.                                   vm.constraint = {
  292.                                     audio: false,
  293.                                     video: true
  294.                                   };
  295.  
  296.                                 });
  297.                                 getRegalias(res.NumOrden).then(function(data){
  298.                                     if(data.data.resultado == "OK"){
  299.                                         vm.regaliaSeleccion = data.data.detalle;
  300.                                         $state.transitionTo("pagar.regaliasdet");
  301.                                     }
  302.                                 })
  303.                           }).catch(function(e){
  304.                               $state.transitionTo("mesas.usuario")
  305.                           })
  306.                       }else{
  307.                           vm.Orden =[{
  308.                               encabezado: {},
  309.                               lineas: [],
  310.                           }];
  311.                       }
  312.                   });
  313.                 }
  314.             });
  315.  
  316.             const cuponesElectronicosAplicados = localStorageService.get('cuponesElectronicosAplicados')
  317.  
  318.             if (!jQuery.isEmptyObject(cuponesElectronicosAplicados))
  319.                 vm.cuponesElectronicosAplicados = cuponesElectronicosAplicados
  320.         }
  321.  
  322.         function handleSuccess(stream) {
  323.             var videoTracks = stream.getVideoTracks();
  324.             console.log('Using video device: ' + videoTracks[0].label);
  325.             stream.oninactive = function () {
  326.                 console.log('Stream inactive');
  327.             };
  328.             window.stream = stream; // make variable available to browser console
  329.             vm.video.srcObject = stream;
  330.         }
  331.  
  332.         function getTarjetas(numorden) {
  333.             return prodState.getTarjetas(numorden).then(function (data) {
  334.                 return data.data;
  335.             });
  336.         }
  337.  
  338.         function LlamadoFuncion(func){
  339.             if(vm.pagos[2].valor <= 0){
  340.                 resetDescuentoFiscal();
  341.             }
  342.             vm.selectedCampo = "";
  343.             vm.funcionActual = func;
  344.             eval(func.nombre_Funcion+"()");
  345.         }
  346.  
  347.         function getFunciones(seccion){
  348.             return prodState.getFunciones(seccion).then(function (data){
  349.                 if(seccion==8){
  350.                     var num = 12;
  351.                     if(vm.esMovil){
  352.                         num = 4;
  353.                     }
  354.                     if(data.length<num){
  355.                         for (var i = data.length+1; i <=num; i++) {
  356.                             if(vm.esMovil){
  357.                                 data.push({orden:99});
  358.                             }else{
  359.                                 data.push({orden:i});
  360.                             }
  361.                         }
  362.                     }
  363.                     vm.funciones = data;
  364.                 }
  365.                 else
  366.                     vm.funcionesExtras = data;
  367.                 return data;
  368.             })
  369.         }
  370.  
  371.         function getFormasPago(){
  372.             return prodState.getFormasPago().then(function(data){
  373.                 vm.formasPago = data.formas;
  374.                 vm.impuestos = data.impuestos;
  375.                 vm.pagos =[];
  376.                 vm.impuestosAplicados = [];
  377.                 vm.cargosTodos = data.cargos;
  378.                 angular.forEach(data.impuestos, function(r,k){
  379.                     vm.impuestosAplicados[r.codigo_Impuesto] = {valor:0,esDescuento : r.esDescuento};
  380.                 });
  381.                 angular.forEach(data.formas, function (row,key){
  382.                     vm.pagos[row.codigo_Pago] = {valor:0 , codigoPago : row.codigo_Pago};
  383.                 });
  384.             })
  385.         }
  386.  
  387.         function getOrden(numorden){
  388.             return prodState.getOrden(numorden).then(function (data){
  389.                     prodState.getPago(numorden).then(function (data){
  390.  
  391.                     });
  392.                     vm.Orden[0] = data;
  393.                     vm.Orden[0].encabezado.total == parseFloat(vm.Orden[0].encabezado.total).toFixed(2);
  394.                     vm.cambio = parseFloat(vm.Orden[0].encabezado.grantotal * -parseFloat("1.00")).toFixed(2);
  395.                     if(vm.Orden[0].encabezado.cliente != null){
  396.                         if(vm.Orden[0].encabezado.cliente.length > 0){
  397.                             vm.dataCliente.consumidor = vm.Orden[0].encabezado.cliente;
  398.                         }
  399.                     }
  400.                     if(data.encabezado.impuesto1 != null){
  401.                         vm.impuestosAplicados[1] = {valor : data.encabezado.impuesto1,esDescuento:"N"};
  402.                     }
  403.                     if(data.encabezado.impuesto2 != null){
  404.                         vm.impuestosAplicados[2] = {valor : data.encabezado.impuesto2,esDescuento:"N"};
  405.                     }
  406.                     return data;
  407.             })
  408.         }
  409.  
  410.         function resetDescuentoFiscal(){
  411.             angular.forEach(vm.impuestos, function(im,l){
  412.                 if(im.esDescuento == "S"){
  413.                     vm.Orden[0].encabezado.total = vm.Orden[0].encabezado.total + vm.impuestosAplicados[im.codigo_Impuesto].valor;
  414.                     vm.impuestosAplicados[im.codigo_Impuesto].valor = 0;
  415.                 }
  416.             })
  417.             calcularCambio();
  418.         }
  419.  
  420.         /** FUNCIONES METHODOS DE PAGO */
  421.         function pagaEfec(){
  422.             if(vm.pagos[2].valor <= 0){
  423.                 resetDescuentoFiscal();
  424.             }
  425.             vm.primero = true;
  426.             var monto  = 0;
  427.             angular.forEach(vm.pagos, function (row,key){
  428.                 if(vm.funcionActual.funcionPago == row.codigoPago)
  429.                     if(row.valor > 0){
  430.                         monto = row.valor;
  431.                     }
  432.             });
  433.             if(monto > 0){
  434.                 vm.monto = monto;
  435.             }else{
  436.                 vm.monto = "0.00";
  437.             }
  438.             $state.transitionTo("pagar.efectivo");
  439.         }
  440.  
  441.         function pagaCarnet(){
  442.             $state.transitionTo("pagar.descuentocaptura");
  443.             vm.intervalPromise = $interval(function(){
  444.               vm.video = $window.document.getElementById('cam');
  445.               if(vm.video != null || vm.video != "" || vm.video != undefined){
  446.                 $interval.cancel(vm.intervalPromise);
  447.                 navigator.mediaDevices.getUserMedia(vm.constraint).then(handleSuccess);
  448.               }
  449.               console.log(vm.video);
  450.             },1000);
  451.         }
  452.  
  453.  
  454.  
  455.         function snapShot(){
  456.             vm.video = $window.document.getElementById('cam');
  457.             vm.canvas = $window.document.getElementById('imagen');
  458.             vm.canvas.getContext('2d').drawImage(vm.video,0,0,vm.canvas.width,vm.canvas.height);
  459.             vm.carnet=vm.canvas.toDataURL("image/png");
  460.         }
  461.  
  462.         function calculatarjeta(){
  463.           var impuestoDescuento = 0;
  464.             angular.forEach(vm.impuestos, function(imp,key){
  465.                 if(imp.esDescuento == "S" && vm.selectedPasarela.manejaDevolucion == "N"){
  466.                     if(vm.impuestosAplicados[imp.codigo_Impuesto].valor == 0){
  467.                         vm.impuestosAplicados[imp.codigo_Impuesto].valor = (imp.porcentaje_Impuesto/100) * Math.abs((vm.cambio/1.15) - vm.cambio)
  468.                         vm.Orden[0].encabezado.total = vm.Orden[0].encabezado.total - vm.impuestosAplicados[imp.codigo_Impuesto].valor;
  469.                         impuestoDescuento = vm.impuestosAplicados[imp.codigo_Impuesto].valor;
  470.                         calcularCambio();
  471.                     }
  472.                 }
  473.             });
  474.             if(vm.cambio < 0){
  475.               if(vm.txtMontoTarjeta != parseFloat(Math.abs(vm.cambio)).toFixed(2)){
  476.  
  477.               }else{
  478.                 vm.txtMontoTarjeta = parseFloat(Math.abs(vm.cambio)).toFixed(2);
  479.               }
  480.                 if (vm.txtMontoTarjeta < vm.Orden[0].encabezado.total) {
  481.                     vm.txtMontoImpuesto = parseFloat(Math.abs((vm.txtMontoTarjeta/vm.Orden[0].encabezado.total) * parseFloat(vm.Orden[0].encabezado.impuestos) - parseFloat(impuestoDescuento))).toFixed(2);
  482.                 }else{
  483.                   vm.txtMontoImpuesto = vm.Orden[0].encabezado.impuestos;
  484.                 }
  485.  
  486.             }
  487.         }
  488.  
  489.         function pagaTarj(){
  490.             vm.lecturaTarjeta = "";
  491.             vm.txtTarjeta = "";
  492.             vm.txtVence = "";
  493.             vm.txtNombre = "";
  494.             vm.txtAutorizacion = "";
  495.             if(vm.cambio < 0){
  496.                 prodState.getBancos().then(function(data){
  497.                     vm.pasarelas = data;
  498.                     angular.forEach(data, function(r,w){
  499.                         if(r.esDefault == "S"){
  500.                             vm.selectedPasarela = r;
  501.                         }
  502.                     })
  503.                 });
  504.                 var impuestoDescuento = 0;
  505.                 angular.forEach(vm.impuestos, function(imp,key){
  506.                     if(imp.esDescuento == "S" && vm.selectedPasarela.manejaDevolucion == "N"){
  507.                         if(vm.impuestosAplicados[imp.codigo_Impuesto].valor == 0){
  508.                             vm.impuestosAplicados[imp.codigo_Impuesto].valor = (imp.porcentaje_Impuesto/100) * Math.abs((vm.cambio/1.15) - vm.cambio)
  509.                             vm.Orden[0].encabezado.total = vm.Orden[0].encabezado.total - vm.impuestosAplicados[imp.codigo_Impuesto].valor;
  510.                             impuestoDescuento = vm.impuestosAplicados[imp.codigo_Impuesto].valor;
  511.                             calcularCambio();
  512.                         }
  513.                     }
  514.                 });
  515.                 if(vm.cambio < 0){
  516.                     vm.txtMontoTarjeta = parseFloat(Math.abs(vm.cambio)).toFixed(2);
  517.                     if (vm.txtMontoTarjeta < vm.Orden[0].encabezado.total) {
  518.                         vm.txtMontoImpuesto = parseFloat(Math.abs((vm.Orden[0].encabezado.total/vm.txtMontoTarjeta) * parseFloat(vm.Orden[0].encabezado.impuestos) - parseFloat(impuestoDescuento))).toFixed(2);
  519.                     }else{
  520.                       vm.txtMontoImpuesto = vm.Orden[0].encabezado.impuestos;
  521.                     }
  522.  
  523.                 }
  524.                 $state.transitionTo("pagar.tarjeta");
  525.                 //prodState.setFocus("lectura");
  526.                 vm.focus="lectura";
  527.             }else{
  528.                 vm.mostrarlogo = true;
  529.                 $state.transitionTo("pagar");
  530.             }
  531.         }
  532.  
  533.         function pagarExac(){
  534.             vm.mostrarlogo=false;
  535.             if(vm.pagos[2].valor <= 0){
  536.                 resetDescuentoFiscal();
  537.             }
  538.             vm.pagandoExacto = true;
  539.             vm.monto=parseFloat(vm.Orden[0].encabezado.total).toFixed(2);
  540.             vm.nomostrar = true;
  541.             vm.Orden[0].encabezado.cambio = vm.cambio;
  542.             vm.pagos[vm.funcionActual.funcionPago].valor =  parseFloat(vm.pagos[vm.funcionActual.funcionPago].valor) + parseFloat(Math.abs(vm.cambio));
  543.             calcularCambio();
  544.             finPagar();
  545.         }
  546.  
  547.         function paga1000(){
  548.             vm.mostrarlogo=true;
  549.             if(vm.pagos[2].valor <= 0){
  550.                 resetDescuentoFiscal();
  551.             }
  552.             vm.nomostrar = true;
  553.             vm.monto = "1000.00";
  554.             vm.pagos[vm.funcionActual.funcionPago].valor = vm.monto;
  555.             calcularCambio();
  556.             vm.Orden[0].encabezado.cambio = vm.cambio;
  557.             $state.transitionTo("pagar");
  558.         }
  559.  
  560.         function paga500(){
  561.             if(vm.pagos[2].valor <= 0){
  562.                 resetDescuentoFiscal();
  563.             }
  564.             vm.nomostrar = true;
  565.             vm.monto = "500.00";
  566.             vm.pagos[vm.funcionActual.funcionPago].valor = vm.monto;
  567.             calcularCambio();
  568.             vm.Orden[0].encabezado.cambio = vm.cambio;
  569.             vm.mostrarlogo=true;
  570.             $state.transitionTo("pagar");
  571.         }
  572.  
  573.         function paga1500(){
  574.             if(vm.pagos[2].valor <= 0){
  575.                 resetDescuentoFiscal();
  576.             }
  577.             vm.nomostrar = true;
  578.             vm.monto = "1500.00";
  579.             vm.pagos[vm.funcionActual.funcionPago].valor = vm.monto;
  580.             calcularCambio();
  581.             vm.Orden[0].encabezado.cambio = vm.cambio;
  582.             vm.mostrarlogo=true;
  583.             $state.transitionTo("pagar");
  584.         }
  585.  
  586.         function paga10() {
  587.             vm.mostrarlogo = true;
  588.             if (vm.pagos[2].valor <= 0) {
  589.                 resetDescuentoFiscal();
  590.             }
  591.             vm.nomostrar = true;
  592.             vm.monto = "10.00";
  593.             vm.pagos[vm.funcionActual.funcionPago].valor = vm.monto;
  594.             calcularCambio();
  595.             vm.Orden[0].encabezado.cambio = vm.cambio;
  596.             $state.transitionTo("pagar");
  597.         }
  598.  
  599.         function paga15() {
  600.             vm.mostrarlogo = true;
  601.             if (vm.pagos[2].valor <= 0) {
  602.                 resetDescuentoFiscal();
  603.             }
  604.             vm.nomostrar = true;
  605.             vm.monto = "15.00";
  606.             vm.pagos[vm.funcionActual.funcionPago].valor = vm.monto;
  607.             calcularCambio();
  608.             vm.Orden[0].encabezado.cambio = vm.cambio;
  609.             $state.transitionTo("pagar");
  610.         }
  611.  
  612.         function paga20() {
  613.             vm.mostrarlogo = true;
  614.             if (vm.pagos[2].valor <= 0) {
  615.                 resetDescuentoFiscal();
  616.             }
  617.             vm.nomostrar = true;
  618.             vm.monto = "20.00";
  619.             vm.pagos[vm.funcionActual.funcionPago].valor = vm.monto;
  620.             calcularCambio();
  621.             vm.Orden[0].encabezado.cambio = vm.cambio;
  622.             $state.transitionTo("pagar");
  623.         }
  624.  
  625.         function paga25() {
  626.             vm.mostrarlogo = true;
  627.             if (vm.pagos[2].valor <= 0) {
  628.                 resetDescuentoFiscal();
  629.             }
  630.             vm.nomostrar = true;
  631.             vm.monto = "25.00";
  632.             vm.pagos[vm.funcionActual.funcionPago].valor = vm.monto;
  633.             calcularCambio();
  634.             vm.Orden[0].encabezado.cambio = vm.cambio;
  635.             $state.transitionTo("pagar");
  636.         }
  637.  
  638.         function paga50() {
  639.             vm.mostrarlogo = true;
  640.             if (vm.pagos[2].valor <= 0) {
  641.                 resetDescuentoFiscal();
  642.             }
  643.             vm.nomostrar = true;
  644.             vm.monto = "50.00";
  645.             vm.pagos[vm.funcionActual.funcionPago].valor = vm.monto;
  646.             calcularCambio();
  647.             vm.Orden[0].encabezado.cambio = vm.cambio;
  648.             $state.transitionTo("pagar");
  649.         }
  650.  
  651.         function PagoTengo() {
  652.             vm.pagoTengoRes = "";
  653.             vm.tengoPagoMonto = "";
  654.             vm.qrTengo = "";
  655.             $state.transitionTo("pagar.pagoTengo");
  656.         }
  657.  
  658.         function pagoBipBip() {
  659.             resetPagoBipBip()
  660.             $state.transitionTo('pagar.pagoBipBip')
  661.         }
  662.  
  663.         function getClienteBipBip() {
  664.             vm.loadingPagoBipBip = true
  665.  
  666.             prodState.getClienteBipBip(vm.codigoClienteBipBip).then(response => {
  667.                 if (response.status == 200) {
  668.                     vm.clienteBipBip = response.data
  669.                     vm.puntosBips    = vm.clienteBipBip.puntosDisponibles
  670.                     validateMontoPuntosBips()
  671.                 } else vm.clienteBipBip.error = response.data.response
  672.                     || response.data.message
  673.                     || 'No se pudo conectar al servicio'
  674.  
  675.                 vm.loadingPagoBipBip = false
  676.             })
  677.         }
  678.  
  679.         function setRedimirPuntosBipsLempiras(value) {
  680.             if (vm.redimirPuntosBipsLempiras == value) return
  681.  
  682.             vm.redimirPuntosBipsLempiras = value
  683.  
  684.             if (vm.redimirPuntosBipsLempiras)
  685.                 vm.montoPuntosBips *= vm.clienteBipBip.factor
  686.             else
  687.                 vm.montoPuntosBips /= vm.clienteBipBip.factor
  688.  
  689.             validateMontoPuntosBips()
  690.         }
  691.  
  692.         function pagarBipBip() {
  693.             delete vm.clienteBipBip.error
  694.  
  695.             vm.loadingPagoBipBip = true
  696.  
  697.             prodState.postPagoBipBip(
  698.                 vm.codigoClienteBipBip,
  699.                 vm.clienteBipBip.nombre,
  700.                 vm.Orden[0].encabezado.grantotal,
  701.                 vm.Orden[0].encabezado.numOrden,
  702.                 vm.puntosBips
  703.             ).then(response => {
  704.                 if (response.status == 200) {
  705.                     notifyOrdenFacturadaBipBip()
  706.                     $state.transitionTo('pagar')
  707.                 } else vm.clienteBipBip.error = response.data.response
  708.                     || response.data.message
  709.                     || 'No se pudo conectar al servicio'
  710.  
  711.                 vm.loadingPagoBipBip = false
  712.             })
  713.         }
  714.  
  715.         function notifyOrdenFacturadaBipBip() {
  716.             if (!vm.configuraciones.habilitarNotificaciones) {
  717.                 toaster.pop('warning', 'LAS NOTIFICACIONES NO ESTAN HABILITADAS')
  718.                 return
  719.             }
  720.  
  721.             $.connection.hub.disconnected(() => {
  722.                 if (!$.connection.hub.lastError) return
  723.                 console.error(`Connection hub disconnected: ${$.connection.hub.lastError}`)
  724.                 toaster.pop('error', 'LA CONEXION DE EVENTOS SE HA DESCONECTADO')
  725.             })
  726.  
  727.             $.connection.ordenHub.client.ordenActualizada = (orden) => {
  728.                 console.log(`Connection ordenHub received: ${JSON.stringify(orden)}`)
  729.  
  730.                 const encabezado = vm.Orden[0].encabezado,
  731.                       numOrden   = encabezado.numOrden
  732.  
  733.                 if (typeof orden !== 'object' || orden.NumOrden != numOrden) return
  734.  
  735.                 const valor = (valor) => valor || 0
  736.  
  737.                 encabezado.subtotal = valor(orden.SubTotal)
  738.  
  739.                 if (vm.impuestos.some(element => element.codigo_Impuesto == 1))
  740.                     vm.impuestosAplicados[1].valor = valor(orden.Impuesto1)
  741.                 if (vm.impuestos.some(element => element.codigo_Impuesto == 2))
  742.                     vm.impuestosAplicados[2].valor = valor(orden.Impuesto2)
  743.  
  744.                 encabezado.impuestos = valor(orden.ImptVta)
  745.  
  746.                 if (vm.impuestos.some(element => element.codigo_Impuesto == 3))
  747.                     vm.impuestosAplicados[3].valor = valor(orden.Descuento_Fiscal)
  748.                 if (vm.impuestos.some(element => element.codigo_Impuesto == 4))
  749.                     vm.impuestosAplicados[4].valor = valor(orden.Descuento)
  750.  
  751.                 encabezado.grantotal = valor(orden.GranTotal)
  752.  
  753.                 vm.pagos[1].valor = valor(orden.MontoEfectivo)
  754.                 vm.pagos[2].valor = valor(orden.MontoTarjeta)
  755.                 vm.pagos[3].valor = valor(orden.MontoFormaPago3)
  756.                 vm.pagos[4].valor = valor(orden.MontoFormaPago4)
  757.                 vm.pagos[5].valor = valor(orden.MontoFormaPago5)
  758.                 vm.pagos[6].valor = valor(orden.MontoFormaPago6)
  759.                 vm.pagos[7].valor = valor(orden.MontoFormaPago7)
  760.  
  761.                 vm.cambio = parseFloat(valor(vm.monto)) - (encabezado.grantotal - vm.pagos
  762.                     .map(e => e.valor).reduce((a, b) => a + b, 0))
  763.  
  764.                 toaster.pop({
  765.                     type: 'success',
  766.                     title: `PAGO RECIBIDO DESDE BIP BIP POR ${vm.clienteBipBip.nombre.toUpperCase()}`,
  767.                     tapToDismiss: false,
  768.                     timeout: 0
  769.                 })
  770.             }
  771.  
  772.             $.connection.hub.start()
  773.                 .done(() => {
  774.                     console.log('Connection hub started successfully')
  775.                     toaster.pop({
  776.                         type: 'info',
  777.                         title: `SOLICITUD DE PAGO ENVIADO A ${vm.clienteBipBip.nombre.toUpperCase()} EN BIP BIP`,
  778.                         tapToDismiss: false,
  779.                         timeout: 0
  780.                     })
  781.                 })
  782.                 .fail(() => {
  783.                     console.error('Connection hub failed to start')
  784.                     toaster.pop('error', 'ERROR AL INICIAR LA CONEXION DE EVENTOS')
  785.                 })
  786.         }
  787.  
  788.         function resetPagoBipBip() {
  789.             vm.loadingPagoBipBip         = false
  790.             vm.codigoClienteBipBip       = ''
  791.             vm.clienteBipBip             = {}
  792.             vm.puntosBips                = 0
  793.             vm.montoPuntosBips           = ''
  794.             vm.redimirPuntosBipsLempiras = false
  795.         }
  796.  
  797.         function sanitizeCodigoClienteBipBip() {
  798.             if (vm.codigoClienteBipBip)
  799.                 vm.codigoClienteBipBip = filterStringNumbers(vm.codigoClienteBipBip)
  800.             else
  801.                 resetPagoBipBip()
  802.         }
  803.  
  804.         function validateMontoPuntosBips() {
  805.             if (typeof vm.montoPuntosBips === 'string')
  806.                 vm.montoPuntosBips = parseFloat(filterStringNumbers(vm.montoPuntosBips))
  807.             if (!vm.montoPuntosBips)
  808.                 vm.montoPuntosBips = vm.clienteBipBip.puntosDisponibles
  809.  
  810.             vm.puntosBips = vm.redimirPuntosBipsLempiras
  811.                 ? (vm.montoPuntosBips / vm.clienteBipBip.factor)
  812.                 : vm.montoPuntosBips
  813.  
  814.             if (vm.puntosBips > vm.clienteBipBip.puntosDisponibles) {
  815.                 vm.puntosBips      = vm.clienteBipBip.puntosDisponibles
  816.                 vm.montoPuntosBips = vm.redimirPuntosBipsLempiras
  817.                     ? (vm.puntosBips * vm.clienteBipBip.factor) : vm.puntosBips
  818.             }
  819.  
  820.             const totalPuntosBips = vm.Orden[0].encabezado.grantotal / vm.clienteBipBip.factor
  821.  
  822.             if (vm.puntosBips <= totalPuntosBips) return
  823.  
  824.             vm.puntosBips      = totalPuntosBips
  825.             vm.montoPuntosBips = vm.redimirPuntosBipsLempiras
  826.                 ? vm.Orden[0].encabezado.grantotal : vm.puntosBips
  827.         }
  828.  
  829.         function cupones(){
  830.  
  831.             if(vm.pagos[2].valor <= 0){
  832.                 resetDescuentoFiscal();
  833.             }
  834.             if(vm.cambio < 0){
  835.                 vm.mostrarlogo=false;
  836.                 getCupones().then(function(data){
  837.                     vm.esCuponElectronico = false;
  838.                     vm.cupones = data;
  839.                     vm.opciones = vm.cupones;
  840.                     $state.transitionTo("pagar.cupones");
  841.                 })
  842.             }
  843.         }
  844.  
  845.         function descuentos(){
  846.  
  847.             if(vm.pagos[2].valor <= 0){
  848.                 resetDescuentoFiscal();
  849.             }
  850.             if(vm.cambio < 0){
  851.                 vm.mostrarlogo=false;
  852.                 getDescuentos().then(function(data){
  853.                     vm.descuentos = data;
  854.                     vm.opciones = vm.descuentos;
  855.                     $state.transitionTo("pagar.descuentos");
  856.                 })
  857.             }
  858.         }
  859.  
  860.         function certificados(){
  861.             vm.mostrarlogo=true;
  862.             if(vm.pagos[2].valor <= 0){
  863.                 resetDescuentoFiscal();
  864.             }
  865.             if(vm.cambio < 0){
  866.                 vm.certificados = [];
  867.                 vm.tituloRedencion = "CERTIFICADO"
  868.                 vm.esCertificado = true;
  869.                 $state.transitionTo("pagar.certificados")
  870.  
  871.                 const certificadosAplicados = localStorageService.get('certificadosAplicados')
  872.  
  873.                 if (certificadosAplicados) {
  874.                     const codigoMesa              = prodState.getSeleccionMesaAsiento().Mesa.codigo_Mesa,
  875.                           certificadosDisponibles = certificadosAplicados
  876.                               .filter(element => element.codigoMesa == codigoMesa)
  877.                               .filter(({ correlativo }) => !vm.certificadosAplicados
  878.                                   .some(element => element.correlativo == correlativo))
  879.  
  880.                     if (certificadosDisponibles) {
  881.                         vm.ordenesDeCocina = vm.certificadoIngresado = certificadosDisponibles[0].correlativo
  882.                         vm.focus = 'validar-certificado'
  883.                         validarCertificado()
  884.                         return
  885.                     }
  886.                 }
  887.  
  888.                 vm.certificadoIngresado = ''
  889.  
  890.                 vm.focus = 'exampleInputEmail1'
  891.             }
  892.             /*
  893.             getCertificados().then(function(data){
  894.                 vm.certificados = data;
  895.                 vm.opciones = vm.certificados;
  896.             })
  897.             */
  898.         }
  899.  
  900.         function giftcards(){
  901.             vm.mostrarlogo=true;
  902.             if(vm.pagos[2].valor <= 0){
  903.                 resetDescuentoFiscal();
  904.             }
  905.             if(vm.cambio < 0){
  906.                 vm.giftcardIngresado = "";
  907.                 vm.giftcards = [];
  908.                 vm.tituloRedencion = "GIFTCARD"
  909.                 vm.esGiftcard = true;
  910.                 $state.transitionTo("pagar.giftcards")
  911.                 vm.focus = "exampleInputEmail1"
  912.             }
  913.         }
  914.  
  915.         function getDescuentos(){
  916.             return prodState.getDescuentos().then(function (data){
  917.                     vm.Descuentos = data;
  918.                     return data;
  919.             });
  920.         }
  921.  
  922.         function getCupones(){
  923.             return prodState.getCupones().then(function (data){
  924.                     vm.Cupones = data;
  925.                     return data;
  926.             });
  927.         }
  928.  
  929.         function getCertificados(){
  930.             return prodState.getCertificados().then(function (data){
  931.                     vm.certificados = data;
  932.                     return data;
  933.             });
  934.         }
  935.  
  936.         /*
  937.         function filtrarCartItems(){
  938.             if(vm.Orden[0]){
  939.                 vm.CartItems = vm.Orden[0].lineas.slice(vm.CartNumItems - vm.Pagineo, vm.CartNumItems);
  940.             }else{
  941.                 vm.CartItems = [];
  942.             }
  943.             return vm.CartItems;
  944.         }
  945.  
  946.         function nexCartPage(){
  947.             var total = vm.Orden[0].lineas.length;
  948.             console.log(total);
  949.             if (vm.CartActivePage +1  <= Math.ceil(total/vm.Pagineo)){
  950.                 vm.CartActivePage = vm.CartActivePage + 1;
  951.                 vm.CartNumItems = vm.CartActivePage * vm.Pagineo;
  952.             }
  953.         }
  954.  
  955.         function prevCartPage(){
  956.             var total = vm.Orden[0].lineas.length;
  957.             if (vm.CartActivePage -1  < Math.ceil(total/vm.Pagineo) && vm.CartActivePage -1 > 0 ){
  958.                 vm.CartActivePage = vm.CartActivePage - 1;
  959.                 vm.CartNumItems = vm.CartActivePage * vm.Pagineo;
  960.             }
  961.         }
  962.         */
  963.  
  964.  
  965.         /* FUNCIONES DE CALCULOS */
  966.  
  967.         function calcularTotales(){
  968.  
  969.             //vm.Orden[0].encabezado.subtotal = vm.Totales.subtotal;
  970.             prodState.calcularTotales(vm.Orden[0].encabezado.numOrden).then(function(data){
  971.                 console.log("TotalesRecibidos");
  972.                 vm.Orden[0].encabezado.Impuestos = data.impuestos;
  973.                 vm.Orden[0].encabezado.Descuento = data.orden_Descuento;
  974.                 vm.Orden[0].encabezado.total = data.total;
  975.                 vm.Orden[0].encabezado.cambio = "0";
  976.                 vm.total = data.total.toFixed(2);
  977.             })
  978.         }
  979.  
  980.         function calcularCambio(){
  981.             var total = 0;
  982.             angular.forEach(vm.pagos,function (row,key){
  983.                 total = parseFloat(total) + parseFloat(row.valor);
  984.             })
  985.             if(vm.certificadosAplicados.length > 0){
  986.                 var total2 = 0;
  987.                 angular.forEach(vm.certificadosAplicados, function (e,w){
  988.                     total2 = total2 + e.total;
  989.                 });
  990.                 if(total2 < vm.Orden[0].encabezado.grantotal){
  991.                     vm.cambio = parseFloat(total).toFixed(2)  - parseFloat(vm.Orden[0].encabezado.grantotal).toFixed(2);
  992.                 }else{
  993.                     vm.cambio = 0;
  994.                 }
  995.                 //if(vm.certificados.certificado.total < vm.Orden[0].encabezado.total){
  996.                 //    vm.cambio = parseFloat(total)  - parseFloat(vm.Orden[0].encabezado.total);
  997.                 //}else{
  998.                 //    vm.cambio = 0;
  999.                 //}
  1000.             }else{
  1001.                 vm.cambio = parseFloat(total).toFixed(2)  - parseFloat(vm.Orden[0].encabezado.grantotal).toFixed(2);
  1002.             }
  1003.  
  1004.             if(vm.giftcardsAplicados.length > 0){
  1005.                 var total2 = 0;
  1006.                 angular.forEach(vm.giftcardsAplicados, function (e,w){
  1007.                     total2 = total2 + e.valor;
  1008.                 });
  1009.                 if(total2 < vm.Orden[0].encabezado.grantotal){
  1010.                     vm.cambio = parseFloat(total).toFixed(2)  - parseFloat(vm.Orden[0].encabezado.grantotal).toFixed(2);
  1011.                 }else{
  1012.                     vm.cambio = 0;
  1013.                 }
  1014.             }
  1015.         }
  1016.  
  1017.  
  1018.         /** FUNCIONES DEL TECLADO **/
  1019.         function teclListo(){
  1020.             if($state.current.name == "pagar.cupones.formulario.teclado"){
  1021.                 vm.cuponingresado = vm.ordenesDeCocina;
  1022.                 vm.ordenesDeCocina = "";
  1023.                 $state.transitionTo("pagar.cupones.formulario");
  1024.             }else{
  1025.                 if ($state.current.name == "pagar.certificados.teclado") {
  1026.                     if (vm.certificadoIngresado !== vm.ordenesDeCocina) {
  1027.                         vm.certificadoIngresado = vm.ordenesDeCocina
  1028.                         vm.certificados         = []
  1029.                     }
  1030.  
  1031.                     $state.transitionTo("pagar.certificados")
  1032.                 }else{
  1033.                     if($state.current.name.indexOf("digitalizar.teclado") > -1){
  1034.                         if(vm.selectedCampo == "n"){
  1035.                             vm.lectura.nombre = vm.ordenesDeCocina;
  1036.                         }
  1037.                         if (vm.selectedCampo == "m"){
  1038.                             vm.lectura.motivo = vm.ordenesDeCocina;
  1039.                         }
  1040.                         if (vm.selectedCampo == "cd"){
  1041.                             vm.lectura.codigo = vm.ordenesDeCocina;
  1042.                         }
  1043.                         vm.ordenesDeCocina = "";
  1044.                         var estado = $state.current.name.split(".")[1];
  1045.                         $state.transitionTo("pagar." + estado + ".digitalizar");
  1046.                     }else{
  1047.                         if($state.current.name == "pagar.tarjeta.teclado"){
  1048.                             vm.txtNombre = vm.ordenesDeCocina;
  1049.                             vm.ordenesDeCocina = "";
  1050.                             $state.transitionTo("pagar.tarjeta");
  1051.                         }else{
  1052.                             if($state.current.name =="pagar.datos.tecladoConsumidor"){
  1053.                                 vm.dataCliente.consumidor = vm.ordenesDeCocina;
  1054.                                 vm.ordenesDeCocina = "";
  1055.                                 $state.transitionTo("pagar.datos");
  1056.                             }else{
  1057.                                 if($state.current.name =="pagar.datos.tecladoEmpresa"){
  1058.                                     vm.dataCliente.empresa = vm.ordenesDeCocina;
  1059.                                     vm.ordenesDeCocina = "";
  1060.                                     $state.transitionTo("pagar.datos");
  1061.                                 }else{
  1062.                                     if($state.current.name == "pagar.giftcards.teclado"){
  1063.                                         vm.giftcardIngresado = vm.ordenesDeCocina;
  1064.                                         vm.ordenesDeCocina = "";
  1065.                                         $state.transitionTo("pagar.giftcards");
  1066.                                     }
  1067.                                 }
  1068.  
  1069.                             }
  1070.                         }
  1071.                     }
  1072.                 }
  1073.             }
  1074.         }
  1075.  
  1076.         function select(num){
  1077.             prodState.setFocus('pass');
  1078.             vm.MensajeError = false;
  1079.             vm.textLCDError = "";
  1080.             if(vm.primero){
  1081.                 vm.monto = ""
  1082.                 vm.primero = false;
  1083.             }
  1084.             if($state.current.name == "pagar.autorizacion"){
  1085.                 vm.textLCD= vm.textLCD + num
  1086.             }else{
  1087.                 if(vm.selectedCampo){
  1088.                     if(vm.selectedCampo =="t"){
  1089.                         vm.txtTarjeta = vm.txtTarjeta + num ;
  1090.                         prodState.setFocus("tarjeta");
  1091.                     }else{
  1092.                         if(vm.selectedCampo =="v"){
  1093.                             if(vm.txtVence.length <5){
  1094.                                 if(vm.txtVence.length == 2){
  1095.                                     vm.txtVence = vm.txtVence + "/";
  1096.                                 }
  1097.                                 vm.txtVence = vm.txtVence + num;
  1098.                                 prodState.setFocus("vence");
  1099.                             }
  1100.                         }else{
  1101.                             if(vm.selectedCampo == "a"){
  1102.                                 vm.txtAutorizacion = vm.txtAutorizacion + num;
  1103.                                 prodState.setFocus("auth");
  1104.                             }else{
  1105.                                 if(vm.selectedCampo == "x"){
  1106.                                     vm.txtMontoTarjeta = vm.txtMontoTarjeta + num;
  1107.                                     angular.forEach(vm.impuestos, function(imp,key){
  1108.                                         if(imp.esDescuento == "S" && vm.selectedPasarela.manejaDevolucion == 'N'){
  1109.                                             resetDescuentoFiscal();
  1110.                                             vm.impuestosAplicados[imp.codigo_Impuesto].valor = (imp.porcentaje_Impuesto/100) * Math.abs((vm.txtMontoTarjeta/1.15) - vm.txtMontoTarjeta)
  1111.                                             vm.Orden[0].encabezado.total = vm.Orden[0].encabezado.total - vm.impuestosAplicados[imp.codigo_Impuesto].valor;
  1112.                                             calcularCambio(true);
  1113.                                         }
  1114.                                     });
  1115.                                     prodState.setFocus("montoT");
  1116.                                 }else{
  1117.                                     vm.textLCD = vm.textLCD + num;
  1118.                                 }
  1119.                             }
  1120.                         }
  1121.                     }
  1122.                 }else{
  1123.                     vm.monto = String(vm.monto) + String(num);
  1124.                 }
  1125.             }
  1126.         }
  1127.  
  1128.         function limpiar(){
  1129.             vm.monto ="";
  1130.             vm.textLCD = "0";
  1131.             prodState.setFocus("pass");
  1132.         }
  1133.  
  1134.         function borrarCant(){
  1135.             vm.monto = vm.monto.substring(0,vm.monto.length -1);
  1136.             prodState.setFocus("pass");
  1137.         }
  1138.  
  1139.         function borrarCampo(){
  1140.             if(vm.selectedCampo){
  1141.                 if(vm.selectedCampo =="t"){
  1142.                     vm.txtTarjeta = vm.txtTarjeta.substring(0,vm.txtTarjeta.length -1);
  1143.                     prodState.setFocus('tarjeta');
  1144.                 }else{
  1145.                     if(vm.selectedCampo =="v"){
  1146.                         vm.txtVence = vm.txtVence.substring(0,vm.txtVence.length -1);
  1147.                         prodState.setFocus('vence');
  1148.                     }else{
  1149.                         if(vm.selectedCampo == "a"){
  1150.                             vm.txtAutorizacion = vm.txtAutorizacion.substring(0,vm.txtAutorizacion.length -1);
  1151.                             prodState.setFocus('auth');
  1152.                         }else{
  1153.                             if(vm.selectedCampo == "x"){
  1154.                                 vm.txtMontoTarjeta = vm.txtMontoTarjeta.substring(0,vm.txtMontoTarjeta.length -1);
  1155.                                 prodState.setFocus('montoT');
  1156.                             }else{
  1157.                                 if(vm.selectedCampo == "x"){
  1158.                                     $state.transitionTo("pagar.teclado")
  1159.                                 }
  1160.                             }
  1161.                         }
  1162.                     }
  1163.                 }
  1164.             }
  1165.         }
  1166.  
  1167.         function cantSalir(){
  1168.             if(vm.pagos[2].valor <= 0){
  1169.                 resetDescuentoFiscal();
  1170.             }
  1171.             if($state.current.name.indexOf("digitalizar.numpad") > -1){
  1172.                 var estado = $state.current.name.split(".")[1];
  1173.                 vm.textLCD = "";
  1174.             } else if ($state.current.name == 'pagar.pagoBipBip.numpad') {
  1175.                 vm.textLCD = ''
  1176.             } else {
  1177.                 vm.mostrarlogo=true;
  1178.                 $state.transitionTo("pagar");
  1179.             }
  1180.         }
  1181.  
  1182.         function cantListo(){
  1183.             if($state.current.name.indexOf("digitalizar") == -1){
  1184.                 var proceder = true;
  1185.                 if($state.current.name == "pagar.tarjeta"){
  1186.                     // if (vm.txtAutorizacion == "" && vm.selectedPasarela.autorizacionAutomatica == "N" && vm.selectedPasarela.tipoConexion == "O") {
  1187.                     //     prodState.setFocus("auth");
  1188.                     //     vm.selectedCampo = 'a'
  1189.                     //     proceder = false;
  1190.                     // }else{
  1191.                     //     if (vm.txtAutorizacion.length >= 12 && vm.selectedPasarela.autorizacionAutomatica == "N" && vm.selectedPasarela.tipoConexion == "O") {
  1192.                     //         prodState.setFocus("auth");
  1193.                     //         vm.selectedCampo = 'a'
  1194.                     //         proceder = false;
  1195.                     //     }
  1196.                     // }
  1197.                     if (vm.txtNombre == "" && vm.selectedPasarela.tipoConexion == "M") {
  1198.                         prodState.setFocus("nombre");
  1199.                         vm.selectedCampo = 'p'
  1200.                         proceder = false;
  1201.                     }else{
  1202.                         if (vm.txtNombre.length >= 40 && vm.selectedPasarela.tipoConexion == "M") {
  1203.                             proceder = false;
  1204.                             prodState.setFocus("nombre");
  1205.                             vm.selectedCampo = 'p';
  1206.                         }
  1207.                     }
  1208.                     if (vm.txtVence == "" && vm.selectedPasarela.tipoConexion == "M") {
  1209.                         prodState.setFocus("vence");
  1210.                         vm.selectedCampo = 'v'
  1211.                         proceder = false;
  1212.                     }else{
  1213.                         if(vm.txtVence.length > 5 && vm.selectedPasarela.tipoConexion == "M"){
  1214.                             proceder = false;
  1215.                             prodState.setFocus("vence");
  1216.                             vm.selectedCampo = 'v'
  1217.                         }
  1218.                     }
  1219.                     if (vm.txtTarjeta == "" && vm.selectedPasarela.tipoConexion == "M") {
  1220.                         prodState.setFocus("tarjeta");
  1221.                         vm.selectedCampo = 't'
  1222.                         proceder = false;
  1223.                     }else{
  1224.                         if (vm.txtTarjeta.length > 18 && vm.selectedPasarela.tipoConexion == "M") {
  1225.                             toaster.pop("error","","Numero de Tarjeta Invalido");
  1226.                             proceder = false;
  1227.                             prodState.setFocus("tarjeta");
  1228.                             vm.selectedCampo = 't'
  1229.                         }
  1230.                     }
  1231.                     if(vm.selectedPasarela.tipoConexion == "L"){
  1232.                        
  1233.                     }else{
  1234.                         if(vm.selectedPasarela.autorizacionAutomatica == "N" && proceder){
  1235.                             if(parseFloat(parseFloat(vm.txtMontoTarjeta).toFixed(2)) > parseFloat(Math.abs(vm.cambio).toFixed(2))){
  1236.                                 toaster.pop("error","","El monto no puede ser mayor a " + Math.abs(vm.cambio).toFixed(2));
  1237.                                 proceder = false;
  1238.                             }else{
  1239.                                 var info = {};
  1240.                                 info.numtarjeta = vm.txtTarjeta || "XXXXXXXX";
  1241.                                 info.nombre = vm.txtNombre || "Cliente Tarjeta";
  1242.                                 info.vence = vm.txtVence || "";
  1243.                                 info.monto = vm.txtMontoTarjeta;
  1244.                                 info.autorizacion = vm.txtAutorizacion;
  1245.                                 info.banco = vm.selectedPasarela.codigoBanco;
  1246.                                 info.numOrden = vm.Orden[0].encabezado.numOrden;
  1247.                                 info.impuesto = vm.txtMontoImpuesto;
  1248.                                 info.autorizada = ""
  1249.    
  1250.                                 vm.PagoTarjeta.numtarjeta = vm.txtTarjeta || "XXXXXXXX";
  1251.                                 vm.PagoTarjeta.nombre = vm.txtNombre || "Cliente Tarjeta";
  1252.                                 vm.PagoTarjeta.vence = vm.txtVence || "";
  1253.                                 vm.PagoTarjeta.monto = vm.txtMontoTarjeta;
  1254.                                 vm.PagoTarjeta.autorizacion = vm.txtAutorizacion;
  1255.                                 vm.PagoTarjeta.banco = vm.selectedPasarela.codigoBanco;
  1256.                                 vm.PagoTarjeta.numOrden = vm.Orden[0].encabezado.numOrden;
  1257.                                 vm.PagoTarjeta.impuesto = vm.txtMontoImpuesto;
  1258.                                 vm.pagos[vm.funcionActual.funcionPago].valor = parseFloat(vm.pagos[vm.funcionActual.funcionPago].valor) + parseFloat(vm.txtMontoTarjeta);
  1259.                                
  1260.                                   vm.Tarjetas.push(info);
  1261.                                
  1262.                             }
  1263.                         }else{
  1264.                            if(vm.selectedPasarela.autorizacionAutomatica == "S" && proceder){
  1265.                                 if(parseFloat(parseFloat(vm.txtMontoTarjeta).toFixed(2)) > parseFloat(Math.abs(vm.cambio).toFixed(2))){
  1266.                                     toaster.pop("error","","El monto no puede ser mayor a " + Math.abs(vm.cambio).toFixed(2));
  1267.                                     proceder = false;
  1268.                                 }else{
  1269.                                     var info = {};
  1270.                                     info.numtarjeta = vm.txtTarjeta;
  1271.                                     info.nombre = vm.txtNombre;
  1272.                                     info.vence = vm.txtVence;
  1273.                                     info.monto = vm.txtMontoTarjeta;
  1274.                                     info.autorizacion = vm.txtAutorizacion;
  1275.                                     info.banco = vm.selectedPasarela.codigoBanco;
  1276.                                     info.numOrden = vm.Orden[0].encabezado.numOrden;
  1277.                                     info.impuesto = vm.txtMontoImpuesto;
  1278.                                     info.autorizada = ""
  1279.    
  1280.                                     vm.PagoTarjeta.numtarjeta = vm.txtTarjeta;
  1281.                                     vm.PagoTarjeta.nombre = vm.txtNombre;
  1282.                                     vm.PagoTarjeta.vence = vm.txtVence;
  1283.                                     vm.PagoTarjeta.monto = vm.txtMontoTarjeta;
  1284.                                     vm.PagoTarjeta.autorizacion = vm.txtAutorizacion;
  1285.                                     vm.PagoTarjeta.banco = vm.selectedPasarela.codigoBanco;
  1286.                                     vm.PagoTarjeta.numOrden = vm.Orden[0].encabezado.numOrden;
  1287.                                     vm.PagoTarjeta.impuesto = vm.txtMontoImpuesto;
  1288.                                     vm.pagos[vm.funcionActual.funcionPago].valor = parseFloat(vm.pagos[vm.funcionActual.funcionPago].valor) + parseFloat(vm.txtMontoTarjeta);
  1289.                                     vm.Tarjetas.push(info);
  1290.                                 }
  1291.                            }
  1292.                         }
  1293.                     }
  1294.                 }else{
  1295.                     if($state.current.name == "pagar.efectivo"){
  1296.                         if(vm.monto != "."){
  1297.                             vm.pagos[vm.funcionActual.funcionPago].valor = vm.monto;
  1298.                         }else{
  1299.                             vm.pagos[vm.funcionActual.funcionPago].valor = "0.00";
  1300.                         }
  1301.                     }else{
  1302.                         if($state.current.name == "pagar.datos.numpad"){
  1303.                             vm.dataCliente.rtn = vm.textLCD;
  1304.                             proceder = false;
  1305.                             $state.transitionTo("pagar.datos");
  1306.                         }else{
  1307.                           if($state.current.name == "pagar.datos.ordenCompraEx") {
  1308.                             vm.dataCliente.ordenCompraEx = vm.textLCD;
  1309.                             proceder = false;
  1310.                             $state.transitionTo("pagar.datos");
  1311.                           }else{
  1312.                             if($state.current.name == "pagar.datos.constanciaRegistroEx") {
  1313.                               vm.dataCliente.constanciaRegistroEx = vm.textLCD;
  1314.                               proceder = false;
  1315.                               $state.transitionTo("pagar.datos");
  1316.                             }else{
  1317.                               if($state.current.name == "pagar.datos.registroSAG") {
  1318.                                 vm.dataCliente.registroSAG = vm.textLCD;
  1319.                                 proceder = false;
  1320.                                 $state.transitionTo("pagar.datos");
  1321.                               } else if ($state.current.name == 'pagar.pagoBipBip.numpad') {
  1322.                                   if (vm.textLCD) {
  1323.                                       switch (vm.selectedCampo) {
  1324.                                           case 'CodigoClienteBipBip':
  1325.                                               vm.codigoClienteBipBip = vm.textLCD
  1326.                                               getClienteBipBip()
  1327.                                               break
  1328.                                           case 'MontoPuntosBips':
  1329.                                               vm.montoPuntosBips = vm.textLCD
  1330.                                               validateMontoPuntosBips()
  1331.                                               break
  1332.                                       }
  1333.                                       vm.textLCD = ''
  1334.                                   }
  1335.                                   $state.transitionTo('pagar.pagoBipBip')
  1336.                                   return
  1337.                               }
  1338.                             }
  1339.                           }
  1340.                         }
  1341.                     }
  1342.                 }
  1343.  
  1344.                 if(proceder){
  1345.                     calcularCambio();
  1346.                     vm.Orden[0].encabezado.cambio = vm.cambio;
  1347.                     if(vm.pagos[2].valor <= 0){
  1348.                         resetDescuentoFiscal();
  1349.                     }
  1350.                     vm.mostrarlogo=true;
  1351.                     if(vm.selectedPasarela.tipoConexion == 'M'){
  1352.                         var data = { "tarjetas": vm.Tarjetas }
  1353.                         vm.autorizando = true;
  1354.                         pagarTarjeta(data).then(function (w) {
  1355.                         }).catch(function (e) {
  1356.                             vm.autorizando = false;
  1357.                             toaster.pop('error', '', e.toString());
  1358.                         })
  1359.                     }else{
  1360.                       $state.transitionTo("pagar");
  1361.                     }
  1362.                 }else{
  1363.                     //toaster.pop('error','' ,'Debe Ingresar codigo de autorizacion');
  1364.                 }
  1365.             }else{
  1366.                 if($state.current.name.indexOf("digitalizar.numpad") > -1 || $state.current.name.indexOf("digitalizar.telefono") > -1){
  1367.                     var proceder = false;
  1368.                     if (vm.selectedCampo == "i") {
  1369.                         if (vm.pais == 'SV') {
  1370.                             if (vm.textLCD.length >= 9) {
  1371.                                 vm.lectura.identidad = vm.textLCD;
  1372.                                 proceder = true;
  1373.                             }
  1374.                         }
  1375.                         if (vm.pais == 'HN') {
  1376.                             if (vm.textLCD.length >= 13) {
  1377.                                 vm.lectura.identidad = vm.textLCD;
  1378.                                 proceder = true;
  1379.                             }
  1380.                         }
  1381.                     }else{
  1382.                         if(vm.selectedCampo == "c1"){
  1383.                             if(vm.textLCD.length == 4){
  1384.                                 vm.anio = vm.textLCD;
  1385.                                 proceder = true;
  1386.                             }
  1387.                         }else{
  1388.                             if(vm.selectedCampo == "c2"){
  1389.                                 if(vm.textLCD.length == 2){
  1390.                                     if(parseInt(vm.textLCD) <=12){
  1391.                                         vm.mes = vm.textLCD;
  1392.                                         proceder = true;
  1393.                                     }
  1394.                                 }
  1395.                             }else{
  1396.                                 if(vm.selectedCampo == "c3"){
  1397.                                         if(parseInt(vm.textLCD) <= 31){
  1398.                                           if(vm.textLCD.length == 2){
  1399.                                             vm.dia = vm.textLCD;
  1400.                                             proceder = true;
  1401.                                         }
  1402.                                     }
  1403.                                 }else{
  1404.                                     if(vm.selectedCampo == "t"){
  1405.                                       if(vm.textLCD.length > 0){
  1406.                                           vm.lectura.telefono = vm.textLCD;
  1407.                                           proceder  = true;
  1408.                                       }
  1409.                                     }else{
  1410.                                         if(vm.selectedCampo == "tf"){
  1411.                                             if(vm.textLCD.length > 0){
  1412.                                                 vm.lectura.telefono = vm.textLCD;
  1413.                                                 proceder  = true;
  1414.                                             }
  1415.                                         }
  1416.                                     }
  1417.                                 }
  1418.                             }
  1419.                         }
  1420.                     }
  1421.                     if(proceder){
  1422.                         vm.selectedCampo = "";
  1423.                         vm.textLCD ="";
  1424.                         var estado = $state.current.name.split(".")[1];
  1425.                         $state.transitionTo("pagar." + estado + ".digitalizar");
  1426.                     }else{
  1427.                         toaster.pop("error","","Datos incorrectos")
  1428.                         //prodState.setFocus("pass");
  1429.                         vm.focus ="pass";
  1430.                     }
  1431.                 }
  1432.             }
  1433.         }
  1434.  
  1435.         function excentos(){
  1436.             vm.dataIngresada = "";
  1437.             vm.lectura.identidad = "";
  1438.             vm.lectura.anio = "";
  1439.             vm.lectura.mes = "";
  1440.             vm.lectura.dia = "";
  1441.             vm.lectura.nombre = "";
  1442.             vm.lectura.transaccion = "EX";
  1443.             $state.transitionTo("pagar.excento.digitalizar");
  1444.         }
  1445.  
  1446.         function selectLimPago(id){
  1447.             vm.currentLimPago = id;
  1448.             switch(id){
  1449.                 case "desc":
  1450.                     vm.paramsLimPago = vm.descuentosAplicados
  1451.                     break;
  1452.                 case "tarjs":
  1453.                     vm.paramsLimPago = vm.Tarjetas;
  1454.                     break;
  1455.                 case "cert":
  1456.                     vm.paramsLimPago = vm.certificadosAplicados;
  1457.                     break;
  1458.                 case "gift":
  1459.                     vm.paramsLimPago = vm.giftcardsAplicados;
  1460.                     break;
  1461.             }
  1462.         }
  1463.  
  1464.         function borrarLimPago(obj){
  1465.             switch(vm.currentLimPago){
  1466.                 case "desc":
  1467.                     var index = 0;
  1468.                     var descActual = "";
  1469.                     index = vm.descuentosAplicados.indexOf(obj);
  1470.                     descActual = vm.descuentosAplicados[index];
  1471.                     vm.descuentosAplicados.splice(index,1);
  1472.                     vm.Orden[0].encabezado.total = vm.Orden[0].encabezado.total + descActual.valor;
  1473.                     vm.descuentoAplicado = vm.descuentoAplicado - descActual.valor;
  1474.                     calcularCambio();
  1475.                     break;
  1476.                 case "tarjs":
  1477.                     vm.paramsLimPago = vm.Tarjetas;
  1478.                     var index = vm.Tarjetas.indexOf(obj);
  1479.                     vm.Tarjetas.splice(index,1);
  1480.                     if(vm.selectedPasarela.tipoConexion == "M"){
  1481.                         prodState.anulTarjetas(obj.id).then(function(){
  1482.                           vm.pagos[2].valor = parseFloat(vm.pagos[2].valor) - parseFloat(obj.monto);
  1483.                           if(vm.Tarjetas.length == 0){
  1484.                               vm.pagos[2].valor = 0.00;
  1485.                           }
  1486.                           if(vm.pagos[2].valor <= 0){
  1487.                               resetDescuentoFiscal();
  1488.                           }
  1489.                           vm.lectura.identidad = "";
  1490.                           vm.lectura.nombre = "";
  1491.                           vm.lectura.nacimiento = "";
  1492.                           vm.mostrarlogo=false;
  1493.                         });
  1494.                     }else{
  1495.                       vm.pagos[2].valor = parseFloat(vm.pagos[2].valor) - parseFloat(obj.monto);
  1496.                       if(vm.Tarjetas.length == 0){
  1497.                           vm.pagos[2].valor = 0.00;
  1498.                       }
  1499.                       if(vm.pagos[2].valor <= 0){
  1500.                           resetDescuentoFiscal();
  1501.                       }
  1502.                       vm.lectura.identidad = "";
  1503.                       vm.lectura.nombre = "";
  1504.                       vm.lectura.nacimiento = "";
  1505.                       vm.mostrarlogo=false;
  1506.                     }
  1507.  
  1508.                     calcularCambio();
  1509.                     break;
  1510.                 case "cert":
  1511.                     vm.paramsLimPago = vm.certificadosAplicados;
  1512.                     var index = 0;
  1513.                     var descActual = "";
  1514.                     index = vm.certificadosAplicados.indexOf(obj);
  1515.                     descActual = vm.certificadosAplicados[index];
  1516.                     vm.certificadosAplicados.splice(index,1);
  1517.                     calcularCambio();
  1518.                     break;
  1519.                 case "gift":
  1520.                     vm.paramsLimPago = vm.giftcardsAplicados;
  1521.                     var index = 0;
  1522.                     var descActual = "";
  1523.                     index = vm.certificadosAplicados.indexOf(obj);
  1524.                     descActual = vm.certificadosAplicados[index];
  1525.                     vm.certificadosAplicados.splice(index,1);
  1526.                     calcularCambio();
  1527.                     break;
  1528.             }
  1529.         }
  1530.  
  1531.         function validarCamposVacios(){
  1532.             var proceder = true;
  1533.  
  1534.             if (vm.descuentoForm.form != undefined) {
  1535.  
  1536.                 if(vm.lectura.identidad == "" && vm.descuentoForm.campo_identidad == "*" ){
  1537.                     proceder = false;
  1538.                 }
  1539.                
  1540.                 vm.lectura.nacimiento = vm.anio +"-"+vm.mes+"-"+vm.dia;
  1541.                 if(vm.descuentoForm.campo_nacimiento == "*" && vm.lectura.nacimiento.length < 10 ){
  1542.                     proceder = false;
  1543.                 }
  1544.                 vm.lectura.vence = vm.anio + "-" + vm.mes + "-" + vm.dia;
  1545.                 if (vm.descuentoForm.form.campo_vence == "*" && vm.lectura.vence.length < 10) {
  1546.                     proceder = false;
  1547.                 }
  1548.                
  1549.                 if(vm.lectura.motivo == "" && vm.descuentoForm.campo_motivo == "*" ){
  1550.                     proceder = false;
  1551.                 }
  1552.                
  1553.                 if(vm.lectura.telefono == "" && vm.descuentoForm.campo_telefono == "*" ){
  1554.                     proceder = false;
  1555.                 }
  1556.                
  1557.                 if(vm.lectura.identidad == "" && vm.descuentoForm.campo_identidad == "*"){
  1558.                     proceder = false
  1559.                 }
  1560.                
  1561.                 if(vm.lectura.nombre == "" && vm.descuentoForm.campo_nombre == "*"){
  1562.                     proceder = false
  1563.                 }
  1564.                
  1565.             }
  1566.                 return proceder
  1567.         }
  1568.  
  1569.         function digitalizar(){
  1570.             if (validarCamposVacios()){
  1571.                 vm.lectura.numOrden = vm.Orden[0].encabezado.numOrden;
  1572.                 if(vm.opcionActual.pedirDocumento == "C"){
  1573.                     vm.lectura.contenido = vm.carnet;
  1574.                 }
  1575.                 if(vm.opcionActual.validar != null){
  1576.                 prodState.validarDescuento(vm.lectura,vm.opcionActual.validar,vm.lectura.nacimiento).then(function (d){
  1577.                     if (d.data.valido == "S"){
  1578.                     toaster.pop('success','',d.data.mensaje);
  1579.                     prodState.digitalizar(vm.lectura).then(function (){
  1580.                         if(parseFloat(vm.totalesTemporal.total).toFixed(2) >= 0.0  && vm.totalesTemporal.descuentoAplicado > 0){
  1581.                         vm.descuentosAplicados.push({
  1582.                             codigo_descuento : vm.opcionActual.codigoDescuento,
  1583.                             numOrden : vm.Orden[0].encabezado.numOrden,
  1584.                             valor : vm.totalesTemporal.descuento,
  1585.                             titulo : vm.totalesTemporal.titulo
  1586.                         });
  1587.                         vm.Orden[0].encabezado.grantotal =  vm.totalesTemporal.total;
  1588.                         vm.Orden[0].encabezado.total = vm.totalesTemporal.total2;
  1589.                         //vm.Orden[0].encabezado.subtotal = vm.totalesTemporal.subtotal;
  1590.                         if(vm.totalesTemporal.descuentoAplicado > 0){
  1591.                             vm.descuentoAplicadoCodigo = vm.opcionActual.codigoDescuento;
  1592.                             vm.descuentoAplicado = vm.totalesTemporal.descuentoAplicado;
  1593.                         }
  1594.                         vm.totalesTemporal.total = 0;
  1595.                         vm.totalesTemporal.total2 = 0;
  1596.                         vm.totalesTemporal.subtotal = 0 ;
  1597.                         vm.totalesTemporal.descuentoAplicado = 0;
  1598.                         vm.totalesTemporal.titulo = "";
  1599.                         if(vm.lectura.transaccion == "EX"){
  1600.                             vm.esExcento="S"
  1601.                             vm.Orden[0].encabezado.grantotal = vm.Orden[0].encabezado.grantotal - vm.Orden[0].encabezado.impuestos;
  1602.                             vm.Orden[0].encabezado.impuestos = 0;
  1603.                             vm.Orden[0].encabezado.impuesto1 = 0;
  1604.                             vm.impuestosAplicados[1].valor = 0
  1605.                             vm.Orden[0].encabezado.impuesto2 = 0;
  1606.                             vm.impuestosAplicados[2].valor = 0
  1607.                             vm.Orden[0].esExcento = "S";
  1608.                             calcularCambio();
  1609.                         }else{
  1610.                             calcularCambio();
  1611.                         }
  1612.                         }else{
  1613.                         if(vm.lectura.transaccion == "EX"){
  1614.                             vm.esExcento="S"
  1615.                             vm.Orden[0].encabezado.grantotal = vm.Orden[0].encabezado.grantotal - vm.Orden[0].encabezado.impuestos;
  1616.                             vm.Orden[0].encabezado.impuestos = 0;
  1617.                             vm.Orden[0].encabezado.impuesto1 = 0;
  1618.                             vm.impuestosAplicados[1].valor = 0
  1619.                             vm.Orden[0].encabezado.impuesto2 = 0;
  1620.                             vm.impuestosAplicados[2].valor = 0
  1621.                             vm.Orden[0].esExcento = "S";
  1622.                             calcularCambio();
  1623.                         }
  1624.                         }
  1625.                         vm.lectura.identidad = "";
  1626.                         vm.lectura.nombre = "";
  1627.                         vm.lectura.nacimiento = "";
  1628.                         vm.lectura.transaccion = "";
  1629.                         vm.lectura.codigoTransaccion = "";
  1630.                         vm.beneficios = "";
  1631.                         vm.anio ="";
  1632.                         vm.mes = "";
  1633.                         vm.dia = "";
  1634.                         vm.mostrarlogo = true;
  1635.  
  1636.                         filterCuponesElectronicosAplicados()
  1637.  
  1638.                         $state.transitionTo("pagar");
  1639.                     });
  1640.                     }else{
  1641.                     toaster.pop('warning','ERROR', d.data.mensaje)
  1642.                     }
  1643.                 })
  1644.                 }else{
  1645.                 prodState.digitalizar(vm.lectura).then(function (){
  1646.                     if(parseFloat(vm.totalesTemporal.total).toFixed(2) >= 0.0 && vm.totalesTemporal.descuentoAplicado > 0){
  1647.                     vm.descuentosAplicados.push({
  1648.                         codigo_descuento : vm.opcionActual.codigoDescuento,
  1649.                         numOrden : vm.Orden[0].encabezado.numOrden,
  1650.                         valor : vm.totalesTemporal.descuento,
  1651.                         titulo : vm.totalesTemporal.titulo
  1652.                     });
  1653.                     vm.Orden[0].encabezado.grantotal =  vm.totalesTemporal.total;
  1654.                     vm.Orden[0].encabezado.total = vm.totalesTemporal.total2;
  1655.                     //vm.Orden[0].encabezado.subtotal = vm.totalesTemporal.subtotal;
  1656.                     if(vm.totalesTemporal.descuentoAplicado > 0){
  1657.                         vm.descuentoAplicadoCodigo = vm.opcionActual.codigoDescuento;
  1658.                         vm.descuentoAplicado = vm.totalesTemporal.descuentoAplicado;
  1659.                     }
  1660.                     vm.totalesTemporal.total = 0;
  1661.                     vm.totalesTemporal.total2 = 0;
  1662.                     vm.totalesTemporal.subtotal = 0 ;
  1663.                     vm.totalesTemporal.descuentoAplicado = 0;
  1664.                     vm.totalesTemporal.titulo = "";
  1665.                     if(vm.lectura.transaccion == "EX"){
  1666.                         vm.esExcento="S"
  1667.                         vm.Orden[0].encabezado.grantotal = vm.Orden[0].encabezado.grantotal - vm.Orden[0].encabezado.impuestos;
  1668.                         vm.Orden[0].encabezado.impuestos = 0;
  1669.                         vm.Orden[0].encabezado.impuesto1 = 0;
  1670.                         vm.impuestosAplicados[1].valor = 0
  1671.                         vm.Orden[0].encabezado.impuesto2 = 0;
  1672.                         vm.impuestosAplicados[2].valor = 0
  1673.                         vm.Orden[0].esExcento = "S";
  1674.                         calcularCambio();
  1675.                     }else{
  1676.                         calcularCambio();
  1677.                     }
  1678.                     }else{
  1679.                     if(vm.lectura.transaccion == "EX"){
  1680.                         vm.esExcento="S"
  1681.                         vm.Orden[0].encabezado.grantotal = vm.Orden[0].encabezado.grantotal - vm.Orden[0].encabezado.impuestos;
  1682.                         vm.Orden[0].encabezado.impuestos = 0;
  1683.                         vm.Orden[0].encabezado.impuesto1 = 0;
  1684.                         vm.impuestosAplicados[1].valor = 0
  1685.                         vm.Orden[0].encabezado.impuesto2 = 0;
  1686.                         vm.impuestosAplicados[2].valor = 0
  1687.                         vm.Orden[0].esExcento = "S";
  1688.                         calcularCambio();
  1689.                     }
  1690.                     }
  1691.                     vm.lectura.identidad = "";
  1692.                     vm.lectura.nombre = "";
  1693.                     vm.lectura.nacimiento = "";
  1694.                     vm.lectura.transaccion = "";
  1695.                     vm.lectura.codigoTransaccion = "";
  1696.                     vm.beneficios = "";
  1697.                     vm.anio ="";
  1698.                     vm.mes = "";
  1699.                     vm.dia = "";
  1700.                     vm.mostrarlogo = true;
  1701.  
  1702.                     filterCuponesElectronicosAplicados()
  1703.  
  1704.                     $state.transitionTo("pagar");
  1705.                 });
  1706.             }
  1707.             }else{
  1708.                 toaster.pop("warning",'CAMPOS REQUERIDOS', "DEBE LLENAR TODOS LOS CAMPOS...")
  1709.             }
  1710.         }
  1711.  
  1712.         /*** FUNCIONES DEL TECLADO ***/
  1713.         function borrar(){
  1714.             vm.ordenesDeCocina = vm.ordenesDeCocina.substring(0, vm.ordenesDeCocina.length-1);
  1715.         }
  1716.         function teclear(valor){
  1717.             vm.ordenesDeCocina = vm.ordenesDeCocina + valor;
  1718.             prodState.setFocus("teclado");
  1719.         }
  1720.  
  1721.         /* FUNCIONES GENERALES */
  1722.         function authenticar(passcode,redir,esAuth){
  1723.             vm.enviando = true;
  1724.             return prodState.ingresar(String(passcode),esAuth).then(function (data){
  1725.                 if (!data.autenticado){
  1726.                     vm.MensajeError = true;
  1727.                     vm.textLCDError = "***   " + data.msgerror + "   ***" ;
  1728.                     vm.textLCD = "";
  1729.                     vm.Autorizado = false;
  1730.                     vm.Autorizador = "";
  1731.                     prodState.setFocus('pass');
  1732.                 }else{
  1733.                     if(data.usuario[0].usuarioRole[0].codigoRol == 1){
  1734.                         vm.MensajeError = false;
  1735.                         vm.Autorizado = true;
  1736.                         vm.textLCDError = ""
  1737.                         vm.Autorizador = data.usuario[0].id;
  1738.                         return data;
  1739.                         if(!redir){
  1740.                             eval(vm.funcionActual.nombre_Funcion + "()");
  1741.                         }
  1742.                     }else{
  1743.                         vm.MensajeError = true;
  1744.                         vm.textLCDError = "***   No esta autorizado   ***" ;
  1745.                         vm.textLCD = "";
  1746.                         vm.Autorizado = false;
  1747.                         vm.Autorizador = "";
  1748.                         prodState.setFocus('pass');
  1749.                     }
  1750.                 }
  1751.             })
  1752.         }
  1753.  
  1754.         function listo(){
  1755.             if(vm.enviando==false){
  1756.                 authenticar(vm.textLCD,true,"S").then(function(){
  1757.                     vm.enviando = false;
  1758.                     if(!vm.Autorizado){
  1759.                         prodState.setFocus('pass');
  1760.                     }else{
  1761.                         eval(vm.funcionActual.nombre_Funcion + "()");
  1762.                     }
  1763.                 });
  1764.             }
  1765.         }
  1766.         function selectCampo(campo){
  1767.             if(campo =="p"){
  1768.                 if(vm.txtNombre.length >0){
  1769.                     vm.ordenesDeCocina = vm.txtNombre;
  1770.                 }
  1771.                 $state.transitionTo("pagar.tarjeta.teclado");
  1772.             }else{
  1773.                 if(campo == "x"){
  1774.                     vm.txtMontoTarjeta = "";
  1775.                     vm.selectedCampo = campo;
  1776.                 }else{
  1777.                     vm.selectedCampo = campo;
  1778.                 }
  1779.             }
  1780.         }
  1781.  
  1782.         function selCampo(campo){
  1783.             vm.selectedCampo = campo;
  1784.             if (["t", "i", "c1", "c2", "c3", "rt", "oe", "cr", "rs", "tf"].includes(campo)) {
  1785.                 if($state.current.name == "pagar.descuentos.digitalizar"){
  1786.                     vm.tituloPad = "";
  1787.                     $state.transitionTo("pagar.descuentos.digitalizar.numpad");
  1788.                 }
  1789.                 if($state.current.name == "pagar.cupones.digitalizar"){
  1790.                     vm.tituloPad = "";
  1791.                     $state.transitionTo("pagar.cupones.digitalizar.numpad");
  1792.                 }
  1793.                 if($state.current.name == "pagar.certificados.digitalizar"){
  1794.                     vm.tituloPad = "";
  1795.                     $state.transitionTo("pagar.certificados.digitalizar.numpad");
  1796.                 }
  1797.                 if($state.current.name == "pagar.excento.digitalizar"){
  1798.                     vm.tituloPad = "";
  1799.                     $state.transitionTo("pagar.excento.digitalizar.numpad");
  1800.                 }
  1801.                 if($state.current.name == "pagar.datos"){
  1802.                     if(campo == "oe"){
  1803.                       vm.tituloPad = "No. Orden Compra Exenta";
  1804.                       $state.transitionTo("pagar.datos.ordenCompraEx");
  1805.                     }else{
  1806.                       if(campo == "cr"){
  1807.                         vm.tituloPad = "No. Constancia Registro Exonerado";
  1808.                         $state.transitionTo("pagar.datos.constanciaRegistroEx");
  1809.                       }else{
  1810.                         if(campo == "rs"){
  1811.                           vm.tituloPad = "No. Registro SAG";
  1812.                           $state.transitionTo("pagar.datos.registroSAG");
  1813.                         }else{
  1814.                           vm.tituloPad = "RTN";
  1815.                           $state.transitionTo("pagar.datos.numpad");
  1816.                         }
  1817.                       }
  1818.                     }
  1819.                 }
  1820.                 if(campo == "i"){
  1821.                     vm.tituloPad = "Identidad";
  1822.                     if(vm.lectura.identidad.length > 0){
  1823.                         vm.textLCD = vm.lectura.identidad
  1824.                     }else{
  1825.                         vm.textLCD ="";
  1826.                     }
  1827.                     vm.focus = "pass";
  1828.                     //prodState.setFocus("pass");
  1829.                 }else{
  1830.                     if(campo == "c1"){
  1831.                         vm.tituloPad = "Año";
  1832.                         if(vm.anio.length > 0){
  1833.                             vm.anio = vm.textLCD;
  1834.                         }else{
  1835.                             vm.textLCD = "";
  1836.                         }
  1837.                         vm.focus = "pass";
  1838.                     }else{
  1839.                         if(campo == "c2"){
  1840.                             vm.tituloPad = "Mes";
  1841.                             if(vm.mes.length > 0){
  1842.                                 vm.mes = vm.textLCD;
  1843.                             }else{
  1844.                                 vm.textLCD = "";
  1845.                             }
  1846.                             vm.focus = "pass";
  1847.                         }else{
  1848.                             if(campo == "c3"){
  1849.                                 vm.tituloPad = "Dia";
  1850.                                 if(vm.dia.length > 0){
  1851.                                     vm.dia = vm.textLCD;
  1852.                                 }else{
  1853.                                     vm.textLCD = "";
  1854.                                 }
  1855.                                 vm.focus = "pass";
  1856.                             }else{
  1857.                                 if(campo == "tf"){
  1858.                                     vm.tituloPad = "Telefono"
  1859.                                     if(vm.lectura.telefono.length > 0){
  1860.                                         vm.textLCD = vm.lectura.telefono;
  1861.                                     }else{
  1862.                                         vm.textLCD = "";
  1863.                                     }
  1864.                                     vm.focus = "pass";
  1865.                                 }else{
  1866.                                     vm.textLCD = "";
  1867.                                 }
  1868.                                
  1869.                             }
  1870.                         }
  1871.                     }
  1872.                     prodState.setFocus("pass");
  1873.                 }
  1874.             }else{
  1875.                 if($state.current.name == "pagar.descuentos.digitalizar"){
  1876.                     $state.transitionTo("pagar.descuentos.digitalizar.teclado");
  1877.                     vm.focus = "teclado";
  1878.                 }
  1879.                 if($state.current.name == "pagar.cupones.digitalizar"){
  1880.                     $state.transitionTo("pagar.cupones.digitalizar.teclado");
  1881.                     vm.focus = "teclado";
  1882.                 }
  1883.                 if($state.current.name == "pagar.certificados.digitalizar"){
  1884.                     $state.transitionTo("pagar.certificados.digitalizar.teclado");
  1885.                     vm.focus = "teclado";
  1886.                 }
  1887.                 if($state.current.name == "pagar.excento.digitalizar"){
  1888.                     $state.transitionTo("pagar.excento.digitalizar.teclado");
  1889.                     vm.focus = "teclado";
  1890.                 }
  1891.                 if($state.current.name == "pagar.datos"){
  1892.                     if(campo == "em"){
  1893.                         $state.transitionTo("pagar.datos.tecladoEmpresa");
  1894.                         vm.focus = "teclado";
  1895.                     }else{
  1896.                         if(campo == "dc"){
  1897.                             $state.transitionTo("pagar.datos.tecladoConsumidor");
  1898.                             vm.focus = "teclado";
  1899.                         }else{
  1900.                           if(campo == "oe"){
  1901.                               $state.transitionTo("pagar.datos.tecladoConsumidor");
  1902.                               vm.focus = "teclado";
  1903.                           }
  1904.                         }
  1905.                     }
  1906.                 }
  1907.                 if ($state.current.name == 'pagar.pagoBipBip') {
  1908.                     vm.tituloPad = (() => {
  1909.                         switch (campo) {
  1910.                             case 'CodigoClienteBipBip':
  1911.                                 return 'Código de Cliente Bip Bip'
  1912.                             case 'MontoPuntosBips':
  1913.                                 return 'Puntos Bips a Redimir'
  1914.                         }
  1915.                     })()
  1916.                     vm.textLCD = ''
  1917.                     $state.transitionTo('pagar.pagoBipBip.numpad')
  1918.                     return
  1919.                 }
  1920.                 if(campo == "n"){
  1921.                     if(vm.lectura.nombre.length > 0){
  1922.                         vm.ordenesDeCocina = vm.lectura.nombre;
  1923.                     }else{
  1924.                         vm.ordenesDeCocina ="";
  1925.                     }
  1926.                     //prodState.setFocus("pass");
  1927.                     vm.focus = "teclado";
  1928.                 }
  1929.                 if(campo == "m"){
  1930.                     if(vm.lectura.motivo.length > 0){
  1931.                         vm.ordenesDeCocina = vm.lectura.nombre;
  1932.                     }else{
  1933.                         vm.ordenesDeCocina ="";
  1934.                     }
  1935.                     //prodState.setFocus("pass");
  1936.                     vm.focus = "teclado";
  1937.                 }
  1938.             }
  1939.         }
  1940.  
  1941.         function finPagar(){
  1942.             var proceder = true;
  1943.             var total = 0;
  1944.             angular.forEach(vm.pagos,function (row,key){
  1945.                 total = parseFloat(total) + parseFloat(row.valor);
  1946.             })
  1947.             if(vm.cambio.toFixed(2) >= 0 && total.toFixed(2) >= 0){
  1948.                 vm.funcionActual = {nombre_Funcion : "finPagar"};
  1949.                 var cajerodata = prodState.confCajero;
  1950.                 vm.Usuario = prodState.Usuario;
  1951.                 var caja = "";
  1952.                 var turno = "";
  1953.                 if(cajerodata.codigoCaja){
  1954.                     caja = cajerodata.codigoCaja.codigoCaja;
  1955.                 }
  1956.  
  1957.                 if(cajerodata.codigoTurno){
  1958.                     turno = cajerodata.codigoTurno.codigoTurno;
  1959.                 }
  1960.                 var descFiscal = $filter('filter')(vm.impuestosAplicados,{esDescuento: "S"});
  1961.                 vm.pagoParams = {
  1962.                     numOrden : vm.Orden[0].encabezado.numOrden,
  1963.                     formaspago : vm.pagos,
  1964.                     descuento : vm.descuentoAplicado,
  1965.                     cambio : vm.cambio,
  1966.                     autorizador : vm.Autorizador,
  1967.                     cliente : vm.dataCliente,
  1968.                     descuentoFiscal : (descFiscal.length > 0 ? descFiscal[0].valor:0),
  1969.                     cajero : prodState.Usuario.usuario[0].id,
  1970.                     Caja : caja || 0,
  1971.                     Turno : turno || 0,
  1972.                     codigoDescuento : vm.descuentoAplicadoCodigo,
  1973.                     Tarjetas : [],
  1974.                     cargos : vm.cargos,
  1975.                     descuentos : vm.descuentosAplicados,
  1976.                     esExcento : vm.esExcento,
  1977.                     canal: prodState.selectedCanal,
  1978.                     pedidoFuturo_fecha: (prodState.PedidoFuturo ? prodState.PedidoFuturo.fecha: null),
  1979.                     pedidofuturo_hora: (prodState.PedidoFuturo ? prodState.PedidoFuturo.hora : null),
  1980.                     codigo_cliente: (prodState.ClienteDom ? prodState.ClienteDom.codigO_CLIENTE : null),
  1981.                     codigo_direccion: (prodState.ClienteDom ? prodState.ClienteDom.codigo_direccion : null),
  1982.                     codigo_restaurante: (prodState.ClienteDom ? prodState.ClienteDom.restaurante : null)
  1983.                 }
  1984.                 if(vm.PagoTarjeta.numtarjeta != ""){
  1985.                     vm.pagoParams.tarjeta = vm.PagoTarjeta;
  1986.                     vm.pagoParams.Tarjetas = vm.Tarjetas;
  1987.                 }
  1988.                 if(vm.requiereAuth == true){
  1989.                     if(!vm.Autorizado){
  1990.                         vm.textLCD = "";
  1991.                         vm.Autorizado =false;
  1992.                         proceder = false;
  1993.                         $state.transitionTo("pagar.autorizacion");
  1994.                         vm.nomostrar = true;
  1995.                         vm.focus ="pass";
  1996.                         //prodState.setFocus("pass");
  1997.                     }else{
  1998.                         // REVISO SI EXITE CERTIFICADO APLICADO
  1999.                         if(vm.certificadosAplicados.length> 0 && vm.enviando == false){
  2000.                             var numeros = [];
  2001.                             angular.forEach(vm.certificadosAplicados, function(c,w){
  2002.                                 numeros.push(c.correlativo);
  2003.                             })
  2004.                             var res = prodState.getSeleccionMesaAsiento();
  2005.                             vm.Usuario = prodState.Usuario;
  2006.                             var data = {
  2007.                                 usuario : vm.Usuario.usuario[0].id,
  2008.                                 numOrden : res.NumOrden,
  2009.                                 numCertificado : numeros
  2010.                             }
  2011.                             vm.enviando = true;
  2012.                             prodState.redimirCertificado(data).then(function(data){
  2013.                                 if(data.data.msgerror != "OK"){
  2014.                                     proceder = false;
  2015.                                     vm.enviando = false;
  2016.                                     $state.transitionTo("pagar");
  2017.                                     vm.reversarCertificados(data.data.certificados);
  2018.                                 } else {
  2019.                                     let certificadosAplicados = localStorageService.get('certificadosAplicados')
  2020.  
  2021.                                     if (certificadosAplicados) {
  2022.                                         const codigoMesa = prodState.MesaAsiento.Mesa.codigo_Mesa
  2023.  
  2024.                                         certificadosAplicados = certificadosAplicados.filter(e => e.codigoMesa != codigoMesa)
  2025.  
  2026.                                         localStorageService.set('certificadosAplicados', certificadosAplicados)
  2027.                                     }
  2028.  
  2029.                                     proceder = false;
  2030.                                     if(vm.pagoParams.Tarjetas.length > 0){
  2031.                                         var data = {"tarjetas" : vm.Tarjetas};
  2032.                                         vm.Loading = true;
  2033.                                         toaster.pop("warning","","AUTORIZANDO TARJETA(S)....")
  2034.                                         prodState.postTarjetas(data).then(function(data){
  2035.                                             if(data.data.msg == "Error"){
  2036.                                                 vm.Tarjetas = data.data.tarjetas;
  2037.                                                 vm.Loading = false;
  2038.                                                 vm.enviando = false;
  2039.                                                 toaster.pop("error","","Su transaccion ha sido denegada");
  2040.                                                 $state.transitionTo("pagar.listadoTarjetas");
  2041.                                             }else{
  2042.                                                 addProductoCuponesElectronicos()
  2043.  
  2044.                                                 const timeout = vm.cuponesElectronicosAgregados
  2045.                                                     .some(element => element.couponType == 'PRODUCTO') ? 500 : 0
  2046.  
  2047.                                                 setTimeout(() => {
  2048.                                                     prodState.postPagoFactura(vm.pagoParams).then(function (da) {
  2049.                                                         vm.enviando = false;
  2050.                                                         if (da.data == null) {
  2051.                                                             deleteCuponesElectronicos()
  2052.  
  2053.                                                             if (vm.esSeparacion != "") {
  2054.                                                                 prodState.MesaAsiento.NumOrden = prodState.MesaAsiento.esSeparacion.anterior;
  2055.                                                                 prodState.dataCliente = null;
  2056.                                                                 $state.transitionTo("mesas.separarcuentas");
  2057.                                                             } else {
  2058.                                                                 if (vm.Usuario.tipoRest == "T") {
  2059.                                                                     prodState.dataCliente = null;
  2060.                                                                     prodState.ClienteDom = {};
  2061.                                                                     $interval.cancel(vm.intervalPromise);
  2062.                                                                     $state.transitionTo("mesas.usuario");
  2063.                                                                 } else {
  2064.                                                                     prodState.MesaAsiento = {
  2065.                                                                         Zona: vm.selTab,
  2066.                                                                         Mesa: { codigoMesa: vm.Usuario.usuario[0].id },
  2067.                                                                         Asiento: { codigo_SubMesa: 1 },
  2068.                                                                         NumOrden: "",
  2069.                                                                         personas: vm.personas
  2070.                                                                     }
  2071.                                                                     prodState.dataCliente = null;
  2072.                                                                     prodState.ClienteDom = {};
  2073.                                                                     $interval.cancel(vm.intervalPromise);
  2074.                                                                     if (vm.Usuario.canalDefecto == 3) {
  2075.                                                                         $state.transitionTo("clientedomi");
  2076.                                                                     } else {
  2077.                                                                         prodState.dataCliente = null;
  2078.                                                                         prodState.PedidoFuturo = null
  2079.                                                                         prodState.ClienteDom = null
  2080.                                                                         $state.transitionTo("tomapedido", {}, { reload: true });
  2081.                                                                     }
  2082.                                                                 }
  2083.                                                             }
  2084.                                                         } else {
  2085.                                                             toaster.pop("error", "", da.data);
  2086.                                                         }
  2087.                                                     });
  2088.                                                 }, timeout)
  2089.                                             }
  2090.                                         })
  2091.                                     }else{
  2092.                                         addProductoCuponesElectronicos()
  2093.  
  2094.                                         const timeout = vm.cuponesElectronicosAgregados
  2095.                                             .some(element => element.couponType == 'PRODUCTO') ? 500 : 0
  2096.  
  2097.                                         setTimeout(() => {
  2098.                                             prodState.postPagoFactura(vm.pagoParams).then(function (da) {
  2099.                                                 vm.enviando = false;
  2100.                                                 if (da.data == null) {
  2101.                                                     deleteCuponesElectronicos()
  2102.  
  2103.                                                     if (vm.Usuario.tipoRest == "T") {
  2104.                                                         prodState.dataCliente = null;
  2105.                                                         prodState.ClienteDom = {};
  2106.                                                         $interval.cancel(vm.intervalPromise);
  2107.                                                         $state.transitionTo("mesas.usuario");
  2108.                                                     } else {
  2109.                                                         prodState.MesaAsiento = {
  2110.                                                             Zona: vm.selTab,
  2111.                                                             Mesa: { codigoMesa: vm.Usuario.usuario[0].id },
  2112.                                                             Asiento: { codigo_SubMesa: 1 },
  2113.                                                             NumOrden: "",
  2114.                                                             personas: vm.personas
  2115.                                                         }
  2116.                                                         prodState.dataCliente = null;
  2117.                                                         prodState.ClienteDom = {};
  2118.                                                         $interval.cancel(vm.intervalPromise);
  2119.                                                         if (vm.Usuario.canalDefecto == 3) {
  2120.                                                             $state.transitionTo("clientedomi");
  2121.                                                         } else {
  2122.                                                             prodState.dataCliente = null;
  2123.                                                             prodState.PedidoFuturo = null
  2124.                                                             prodState.ClienteDom = null
  2125.                                                             $state.transitionTo("tomapedido", {}, { reload: true });
  2126.                                                         }
  2127.                                                     }
  2128.                                                 } else {
  2129.                                                     toaster.pop("error", "", da.data);
  2130.                                                 }
  2131.                                             });
  2132.                                         }, timeout)
  2133.                                     }
  2134.                                 }
  2135.                             });
  2136.                         }
  2137.  
  2138.                         //REDENCION DE GIFTCARDS INGRESADOS
  2139.                         if(vm.giftcardsAplicados.length> 0 && vm.enviando == false){
  2140.                             var numeros = [];
  2141.                             angular.forEach(vm.giftcardsAplicados, function(c,w){
  2142.                                 numeros.push(c.serie);
  2143.                             })
  2144.                             var res = prodState.getSeleccionMesaAsiento();
  2145.                             vm.Usuario = prodState.Usuario;
  2146.                             var data = {
  2147.                                 usuario : vm.Usuario.usuario[0].id,
  2148.                                 numOrden : res.NumOrden,
  2149.                                 numCertificado : numeros
  2150.                             }
  2151.                             vm.enviando = true;
  2152.                             prodState.redimirGiftcard(data).then(function(data){
  2153.                                 if(data.data.msgerror != "OK"){
  2154.                                     proceder = false;
  2155.                                     vm.enviando = false;
  2156.                                     $state.transitionTo("pagar");
  2157.                                     vm.reversarCertificados(data.data.giftcards);
  2158.                                 }else{
  2159.                                     proceder = false;
  2160.                                     if(vm.pagoParams.Tarjetas.length > 0){
  2161.                                         var data = {"tarjetas" : vm.Tarjetas};
  2162.                                         vm.Loading = true;
  2163.                                         toaster.pop("warning","","AUTORIZANDO TARJETA(S)....")
  2164.                                         prodState.postTarjetas(data).then(function(data){
  2165.                                             if(data.data.msg == "Error"){
  2166.                                                 vm.Tarjetas = data.data.tarjetas;
  2167.                                                 vm.Loading = false;
  2168.                                                 vm.enviando = false;
  2169.                                                 toaster.pop("error","","Su transaccion ha sido denegada");
  2170.                                                 $state.transitionTo("pagar.listadoTarjetas");
  2171.                                             }else{
  2172.                                                 addProductoCuponesElectronicos()
  2173.  
  2174.                                                 const timeout = vm.cuponesElectronicosAgregados
  2175.                                                     .some(element => element.couponType == 'PRODUCTO') ? 500 : 0
  2176.  
  2177.                                                 setTimeout(() => {
  2178.                                                     prodState.postPagoFactura(vm.pagoParams).then(function (da) {
  2179.                                                         vm.enviando = false;
  2180.                                                         if (da.data == null) {
  2181.                                                             deleteCuponesElectronicos()
  2182.  
  2183.                                                             if (vm.esSeparacion != "") {
  2184.                                                                 prodState.MesaAsiento.NumOrden = prodState.MesaAsiento.esSeparacion.anterior;
  2185.                                                                 prodState.dataCliente = null;
  2186.                                                                 $state.transitionTo("mesas.separarcuentas");
  2187.                                                             } else {
  2188.                                                                 if (vm.Usuario.tipoRest == "T") {
  2189.                                                                     prodState.ClienteDom = {};
  2190.                                                                     prodState.dataCliente = null;
  2191.                                                                     $interval.cancel(vm.intervalPromise);
  2192.                                                                     $state.transitionTo("mesas.usuario");
  2193.                                                                 } else {
  2194.                                                                     prodState.MesaAsiento = {
  2195.                                                                         Zona: vm.selTab,
  2196.                                                                         Mesa: { codigoMesa: vm.Usuario.usuario[0].id },
  2197.                                                                         Asiento: { codigo_SubMesa: 1 },
  2198.                                                                         NumOrden: "",
  2199.                                                                         personas: vm.personas
  2200.                                                                     }
  2201.                                                                     prodState.ClienteDom = {};
  2202.                                                                     prodState.dataCliente = null;
  2203.                                                                     $interval.cancel(vm.intervalPromise);
  2204.                                                                     if (vm.Usuario.canalDefecto == 3) {
  2205.                                                                         $state.transitionTo("clientedomi");
  2206.                                                                     } else {
  2207.                                                                         prodState.PedidoFuturo = null
  2208.                                                                         prodState.ClienteDom = null
  2209.                                                                         $state.transitionTo("tomapedido", {}, { reload: true });
  2210.                                                                     }
  2211.                                                                 }
  2212.                                                             }
  2213.                                                         } else {
  2214.                                                             toaster.pop("error", "", da.data);
  2215.                                                         }
  2216.                                                     });
  2217.                                                 }, timeout)
  2218.                                             }
  2219.                                         })
  2220.                                     }else{
  2221.                                         addProductoCuponesElectronicos()
  2222.  
  2223.                                         const timeout = vm.cuponesElectronicosAgregados
  2224.                                             .some(element => element.couponType == 'PRODUCTO') ? 500 : 0
  2225.  
  2226.                                         setTimeout(() => {
  2227.                                             prodState.postPagoFactura(vm.pagoParams).then(function (da) {
  2228.                                                 vm.enviando = false;
  2229.                                                 if (da.data == null) {
  2230.                                                     deleteCuponesElectronicos()
  2231.  
  2232.                                                     $interval.cancel(vm.intervalPromise);
  2233.                                                     if (vm.Usuario.tipoRest == "T") {
  2234.                                                         $state.transitionTo("mesas.usuario");
  2235.                                                     } else {
  2236.                                                         prodState.MesaAsiento = {
  2237.                                                             Zona: vm.selTab,
  2238.                                                             Mesa: { codigoMesa: vm.Usuario.usuario[0].id },
  2239.                                                             Asiento: { codigo_SubMesa: 1 },
  2240.                                                             NumOrden: "",
  2241.                                                             personas: vm.personas
  2242.                                                         }
  2243.                                                         prodState.ClienteDom = {};
  2244.                                                         prodState.dataCliente = null;
  2245.                                                         if (vm.Usuario.canalDefecto == 3) {
  2246.                                                             $state.transitionTo("clientedomi");
  2247.                                                         } else {
  2248.                                                             prodState.PedidoFuturo = null
  2249.                                                             prodState.ClienteDom = null
  2250.                                                             $state.transitionTo("tomapedido", {}, { reload: true });
  2251.                                                         }
  2252.                                                     }
  2253.                                                 } else {
  2254.                                                     toaster.pop("error", "", da.data);
  2255.                                                 }
  2256.                                             });
  2257.                                         }, timeout)
  2258.                                     }
  2259.                                 }
  2260.                             });
  2261.                         }
  2262.                     }
  2263.                 }
  2264.                 if(proceder && vm.enviando == false){
  2265.                    vm.enviando = true;
  2266.                    if(vm.pagoParams.Tarjetas.length > 0){
  2267.                         var data = {"tarjetas" : vm.Tarjetas};
  2268.                         vm.Loading = true;
  2269.                         toaster.pop("warning","","AUTORIZANDO TARJETA(S)....")
  2270.                         prodState.postTarjetas(data).then(function(data){
  2271.                             if(vm.selectedPasarela.tipoConexion != "O"){
  2272.                               listaPagos();
  2273.                             }
  2274.                             if(data.data.msg == "Error"){
  2275.                                 vm.Tarjetas = data.data.tarjetas;
  2276.                                 vm.Loading = false;
  2277.                                 toaster.pop("error","","Su transaccion ha sido denegada");
  2278.                                 $state.transitionTo("pagar.listadoTarjetas");
  2279.                             } else {
  2280.                                 addProductoCuponesElectronicos()
  2281.  
  2282.                                 const timeout = vm.cuponesElectronicosAgregados
  2283.                                     .some(element => element.couponType == 'PRODUCTO') ? 500 : 0
  2284.  
  2285.                                 setTimeout(() => {
  2286.                                     prodState.postPagoFactura(vm.pagoParams).then(function (da) {
  2287.                                         vm.enviando = false;
  2288.                                         if (da.data == null) {
  2289.                                             deleteCuponesElectronicos()
  2290.  
  2291.                                             if (vm.esSeparacion != "") {
  2292.                                                 prodState.MesaAsiento.NumOrden = prodState.MesaAsiento.esSeparacion.anterior;
  2293.                                                 prodState.dataCliente = null;
  2294.                                                 $state.transitionTo("mesas.separarcuentas");
  2295.                                             } else {
  2296.                                                 if (vm.Usuario.tipoRest == "T") {
  2297.                                                     prodState.ClienteDom = {};
  2298.                                                     prodState.dataCliente = null;
  2299.                                                     $interval.cancel(vm.intervalPromise);
  2300.                                                     $state.transitionTo("mesas.usuario");
  2301.                                                 } else {
  2302.                                                     prodState.MesaAsiento = {
  2303.                                                         Zona: vm.selTab,
  2304.                                                         Mesa: { codigoMesa: vm.Usuario.usuario[0].id },
  2305.                                                         Asiento: { codigo_SubMesa: 1 },
  2306.                                                         NumOrden: "",
  2307.                                                         personas: vm.personas
  2308.                                                     }
  2309.                                                     prodState.ClienteDom = {};
  2310.                                                     prodState.dataCliente = null;
  2311.                                                     $interval.cancel(vm.intervalPromise);
  2312.                                                     if (vm.Usuario.canalDefecto == 3) {
  2313.                                                         $state.transitionTo("clientedomi");
  2314.                                                     } else {
  2315.                                                         prodState.PedidoFuturo = null
  2316.                                                         prodState.ClienteDom = null
  2317.                                                         $state.transitionTo("tomapedido", {}, { reload: true });
  2318.                                                     }
  2319.                                                 }
  2320.                                             }
  2321.                                         } else {
  2322.                                             toaster.pop("error", "", da.data);
  2323.                                         }
  2324.                                     });
  2325.                                 }, timeout)
  2326.                             }
  2327.                         })
  2328.                    } else {
  2329.                        vm.enviando = true
  2330.  
  2331.                        addProductoCuponesElectronicos()
  2332.  
  2333.                        const timeout = vm.cuponesElectronicosAgregados
  2334.                            .some(element => element.couponType == 'PRODUCTO') ? 500 : 0
  2335.  
  2336.                        setTimeout(() => {
  2337.                            prodState.postPagoFactura(vm.pagoParams).then(function (da) {
  2338.                                vm.enviando = false;
  2339.                                if (da.data == null) {
  2340.                                    deleteCuponesElectronicos()
  2341.  
  2342.                                    if (vm.esSeparacion != "") {
  2343.                                        prodState.MesaAsiento.NumOrden = prodState.MesaAsiento.esSeparacion.anterior;
  2344.                                        prodState.dataCliente = null;
  2345.                                        $state.transitionTo("mesas.separarcuentas");
  2346.                                    } else {
  2347.                                        if (vm.Usuario.tipoRest == "T") {
  2348.                                            prodState.MesaAsiento = {
  2349.                                                Zona: vm.selTab,
  2350.                                                NumOrden: "",
  2351.                                                personas: vm.personas
  2352.                                            }
  2353.                                            prodState.ClienteDom = {};
  2354.                                            prodState.dataCliente = null;
  2355.                                            $interval.cancel(vm.intervalPromise);
  2356.                                            prodState.selectedCanal = "";
  2357.                                            $state.transitionTo("mesas.usuario");
  2358.                                        } else {
  2359.                                            prodState.MesaAsiento = {
  2360.                                                Zona: vm.selTab,
  2361.                                                Mesa: { codigoMesa: vm.Usuario.usuario[0].id },
  2362.                                                Asiento: { codigo_SubMesa: 1 },
  2363.                                                NumOrden: "",
  2364.                                                personas: vm.personas
  2365.                                            }
  2366.                                            prodState.ClienteDom = {};
  2367.                                            prodState.dataCliente = null;
  2368.                                            $interval.cancel(vm.intervalPromise);
  2369.                                            if (vm.Usuario.canalDefecto == 3) {
  2370.                                                $state.transitionTo("clientedomi");
  2371.                                            } else {
  2372.                                                prodState.PedidoFuturo = null
  2373.                                                prodState.ClienteDom = null
  2374.                                                $state.transitionTo("tomapedido", {}, { reload: true });
  2375.                                            }
  2376.                                        }
  2377.                                    }
  2378.                                } else {
  2379.                                    toaster.pop("error", "", da.data);
  2380.                                }
  2381.                            });
  2382.                        }, timeout)
  2383.                     }
  2384.                 }
  2385.             }
  2386.         }
  2387.  
  2388.         function pagarTarjeta(data){
  2389.           toaster.pop("warning","","AUTORIZANDO TARJETA(S)....");
  2390.           return prodState.postTarjetas(data).then(function(data){
  2391.               if(data.data.msg == "Error"){
  2392.                   vm.Loading = false;
  2393.                   vm.autorizando = false;
  2394.                   toaster.pop("error","","Su transaccion ha sido denegada");
  2395.               }
  2396.               if(vm.selectedPasarela.tipoConexion != "O"){
  2397.                 listaPagos();
  2398.               }
  2399.           });
  2400.         }
  2401.  
  2402.         function Salir(){
  2403.             prodState.cerrarSesion(vm.Usuario.usuario[0].id).then(function(){
  2404.                 if(vm.Usuario.tipoRest == "Q"){
  2405.                     if(vm.Orden[0].encabezado.numOrden || vm.Orden[0].encabezado.NumOrden){
  2406.                         prodState.deleteOrden(vm.Orden[0].encabezado.numOrden).then(function(){
  2407.                             vm.currentFuncion = "";
  2408.                             $state.transitionTo("ingreso",{},{reload:true});
  2409.                             vm.focus="pass";
  2410.  
  2411.                             filterCuponesElectronicosAplicados()
  2412.                         });
  2413.                     }else{
  2414.                         vm.currentFuncion = "";
  2415.                         $state.transitionTo("ingreso",{},{reload:true});
  2416.                         vm.focus="pass";
  2417.                     }
  2418.                 }else{
  2419.                     vm.currentFuncion = "";
  2420.                     $state.transitionTo("ingreso",{},{reload:true});
  2421.                     vm.focus="pass";
  2422.                 }
  2423.             });
  2424.             if (vm.intervalPromise != "") {
  2425.               $interval.cancel(vm.intervalPromise);
  2426.             }
  2427.         }
  2428.  
  2429.         function regresar(){
  2430.             if($state.current.name =="pagar.autorizacion"){
  2431.                 vm.mostrarlogo=true;
  2432.                 $state.transitionTo("pagar");
  2433.             }else{
  2434.                 if($state.current.name == "pagar.cupones.formulario.teclado"){
  2435.                     $state.transitionTo("pagar.cupones.formulario");
  2436.                 }else{
  2437.                     if($state.current.name == "pagar.cupones.formulario.teclado"){
  2438.                         $state.transitionTo("pagar.cupones");
  2439.                     }else{
  2440.                         if($state.current.name == "pagar.cupones.formulario"){
  2441.                             $state.transitionTo("pagar.cupones");
  2442.                         }else{
  2443.                             if($state.current.name == "pagar.cupones.digitalizar"){
  2444.                                 $state.transitionTo("pagar.cupones");
  2445.                             }else{
  2446.                                 if($state.current.name == "pagar.cupones.digitalizar.teclado"){
  2447.                                     vm.selectedCampo = "";
  2448.                                     $state.transitionTo("pagar.cupones.digitalizar");
  2449.                                 }else{
  2450.                                     if($state.current.name == "pagar.cupones.digitalizar.numpad"){
  2451.                                         vm.selectedCampo = "";
  2452.                                         $state.transitionTo("pagar.cupones.digitalizar");
  2453.                                     }else{
  2454.                                         if($state.current.name == "pagar.certificados"){
  2455.                                             vm.mostrarlogo=true;
  2456.                                             $state.transitionTo("pagar");
  2457.                                         }else{
  2458.                                             if($state.current.name == "pagar.certificados.teclado"){
  2459.                                                 $state.transitionTo("pagar.certificados");
  2460.                                             }else{
  2461.                                                 if($state.current.name == "pagar.certificados.digitalizar"){
  2462.                                                     $state.transitionTo("pagar.certificados");
  2463.                                                 }else{
  2464.                                                     if($state.current.name == "pagar.certificados.digitalizar.teclado"){
  2465.                                                         $state.transitionTo("pagar.certificados.digitalizar");
  2466.                                                     }else{
  2467.                                                         if($state.current.name == "pagar.certificados.digitalizar.numpad"){
  2468.                                                             vm.selectedCampo = "";
  2469.                                                             $state.transitionTo("pagar.certificados.digitalizar");
  2470.                                                         }else{
  2471.                                                             if($state.current.name == "pagar.descuentos.digitalizar.teclado"){
  2472.                                                                 $state.transitionTo("pagar.descuentos.digitalizar");
  2473.                                                             }else{
  2474.                                                                 if($state.current.name == "pagar.descuentos.digitalizar.numpad"){
  2475.                                                                     vm.selectedCampo = "";
  2476.                                                                     $state.transitionTo("pagar.descuentos.digitalizar");
  2477.                                                                 }else{
  2478.                                                                     if($state.current.name == "pagar.descuentos.digitalizar"){
  2479.                                                                         vm.beneficios ="";
  2480.                                                                         $state.transitionTo("pagar.descuentos");
  2481.                                                                     }else{
  2482.                                                                         if($state.current.name == "pagar.datos.teclado"){
  2483.                                                                             $state.transitionTo("pagar.datos");
  2484.                                                                         }else{
  2485.                                                                             if($state.current.name == "pagar.datos.numpad"){
  2486.                                                                                 $state.transitionTo("pagar.datos");
  2487.                                                                             }else{
  2488.                                                                                 if($state.current.name == "pagar.datos"){
  2489.                                                                                     vm.mostrarlogo=true;
  2490.                                                                                     $state.transitionTo("pagar");
  2491.                                                                                 }else{
  2492.                                                                                     if($state.current.name == "pagar.tarjeta.teclado"){
  2493.                                                                                         $state.transitionTo("pagar.tarjeta");
  2494.                                                                                     }else{
  2495.                                                                                         if($state.current.name == "pagar.descuentos.valor"){
  2496.                                                                                             $state.transitionTo("pagar.descuentos");
  2497.                                                                                         }else{
  2498.                                                                                             if($state.current.name == "pagar.datos.tecladoEmpresa" || $state.current.name == "pagar.datos.tecladoConsumidor"  ){
  2499.                                                                                                 $state.transitionTo("pagar.datos");
  2500.                                                                                             }else{
  2501.                                                                                                 if($state.current.name == "pagar.giftcards"){
  2502.                                                                                                     vm.mostrarlogo=true;
  2503.                                                                                                     $state.transitionTo("pagar");
  2504.                                                                                                 }else{
  2505.                                                                                                     if($state.current.name == "pagar.giftcards.teclado"){
  2506.                                                                                                         $state.transitionTo("pagar.giftcards");
  2507.                                                                                                     }else{
  2508.                                                                                                         if($state.current.name == "pagar.giftcards.digitalizar"){
  2509.                                                                                                             $state.transitionTo("pagar.giftcards");
  2510.                                                                                                         }else{
  2511.                                                                                                             if($state.current.name == "pagar.giftcards.digitalizar.teclado"){
  2512.                                                                                                                 $state.transitionTo("pagar.giftcards.digitalizar");
  2513.                                                                                                             }else{
  2514.                                                                                                                 if($state.current.name == "pagar.giftcards.digitalizar.numpad"){
  2515.                                                                                                                     vm.selectedCampo = "";
  2516.                                                                                                                     $state.transitionTo("pagar.giftcards.digitalizar");
  2517.                                                                                                                 }else{
  2518.                                                                                                                     if($state.current.name == "pagar.excento.digitalizar"){
  2519.                                                                                                                         $state.transitionTo("pagar");
  2520.                                                                                                                     }else{
  2521.                                                                                                                         if($state.current.name == "pagar.excento.digitalizar.teclado"){
  2522.                                                                                                                             $state.transitionTo("pagar.excento.digitalizar");
  2523.                                                                                                                         }else{
  2524.                                                                                                                             if($state.current.name == "pagar.excento.digitalizar.numpad"){
  2525.                                                                                                                                 vm.selectedCampo = "";
  2526.                                                                                                                                 $state.transitionTo("pagar.excento.digitalizar");
  2527.                                                                                                                             }else{
  2528.                                                                                                                                 if ($state.current.name == "pagar.descuentocaptura") {
  2529.                                                                                                                                     vm.selectedCampo = "";
  2530.                                                                                                                                     $state.transitionTo("pagar");
  2531.                                                                                                                                 } else {
  2532.                                                                                                                                     if ($state.current.name == "pagar.pagoTengo") {
  2533.                                                                                                                                         vm.selectedCampo = "";
  2534.                                                                                                                                         $state.transitionTo("pagar");
  2535.                                                                                                                                     } else if ($state.current.name == 'pagar.pagoBipBip')
  2536.                                                                                                                                         $state.transitionTo("pagar")
  2537.                                                                                                                                     else if ($state.current.name == 'pagar.pagoBipBip.numpad')
  2538.                                                                                                                                         $state.transitionTo("pagar.pagoBipBip")
  2539.                                                                                                                                 }
  2540.                                                                                                                             }
  2541.                                                                                                                         }
  2542.                                                                                                                     }
  2543.                                                                                                                 }
  2544.                                                                                                             }
  2545.                                                                                                         }
  2546.                                                                                                     }
  2547.                                                                                                 }
  2548.                                                                                             }
  2549.                                                                                         }
  2550.                                                                                     }
  2551.                                                                                 }
  2552.                                                                             }
  2553.                                                                         }
  2554.                                                                     }
  2555.                                                                 }
  2556.                                                             }
  2557.                                                         }
  2558.                                                     }
  2559.                                                 }
  2560.                                             }
  2561.                                         }
  2562.                                     }
  2563.                                 }
  2564.                             }
  2565.                         }
  2566.                     }
  2567.                 }
  2568.             }
  2569.         }
  2570.  
  2571.         function RegTomapedido(){
  2572.             $state.transitionTo('tomapedido');
  2573.         }
  2574.  
  2575.         function mostrarTeclado(){
  2576.             if($state.current.name == "pagar.cupones.formulario"){
  2577.                 if(vm.cuponingresado.length > 0){
  2578.                     vm.ordenesDeCocina = vm.cuponingresado;
  2579.                     vm.cuponinvalido = "";
  2580.                     vm.cuponvalido = "";
  2581.                 }else{
  2582.                     vm.ordenesDeCocina = "";
  2583.                 }
  2584.             }
  2585.             vm.esInput = true;
  2586.             if(!vm.esMovil){
  2587.                 if($state.current.name =='pagar.cupones.formulario'){
  2588.                     $state.transitionTo('pagar.cupones.formulario.teclado');
  2589.                 }else{
  2590.                     if ($state.current.name == 'pagar.certificados') {
  2591.                         vm.ordenesDeCocina = ''
  2592.  
  2593.                         $state.transitionTo('pagar.certificados.teclado')
  2594.                     }else{
  2595.                         if($state.current.name == "pagar.giftcards"){
  2596.                             $state.transitionTo('pagar.giftcards.teclado');
  2597.                         }
  2598.                     }
  2599.                 }
  2600.                 vm.focus="teclado";
  2601.                 //prodState.setFocus('teclado');
  2602.                 //prodState.setFocus('teclado');
  2603.             }
  2604.         }
  2605.  
  2606.         function aplicarCupon(){
  2607.             vm.nomostrar = true;
  2608.             vm.cuponvalido = "";
  2609.             vm.cuponingresado="";
  2610.             $state.transitionTo("pagar.cupones.formulario");
  2611.         }
  2612.  
  2613.         function validarCupon() {
  2614.             if (vm.validandocupon) return
  2615.             if (vm.cuponesElectronicosAgregados.some(element => element.cuponingresado == vm.cuponingresado
  2616.                     || vm.cuponingresado.match(new RegExp(element.cuponingresado)))) {
  2617.                 vm.cuponvalido = { validado: 'EL CUPÓN YA FUE INGRESADO', valido: false }
  2618.                 return
  2619.             }
  2620.  
  2621.             const id = vm.cuponingresado
  2622.  
  2623.             vm.validandocupon = true
  2624.  
  2625.             if (vm.esCuponElectronico)
  2626.                 prodState.getCuponElectronico(id).then(response => {
  2627.                     if (response.status == 200) {
  2628.                         const cupon = response.data.cupon, estado = response.data.estado
  2629.  
  2630.                         if (cupon) {
  2631.                             const campaña = vm.cuponElectronicoCampaña.find(element => element.nombre == cupon.descripcion)
  2632.  
  2633.                             if (!jQuery.isEmptyObject(campaña)) {
  2634.                                 const validado = (() => {
  2635.                                     if (campaña.canales && !campaña.canales.split(',').includes(vm.Orden[0].encabezado.canal))
  2636.                                         return 'EL CANAL NO APLICA PARA EL CUPÓN'
  2637.                                     if (campaña.codigoDocumento && campaña.codigoDocumento != vm.Orden[0].encabezado.tipoDocumento)
  2638.                                         return 'EL DOCUMENTO NO APLICA PARA EL CUPÓN'
  2639.                                 })()
  2640.  
  2641.                                 if (validado) {
  2642.                                     vm.cuponvalido    = { validado, valido: false }
  2643.                                     vm.validandocupon = false
  2644.                                     return
  2645.                                 }
  2646.                             }
  2647.  
  2648.                             vm.cuponvalido = {
  2649.                                 couponType: cupon.couponType,
  2650.                                 couponValue: cupon.codigoCupon,
  2651.                                 descripcion: cupon.descripcion,
  2652.                                 descuentoPorcentaje: cupon.descuento_Porcentaje,
  2653.                                 descuentoValor: cupon.descuento_Valor,
  2654.                                 fecha_Final: cupon.fecha_Final,
  2655.                                 fecha_Inicial: cupon.fecha_Inicial,
  2656.                                 monto_Minimo: cupon.monto_Minimo,
  2657.                                 validado: estado.msg,
  2658.                                 valido: estado.valido == 'S'
  2659.                             }
  2660.                         } else vm.cuponvalido = { validado: estado.msg, valido: estado.valido == 'S' }
  2661.                     } else vm.cuponvalido = { validado: 'ERROR AL OBTENER INFORMACIÓN DEL CUPÓN, INTENTE NUEVAMENTE', valido: false }
  2662.  
  2663.                     vm.validandocupon = false
  2664.                 })
  2665.             else
  2666.                 prodState.redimirCupon(id).then(data => {
  2667.                     vm.cuponvalido = {
  2668.                         descripcion: data.cupon ? data.cupon.descripcion : '',
  2669.                         descuentoPorcentaje: data.cupon ? data.cupon.descuento_Porcentaje : '',
  2670.                         descuentoValor: data.cupon ? data.cupon.descuento_Valor : '',
  2671.                         fecha_Final: data.cupon ? data.cupon.fecha_Final : '',
  2672.                         fecha_Inicial: data.cupon ? data.cupon.fecha_Inicial : '',
  2673.                         monto_Minimo: data.cupon ? data.cupon.monto_Minimo : '',
  2674.                         validado: data.estado.msg,
  2675.                         valido: data.estado.valido == 'S'
  2676.                     }
  2677.  
  2678.                     vm.validandocupon = false
  2679.                 })
  2680.         }
  2681.  
  2682.         function validarCertificado(){
  2683.             if(vm.esCertificado){
  2684.                 prodState.getCertificados(vm.certificadoIngresado).then(function(data){
  2685.                     if (data.estado.valido != "N"){
  2686.                         if($filter('filter')(vm.certificadosAplicados, {correlativo:data.certificado.correlativo}).length <= 0){
  2687.                             vm.certificadosAplicados.push(data.certificado);
  2688.                         }
  2689.                     }
  2690.                     vm.certificados = data;
  2691.                 });
  2692.             }
  2693.             if(vm.esGiftcard){
  2694.                 prodState.getGiftcards(vm.giftcardIngresado).then(function(data){
  2695.                     if (data.estado.valido != "N"){
  2696.                         if($filter('filter')(vm.giftcardsAplicados, {serie:data.giftcard.serie}).length <= 0){
  2697.                             vm.giftcardsAplicados.push(data.giftcard);
  2698.                         }
  2699.                     }
  2700.                     vm.giftcards = data;
  2701.                 })
  2702.             }
  2703.         }
  2704.  
  2705.         function validarPagoTengo() {
  2706.             if (!vm.validandopago) {
  2707.                 vm.validandopago = true;
  2708.                 var data = {
  2709.                     monto: vm.tengoPagoMonto,
  2710.                     QRWallet: vm.qrTengo
  2711.                 };
  2712.                 prodState.validarPagoTengo(data).then(function (data) {
  2713.                     vm.validandopago = false;
  2714.                     vm.pagoTengoRes = data.data;
  2715.                 }).catch(function (err) {
  2716.                     vm.validandopago = false;
  2717.                 });
  2718.             }
  2719.         }
  2720.  
  2721.  
  2722.         function aplicaCupon(){
  2723.             vm.selectCuponProducts = false;
  2724.             vm.beneficios += `${vm.beneficios ? ' | ' : ''}Cupón ${vm.cuponvalido.descripcion}`
  2725.             switch (vm.cuponvalido.couponType) {
  2726.               case 'PRODUCTO':
  2727.                 vm.pagos[vm.funcionActual.funcionPago].valor = 0
  2728.                 vm.selectCuponProducts = false;
  2729.                 break;
  2730.                 case 'PORCENTAJE':
  2731.                     var valorDescuento = parseFloat((vm.cuponvalido.descuentoPorcentaje / 100) * vm.Orden[0].encabezado.subtotal);
  2732.                     vm.descuentosAplicados.push({
  2733.                         codigo_descuento: 1,
  2734.                         numOrden: vm.Orden[0].encabezado.numOrden,
  2735.                         valor: valorDescuento,
  2736.                         titulo: 'CUPON DESCUENTO',
  2737.                         cuponingresado: vm.cuponingresado
  2738.                     });
  2739.                     vm.descuentoAplicado = parseFloat(vm.descuentoAplicado) + valorDescuento;
  2740.                     prodState.aplicaDescuento(vm.Orden[0].encabezado.numOrden, vm.descuentoAplicado, vm.Orden[0].encabezado.grantotal).then(function (data) {
  2741.                         vm.Orden[0].encabezado.grantotal = data.data.grantotal;
  2742.                         vm.Orden[0].encabezado.total = data.data.grantotal;
  2743.                         validarCargos();
  2744.                         calcularCambio();
  2745.                     })
  2746.                     //vm.pagos[vm.funcionActual.funcionPago].valor = parseFloat((vm.cuponvalido.descuentoPorcentaje/100) * vm.Orden[0].encabezado.subtotal);
  2747.                     //vm.beneficios = vm.beneficios + "(" + vm.pagos[vm.funcionActual.funcionPago].valor.toFixed(2).toString() + ")";
  2748.                     vm.selectCuponProducts = false;
  2749.                 break;
  2750.                 case 'DIRECTO':
  2751.                     vm.pagos[vm.funcionActual.funcionPago].valor += parseFloat(vm.cuponvalido.descuentoValor);
  2752.                     vm.beneficios += ` (Valor: ${vm.cuponvalido.couponValue})`
  2753.                     vm.selectCuponProducts = false;
  2754.                 break;
  2755.               case 'SELECT_PRODUCTO':
  2756.                 vm.pagos[vm.funcionActual.funcionPago].valor = 0
  2757.                 vm.selectCuponProducts = true;
  2758.                 getCuponElectronicoProds(vm.cuponvalido.couponValue)
  2759.                 break;
  2760.               default:
  2761.                 ''
  2762.             }
  2763.  
  2764.             const cupon = { cuponingresado: vm.cuponingresado, couponType: vm.cuponvalido.couponType }
  2765.  
  2766.             vm.cuponesElectronicosAgregados.push(cupon)
  2767.             vm.cuponesElectronicosAplicados.push(Object.assign({ codigo_Mesa: vm.Orden[0].encabezado.codigo_Mesa }, cupon))
  2768.  
  2769.             localStorageService.set('cuponesElectronicosAplicados', vm.cuponesElectronicosAplicados)
  2770.  
  2771.             vm.cuponvalido = "";
  2772.  
  2773.             vm.cuponinvalido ="";
  2774.             calcularCambio()
  2775.             if(vm.opcionActual.pedirDocumento == "S"){
  2776.                 vm.lectura.transaccion = "CP";
  2777.  
  2778.                 vm.lectura.codigoTransaccion = vm.cuponingresado;
  2779.                 vm.cuponingresado = "";
  2780.                 $state.transitionTo("pagar.cupones.digitalizar");
  2781.             }else{
  2782.               if(vm.opcionActual.pedirDocumento == "S"){
  2783.                 vm.lectura.transaccion = "CP";
  2784.  
  2785.                 vm.lectura.codigoTransaccion = vm.cuponingresado;
  2786.                 vm.cuponingresado = "";
  2787.                 pagaCarnet();
  2788.               }else{
  2789.                 if(vm.selectCuponProducts){
  2790.  
  2791.                 }else{
  2792.                   vm.mostrarlogo=true;
  2793.                   $state.transitionTo("pagar");
  2794.                 }
  2795.  
  2796.               }
  2797.  
  2798.             }
  2799.         }
  2800.  
  2801.         function aplicarTENGO() {
  2802.             vm.pagos[vm.funcionActual.funcionPago].valor = parseFloat(vm.tengoPagoMonto);
  2803.             vm.mostrarlogo=true;
  2804.             calcularCambio();
  2805.             $state.transitionTo("pagar");
  2806.         }
  2807.  
  2808.         function aplicacertificado(){
  2809.             var arreglo = "";
  2810.             if(vm.esCertificado){
  2811.                 arreglo  = vm.certificadosAplicados;
  2812.                 vm.lectura.transaccion = "CR";
  2813.                 vm.lectura.codigoTransaccion = vm.certificadoIngresado;
  2814.             }
  2815.             if(vm.esGiftcard){
  2816.                 arreglo = vm.giftcardsAplicados;
  2817.                 vm.lectura.transaccion = "GC";
  2818.                 vm.lectura.codigoTransaccion = vm.giftcardIngresado;
  2819.             }
  2820.             vm.requiereAuth = true;
  2821.             var total = 0;
  2822.             angular.forEach(arreglo, function (e,w){
  2823.                 if(vm.esCertificado){
  2824.                     total = total + e.total;
  2825.                 }
  2826.                 if(vm.esGiftcard){
  2827.                     total = total + e.valor;
  2828.                 }
  2829.  
  2830.             });
  2831.             vm.pagos[vm.funcionActual.funcionPago].valor = total;
  2832.             calcularCambio()
  2833.             if (vm.certificadosAplicados.length == 1) {
  2834.                 $state.transitionTo("pagar.certificados.digitalizar");
  2835.             } else {
  2836.                 $state.transitionTo("pagar");
  2837.             }
  2838.  
  2839.         }
  2840.  
  2841.         function reversarCertificados(certificados){
  2842.             var invalidos = "";
  2843.             var arreglo = "";
  2844.             if(vm.esCertificado){
  2845.                 arreglo = vm.certificadosAplicados;
  2846.             }
  2847.  
  2848.             if(vm.esGiftcard){
  2849.                 arreglo = vm.giftcardsAplicados;
  2850.             }
  2851.             angular.forEach(certificados, function(c,w){
  2852.                 vm.requiereAuth = true;
  2853.                 if(vm.esCertificado){
  2854.                     var res = $filter('filter')(arreglo, {correlativo:c.correlativo});
  2855.                 }
  2856.                 if(vm.esGiftcard){
  2857.                     var res = $filter('filter')(arreglo, {serie:c.serie});
  2858.                 }
  2859.  
  2860.                 var indice = arreglo.indexOf(res[0]);
  2861.                 if(indice >= 0){
  2862.                     arreglo.splice(indice,1);
  2863.                     if(vm.esCertificado){
  2864.                         invalidos = invalidos + c.correlativo + ",";
  2865.                     }
  2866.  
  2867.                     if(vm.esGiftcard){
  2868.                         invalidos = invalidos + c.serie + ",";
  2869.                     }
  2870.                 }
  2871.             });
  2872.             if(vm.esCertificado){
  2873.                 vm.certificadosAplicados = arreglo;
  2874.             }
  2875.  
  2876.             if(vm.esGiftcard){
  2877.                 vm.giftcardsAplicados = arreglo;
  2878.             }
  2879.  
  2880.             var total = 0;
  2881.             angular.forEach(arreglo, function (e,w){
  2882.                 total = total + e.total;
  2883.             });
  2884.             var tit = "";
  2885.             if(vm.esCertificado){
  2886.                 vm.pagos[3].valor = total;
  2887.                 tit = "Certificados";
  2888.             }
  2889.  
  2890.             if(vm.esGiftcard){
  2891.                 vm.pagos[5].valor = total;
  2892.                 tit = "Giftcards";
  2893.             }
  2894.             calcularCambio();
  2895.             toaster.pop("error","Atencion", tit + " invalidos " + invalidos,4000);
  2896.         }
  2897.  
  2898.         function aplicarDescuento(){
  2899.             vm.nomostrar = true;
  2900.             var descuento = vm.opcionActual;
  2901.             vm.funcionActual = {nombre_Funcion : "aplicarDescuento"}
  2902.             if(descuento.esAbierto == "S"){
  2903.                 vm.primero = true;
  2904.                 vm.monto = "0.00";
  2905.                 vm.esCalculadora = true;
  2906.                 $state.transitionTo("pagar.descuentos.valor");
  2907.                 //prodState.setFocus("pass");
  2908.                 vm.focus="pass";
  2909.             }else{
  2910.                 aplicaDescuento();
  2911.             }
  2912.         }
  2913.  
  2914.         function aplicaDescManual(){
  2915.             aplicaDescuento(true);
  2916.             /*var subtotal = 0;
  2917.             var total = 0;
  2918.             var descuento = 0;
  2919.  
  2920.             if(vm.opcionActual.requiereAuth == "S"){
  2921.                 vm.requiereAuth = true;
  2922.                 if(vm.opcionActual.tipoDescuento == "M"){
  2923.                     if(vm.descuentoAplicado > 0){
  2924.                         total = vm.Orden[0].encabezado.total + vm.descuentoAplicado;
  2925.                     }
  2926.                     descuento = parseFloat(vm.monto);
  2927.                     //subtotal = vm.Orden[0].encabezado.subtotal - descuento;
  2928.                     total = vm.Orden[0].encabezado.total - descuento;
  2929.                 }else{
  2930.                     var valor=0;
  2931.                     if(parseInt(vm.monto) > 1){
  2932.                         valor = parseInt(vm.monto)/100;
  2933.                     }else{
  2934.                         valor = vm.monto;
  2935.                     }
  2936.                     if(vm.descuentoAplicado >= 0){
  2937.                         //subtotal = vm.Orden[0].encabezado.subtotal + descuento;
  2938.                         total = (vm.Orden[0].encabezado.total + vm.descuentoAplicado);
  2939.                     }
  2940.                     if(vm.opcionActual.aplica_aisv == "S"){
  2941.                         descuento = parseFloat(valor) * vm.Orden[0].encabezado.subtotal;
  2942.                     }else{
  2943.                         descuento = parseFloat(valor) * vm.Orden[0].encabezado.total;
  2944.                     }
  2945.  
  2946.                     //subtotal = vm.Orden[0].encabezado.subtotal - descuento;
  2947.                     total = vm.Orden[0].encabezado.total - descuento;
  2948.                 }
  2949.                 vm.beneficios += "(" + descuento.toFixed(2) +")";
  2950.                 vm.Autorizado = false;
  2951.                 if(vm.opcionActual.pedirDocumento == "S"){
  2952.                     vm.lectura = {
  2953.                         identidad : "",
  2954.                         nombre : "",
  2955.                         nacimiento : "",
  2956.                         codigoTransaccion : "",
  2957.                         transaccion : "",
  2958.                         numOrden : ""
  2959.                     }
  2960.                     vm.dataIngresada = "";
  2961.                     //vm.totalesTemporal.subtotal = subtotal;
  2962.                     vm.totalesTemporal.total = total;
  2963.                     vm.totalesTemporal.descuentoAplicado = descuento;
  2964.                     calcularCambio();
  2965.                     vm.lectura.transaccion = "DS";
  2966.                     vm.lectura.codigoTransaccion = vm.opcionActual.codigoDescuento;
  2967.                     $state.transitionTo("pagar.descuentos.digitalizar");
  2968.                     vm.focus ="lectura";
  2969.                 }else{
  2970.                     //vm.Orden[0].encabezado.subtotal = subtotal;
  2971.                     vm.descuentoAplicadoCodigo = vm.opcionActual.codigoDescuento;
  2972.                     vm.Orden[0].encabezado.total = total;
  2973.                     vm.descuentoAplicado = descuento;
  2974.                     calcularCambio();
  2975.                     vm.lectura.transaccion = "DS";
  2976.                     vm.lectura.codigoTransaccion = vm.opcionActual.codigoDescuento;
  2977.                     vm.mostrarlogo=true;
  2978.                     $state.transitionTo("pagar");
  2979.                 }
  2980.             }*/
  2981.         }
  2982.  
  2983.         function aplicaDescuento(esManual){
  2984.             var esManual;
  2985.             if(esManual == undefined){
  2986.                 esManual = false;
  2987.             }
  2988.             var total = 0;
  2989.             var subtotal = 0;
  2990.             var descuento = 0;
  2991.             var proceder = true;
  2992.             var totaldescuento = 0;
  2993.             var total2 = 0;
  2994.             vm.funcionActual = {nombre_Funcion : "aplicaDescuento"};
  2995.             if(vm.opcionActual.codigoDescuento){
  2996.                 if(vm.opcionActual.requiereAuth == "S"){
  2997.                     vm.requiereAuth = true;
  2998.                     vm.beneficios = "Descuento | " + vm.opcionActual.descripcion;
  2999.                     angular.forEach(vm.descuentosAplicados, function(row,key){
  3000.                         if(vm.opcionActual.sobreDescuento == "S"){
  3001.                             if(row.codigo_descuento == vm.opcionActual.codigoDescuento){
  3002.                                 if(vm.opcionActual.esMultiple == "S"){
  3003.                                     proceder = true;
  3004.                                 }else{
  3005.                                     proceder = false;
  3006.                                     toaster.pop("error","","Este descuento no se puede aplicar mas de una vez");
  3007.                                 }
  3008.                             }
  3009.                         }
  3010.                         totaldescuento = totaldescuento + row.valor;
  3011.                     });
  3012.  
  3013.                     if(vm.opcionActual.minimo != null){
  3014.                         if(vm.opcionActual.minimo <= vm.Orden[0].encabezado.grantotal){
  3015.                             proceder=true;
  3016.                         }else{
  3017.                             proceder = false;
  3018.                             toaster.pop('error',"Debe cumplir con el monto minimo de " + vm.opcionActual.minimo);
  3019.                         }
  3020.                     }
  3021.                    
  3022.  
  3023.                     if(proceder){
  3024.                         ///EN CASO SEA MONTO MANUAL
  3025.                         if(vm.opcionActual.tipoDescuento == "M"){
  3026.                             if(totaldescuento > 0){
  3027.                                 total = vm.Orden[0].encabezado.grantotal + totaldescuento;
  3028.                                 total2 = vm.Orden[0].encabezado.total + totaldescuento;
  3029.                             }else{
  3030.                                 total = vm.Orden[0].encabezado.grantotal;
  3031.                                 total2 = vm.Orden[0].encabezado.total;
  3032.                             }
  3033.  
  3034.                             if(vm.opcionActual.maximo != null){
  3035.                                 if(parseFloat(vm.Orden[0].encabezado.total) >= vm.opcionActual.maximo){
  3036.                                     if(esManual){
  3037.                                         descuento = parseFloat(vm.monto);
  3038.                                     }else{
  3039.                                         descuento = vm.opcionActual.monto;
  3040.                                     }
  3041.                                 }else{
  3042.                                     if(esManual){
  3043.                                         descuento = parseFloat(vm.monto);
  3044.                                     }else{
  3045.                                         descuento = vm.opcionActual.monto;
  3046.                                     }
  3047.                                 }
  3048.                             }else{
  3049.                                 if(esManual){
  3050.                                     descuento = parseFloat(vm.monto);
  3051.                                 }else{
  3052.                                     descuento = vm.opcionActual.monto;
  3053.                                 }
  3054.                             }
  3055.                             if(vm.opcionActual.aplica_aisv == "S"){
  3056.                                 totaldescuento = totaldescuento + descuento;
  3057.                                 total = total- totaldescuento;
  3058.                                 total2 = total2 - totaldescuento;
  3059.                             }else{
  3060.                               prodState.aplicaDescuento(vm.Orden[0].encabezado.numOrden, totaldescuento + descuento, vm.Orden[0].encabezado.grantotal).then(function(data) {
  3061.                                     total = data.data.grantotal;
  3062.                                     total2 = data.data.grantotal;
  3063.                                     totaldescuento  = totaldescuento + descuento;
  3064.                                     vm.beneficios += "(" + descuento.toFixed(2) +")";
  3065.                                     vm.Autorizado = false;
  3066.                                     if(vm.opcionActual.pedirDocumento == "S"){
  3067.                                         vm.totalesTemporal.total = total;
  3068.                                         vm.totalesTemporal.total2 = total2;
  3069.                                         vm.totalesTemporal.subtotal = subtotal;
  3070.                                         vm.totalesTemporal.descuentoAplicado = totaldescuento;
  3071.                                         vm.totalesTemporal.descuento = descuento;
  3072.                                         vm.totalesTemporal.titulo = vm.opcionActual.descripcion;
  3073.                                         vm.anio = "";
  3074.                                         vm.mes = "";
  3075.                                         vm.dia ="";
  3076.                                         vm.dataIngresada = "";
  3077.                                         vm.lectura = {
  3078.                                             identidad : "",
  3079.                                             nombre : "",
  3080.                                             nacimiento : "",
  3081.                                             codigoTransaccion : "",
  3082.                                             transaccion : "",
  3083.                                             numOrden : ""
  3084.                                         }
  3085.                                         calcularCambio();
  3086.                                         vm.lectura.transaccion = "DS";
  3087.                                         vm.lectura.codigoTransaccion = vm.opcionActual.codigoDescuento;
  3088.                                         vm.focus="lectura";
  3089.                                         prodState.getFormDigDescuento(vm.opcionActual.codigoDescuento).then(function(data) {
  3090.                                             vm.descuentoForm = data.data;
  3091.                                             $state.transitionTo("pagar.descuentos.digitalizar");
  3092.                                             vm.focus = "lectura";
  3093.                                         })
  3094.                                         //prodState.setFocus("lectura");
  3095.                                     }else{
  3096.                                         if(vm.opcionActual.pedirDocumento == "C"){
  3097.                                           vm.totalesTemporal.total = total;
  3098.                                           vm.totalesTemporal.total2 = total2;
  3099.                                           vm.totalesTemporal.subtotal = subtotal;
  3100.                                           vm.totalesTemporal.descuentoAplicado = totaldescuento;
  3101.                                           vm.totalesTemporal.descuento = descuento;
  3102.                                           vm.totalesTemporal.titulo = vm.opcionActual.descripcion;
  3103.  
  3104.                                           vm.lectura = {
  3105.                                               identidad : "",
  3106.                                               nombre : "",
  3107.                                               nacimiento : "",
  3108.                                               codigoTransaccion : "",
  3109.                                               transaccion : "",
  3110.                                               numOrden : ""
  3111.                                           }
  3112.                                           vm.lectura.transaccion = "DS";
  3113.                                           vm.lectura.codigoTransaccion = vm.opcionActual.codigoDescuento;
  3114.                                           vm.numOrden = vm.Orden[0].encabezado.numOrden;
  3115.                                           calcularCambio();
  3116.                                           pagaCarnet();
  3117.                                         }else{
  3118.                                           vm.descuentoAplicadoCodigo = vm.opcionActual.codigoDescuento;
  3119.                                           vm.descuentoAplicado = totaldescuento;
  3120.                                           //vm.Orden[0].encabezado.subtotal = subtotal;
  3121.                                           vm.Orden[0].encabezado.grantotal = total;
  3122.                                           vm.Orden[0].encabezado.total = total2;
  3123.                                           vm.descuentosAplicados.push({
  3124.                                               codigo_descuento : vm.opcionActual.codigoDescuento,
  3125.                                               numOrden : vm.Orden[0].encabezado.numOrden,
  3126.                                               valor : descuento,
  3127.                                               titulo : vm.opcionActual.descripcion
  3128.                                           });
  3129.                                           calcularCambio();
  3130.                                           vm.lectura.transaccion = "DS";
  3131.                                           vm.lectura.codigoTransaccion = vm.opcionActual.codigoDescuento;
  3132.                                           vm.mostrarlogo=true;
  3133.                                           $state.transitionTo("pagar");
  3134.                                         }
  3135.                                     }
  3136.                               })
  3137.  
  3138.                             }
  3139.                         }else{
  3140.                             //EN CASO SEA MONTO PORCENTUAL
  3141.                             if(vm.opcionActual.tipoDescuento == "P"){
  3142.                                 if(totaldescuento > 0){
  3143.                                     //subtotal = vm.Orden[0].encabezado.subtotal + descuento;
  3144.                                     total = vm.Orden[0].encabezado.grantotal + totaldescuento;
  3145.                                     total2 = vm.Orden[0].encabezado.total + totaldescuento;
  3146.                                 }
  3147.                                 if(vm.opcionActual.maximo != null ){
  3148.                                     if(parseFloat(vm.Orden[0].encabezado.total) >= vm.opcionActual.maximo){
  3149.                                         if(esManual){
  3150.                                             descuento = parseFloat(parseInt(vm.monto)/100) * vm.opcionActual.maximo;
  3151.                                         }else{
  3152.                                             descuento = parseFloat(parseInt(vm.opcionActual.porcentaje)/100) * vm.opcionActual.maximo;
  3153.                                         }
  3154.                                     }else{
  3155.                                         if(vm.opcionActual.aplica_aisv == "S"){
  3156.                                             if(esManual){
  3157.                                                 descuento = parseFloat(parseInt(vm.monto)/100) * vm.Orden[0].encabezado.subtotal;
  3158.                                             }else{
  3159.                                                 descuento = parseFloat(parseInt(vm.opcionActual.porcentaje)/100) * vm.Orden[0].encabezado.subtotal;
  3160.                                             }
  3161.                                         }else{
  3162.                                             if(esManual){
  3163.                                                 descuento = parseFloat(parseInt(vm.monto)/100) * vm.Orden[0].encabezado.total;
  3164.                                             }else{
  3165.                                                 descuento = parseFloat(parseInt(vm.opcionActual.porcentaje)/100) * vm.Orden[0].encabezado.total;
  3166.                                             }
  3167.                                         }
  3168.                                     }
  3169.                                 }else{
  3170.                                     if(vm.opcionActual.aplica_aisv == "S"){
  3171.                                         if(esManual){
  3172.                                             descuento = parseFloat(parseInt(vm.monto)/100) * vm.Orden[0].encabezado.subtotal;
  3173.                                         }else{
  3174.                                             descuento = parseFloat(parseInt(vm.opcionActual.porcentaje)/100) * vm.Orden[0].encabezado.subtotal;
  3175.                                             if(vm.opcionActual.porcentaje == 100){
  3176.                                               //vm.Orden[0].encabezado.grantotal = vm.Orden[0].encabezado.grantotal - parseFloat(vm.Orden[0].encabezado.impuestos);
  3177.                                             }
  3178.                                         }
  3179.                                     }else{
  3180.                                         if(esManual){
  3181.                                             descuento = parseFloat(parseInt(vm.monto)/100) * vm.Orden[0].encabezado.total;
  3182.                                         }else{
  3183.                                             descuento = parseFloat(parseInt(vm.opcionActual.porcentaje)/100) * vm.Orden[0].encabezado.total;
  3184.                                         }
  3185.                                     }
  3186.                                 }
  3187.                             }else{
  3188.                                 if(vm.opcionActual.tipoDescuento == "E"){
  3189.                                     descuento = parseFloat(vm.Orden[0].encabezado.impuestos);
  3190.                                 }
  3191.                             }
  3192.                             prodState.aplicaDescuento(vm.Orden[0].encabezado.numOrden, totaldescuento + descuento, vm.Orden[0].encabezado.grantotal).then(function(data) {
  3193.                               total = data.data.grantotal;
  3194.                               total2 = data.data.grantotal;
  3195.                               totaldescuento  = totaldescuento + descuento;
  3196.  
  3197.                               vm.beneficios += "(" + descuento.toFixed(2) +")";
  3198.                               vm.Autorizado = false;
  3199.                               if(vm.opcionActual.pedirDocumento == "S"){
  3200.                                   vm.totalesTemporal.total = total;
  3201.                                   vm.totalesTemporal.total2 = total2;
  3202.                                   vm.totalesTemporal.subtotal = subtotal;
  3203.                                   vm.totalesTemporal.descuentoAplicado = totaldescuento;
  3204.                                   vm.totalesTemporal.descuento = descuento;
  3205.                                   vm.totalesTemporal.titulo = vm.opcionActual.descripcion;
  3206.                                   vm.anio = "";
  3207.                                   vm.mes = "";
  3208.                                   vm.dia ="";
  3209.                                   vm.dataIngresada = "";
  3210.                                   vm.lectura = {
  3211.                                       identidad : "",
  3212.                                       nombre : "",
  3213.                                       nacimiento : "",
  3214.                                       codigoTransaccion : "",
  3215.                                       transaccion : "",
  3216.                                       numOrden : ""
  3217.                                   }
  3218.                                   calcularCambio();
  3219.                                   vm.lectura.transaccion = "DS";
  3220.                                   vm.lectura.codigoTransaccion = vm.opcionActual.codigoDescuento;
  3221.                                   prodState.getFormDigDescuento(vm.opcionActual.codigoDescuento).then(function(data) {
  3222.                                     vm.descuentoForm = data.data;
  3223.                                         vm.focus="lectura";
  3224.                                         $state.transitionTo("pagar.descuentos.digitalizar");
  3225.                                     })
  3226.                                  
  3227.                                   //prodState.setFocus("lectura");
  3228.                                   vm.focus = "lectura";
  3229.                               }else{
  3230.                                   if(vm.opcionActual.pedirDocumento == "C"){
  3231.                                     vm.totalesTemporal.total = total;
  3232.                                     vm.totalesTemporal.total2 = total2;
  3233.                                     vm.totalesTemporal.subtotal = subtotal;
  3234.                                     vm.totalesTemporal.descuentoAplicado = totaldescuento;
  3235.                                     vm.totalesTemporal.descuento = descuento;
  3236.                                     vm.totalesTemporal.titulo = vm.opcionActual.descripcion;
  3237.  
  3238.                                     vm.lectura = {
  3239.                                         identidad : "",
  3240.                                         nombre : "",
  3241.                                         nacimiento : "",
  3242.                                         codigoTransaccion : "",
  3243.                                         transaccion : "",
  3244.                                         numOrden : ""
  3245.                                     }
  3246.                                     vm.lectura.transaccion = "DS";
  3247.                                     vm.lectura.codigoTransaccion = vm.opcionActual.codigoDescuento;
  3248.                                     vm.numOrden = vm.Orden[0].encabezado.numOrden;
  3249.                                     calcularCambio();
  3250.                                     pagaCarnet();
  3251.                                   }else{
  3252.                                     vm.descuentoAplicadoCodigo = vm.opcionActual.codigoDescuento;
  3253.                                     vm.descuentoAplicado = totaldescuento;
  3254.                                     //vm.Orden[0].encabezado.subtotal = subtotal;
  3255.                                     vm.Orden[0].encabezado.grantotal = total;
  3256.                                     vm.Orden[0].encabezado.total = total2;
  3257.                                     vm.descuentosAplicados.push({
  3258.                                         codigo_descuento : vm.opcionActual.codigoDescuento,
  3259.                                         numOrden : vm.Orden[0].encabezado.numOrden,
  3260.                                         valor : descuento,
  3261.                                         titulo : vm.opcionActual.descripcion
  3262.                                     });
  3263.                                     calcularCambio();
  3264.                                     vm.lectura.transaccion = "DS";
  3265.                                     vm.lectura.codigoTransaccion = vm.opcionActual.codigoDescuento;
  3266.                                     vm.mostrarlogo=true;
  3267.                                     $state.transitionTo("pagar");
  3268.                                   }
  3269.                               }
  3270.                             })
  3271.                             //total = vm.Orden[0].encabezado.grantotal - descuento;
  3272.  
  3273.                             //total2 = vm.Orden[0].encabezado.total - descuento;
  3274.                         }
  3275.  
  3276.                     }
  3277.                 }
  3278.             }
  3279.         }
  3280.  
  3281.         function aplicar(opcion){
  3282.             vm.opcionActual = opcion;
  3283.             if(opcion.codigoDescuento){
  3284.                 aplicarDescuento(opcion);
  3285.             }else{
  3286.                 if(opcion.codigo_Cupon){
  3287.                     aplicarCupon(opcion);
  3288.                 }
  3289.             }
  3290.  
  3291.         }
  3292.  
  3293.         function selectMonto(){
  3294.             vm.monto = "";
  3295.         }
  3296.  
  3297.         function selectPasarela(pass){
  3298.             if (pass.tipoConexion == "C") {
  3299.                 listaPagos();
  3300.                 vm.intervalPromise = $interval(function(){
  3301.                     consTarjetas();
  3302.                 },3000);
  3303.             }
  3304.             vm.selectedPasarela = pass;
  3305.         }
  3306.  
  3307.         function parsearTarjeta(){
  3308.             if(vm.lecturaTarjeta.length>0){
  3309.                 var result = vm.lecturaTarjeta.split("^");
  3310.                 vm.txtTarjeta = result[0].substring(1,result[0].length);
  3311.                 vm.txtNombre = result[1];
  3312.                 vm.txtVence = result[2].substring(2,4) + "/" + result[2].substring(0,2);
  3313.             }
  3314.         }
  3315.  
  3316.         function parsearIdentidad() {
  3317.             if (vm.pais === "HN") {
  3318.                 if (vm.dataIngresada.length > 0) {
  3319.                     var datos = vm.dataIngresada.split(",");
  3320.                     if (datos.length > 10) {
  3321.                         vm.lectura.identidad = datos[2];
  3322.                         vm.lectura.nombre = datos[3] + " " + datos[4] + " " + datos[5] + " " + datos[6];
  3323.                         vm.anio = datos[10].substring(4, 8);
  3324.                         vm.mes = datos[10].substring(2, 4);
  3325.                         vm.dia = datos[10].substring(0, 2);
  3326.                     }
  3327.                 }
  3328.             }
  3329.             if (vm.pais === "SV") {
  3330.                 if (vm.dataIngresada.length > 0) {
  3331.                     var datos = vm.dataIngresada.split("]]");
  3332.                     if (datos.length > 6) {
  3333.                         vm.lectura.identidad = datos[0].substring(2, 10);
  3334.                         vm.lectura.nombre = datos[2] + " " + datos[1];
  3335.                         vm.anio = datos[9].substring(6, 10);
  3336.                         vm.mes = datos[9].substring(3, 5);
  3337.                         vm.dia = datos[9].substring(0, 2);
  3338.                     }
  3339.                 }
  3340.             }
  3341.  
  3342.  
  3343.         }
  3344.  
  3345.         function clienteDatos(){
  3346.             if(vm.dataCliente.consumidor.length ==0){
  3347.                 vm.dataCliente.consumidor = "";
  3348.             }
  3349.             if(vm.dataCliente.rtn.length ==0){
  3350.                 vm.dataCliente.rtn = "";
  3351.             }
  3352.             if(vm.dataCliente.empresa.length == 0){
  3353.                 vm.dataCliente.empresa = "";
  3354.             }
  3355.             $state.transitionTo("pagar.datos");
  3356.         }
  3357.  
  3358.         function salvarDatosCliente(){
  3359.             if(vm.dataCliente.empresa.length > 0 || !vm.encontradoCliente){
  3360.                 if (vm.dataCliente.rtn.length > 0) {
  3361.                         prodState.dataCliente = vm.dataCliente;
  3362.                         if(!vm.encontradoCliente){
  3363.                             prodState.saveEmpresa(vm.dataCliente).then(function(res){
  3364.                                 vm.pagoParams.cliente = vm.dataCliente;
  3365.                                 vm.mostrarlogo=true;
  3366.                                 $state.transitionTo("pagar");
  3367.                             })
  3368.                         }else{
  3369.                             vm.pagoParams.cliente = vm.dataCliente;
  3370.                             vm.mostrarlogo=true;
  3371.                             $state.transitionTo("pagar");
  3372.                         }
  3373.                     }else{
  3374.                       if(vm.dataCliente.ordenCompraEx.length < 0){
  3375.                         toaster.pop("error","","Debe llenar todos los datos")
  3376.                       }
  3377.                     }
  3378.             }
  3379.  
  3380.             if(vm.dataCliente.ordenCompraEx.length > 0){
  3381.               if(vm.dataCliente.constanciaRegistroEx.length > 0){
  3382.                 if(vm.dataCliente.registroSAG.length > 0){
  3383.                   vm.pagoParams.cliente = vm.dataCliente;
  3384.                   vm.mostrarlogo=true;
  3385.                   $state.transitionTo("pagar");
  3386.                 }else{
  3387.                   toaster.pop("error","","Debe llenar todos los datos de EXENTOS")
  3388.                 }
  3389.               }else{
  3390.                 toaster.pop("error","","Debe llenar todos los datos de EXENTOS")
  3391.               }
  3392.             }else{
  3393.               toaster.pop("error","","Debe llenar todos los datos de EXENTOS")
  3394.             }
  3395.         }
  3396.  
  3397.         function consTarjetas() {
  3398.           getTarjetas(vm.Orden[0].encabezado.numOrden).then(function(data){
  3399.               vm.currentLimPago = "tarjs";
  3400.  
  3401.               if (data.tarjetas.length > 0) {
  3402.                   vm.Tarjetas = data.tarjetas;
  3403.                   vm.paramsLimPago = vm.Tarjetas;
  3404.                   var total = 0;
  3405.                   var dev = 0;
  3406.                   angular.forEach(data.tarjetas, function (m, r) {
  3407.                       if (m.aprobada == "S") {
  3408.                           total = total + parseFloat(m.monto);
  3409.                           dev = dev + parseFloat(m.devolucion)
  3410.                           toaster.pop('success','',"Nuevo Pago en Tarjeta")
  3411.                           if(vm.intervalPromise != null){
  3412.                             $interval.cancel(vm.intervalPromise);
  3413.                             vm.intervalPromise = null;
  3414.                           }
  3415.                       }
  3416.                   })
  3417.                   vm.pagos[2].valor = total;
  3418.                   calcularCambio();
  3419.               }
  3420.           })
  3421.         }
  3422.  
  3423.         function listaPagos(){
  3424.             vm.mostrarlogo = false;
  3425.             vm.currentLimPago = "";
  3426.             vm.paramsLimPago = "";
  3427.             if(vm.Orden[0].encabezado.numOrden){
  3428.               consTarjetas();
  3429.             }
  3430.  
  3431.  
  3432.             if(vm.Tarjetas.length > 0){
  3433.                 vm.currentLimPago = "tarjs";
  3434.                 vm.paramsLimPago = vm.Tarjetas;
  3435.             }else{
  3436.                 if(vm.descuentosAplicados.length > 0){
  3437.                     vm.currentLimPago = "desc";
  3438.                     vm.paramsLimPago = vm.descuentosAplicados
  3439.                 }else{
  3440.                     if(vm.certificadosAplicados.length > 0 ){
  3441.                         vm.currentLimPago = "cert";
  3442.                         vm.paramsLimPago = vm.certificadosAplicados;
  3443.                     }else{
  3444.                         if(vm.giftcardsAplicados.length > 0){
  3445.                             vm.currentLimPago = "gift";
  3446.                             vm.paramsLimPago = vm.giftcardsAplicados;
  3447.                         }
  3448.                     }
  3449.                 }
  3450.             }
  3451.             $state.transitionTo("pagar.limpiarTodos");
  3452.         }
  3453.  
  3454.         function limpiarPagos(){
  3455.             vm.mostrarlogo = false;
  3456.             $state.transitionTo("pagar.limpiarPagos");
  3457.         }
  3458.  
  3459.         function limpiarPago(forma){
  3460.             if(forma.codigo_Pago == 1){
  3461.                 //efectivo
  3462.                 vm.pagos[forma.codigo_Pago].valor = 0.00;
  3463.             }else{
  3464.                 if(forma.codigo_Pago == 2){
  3465.                 //tarjeta
  3466.                 vm.PagoTarjeta = {
  3467.                     numtarjeta : "",
  3468.                     nombre : "",
  3469.                     vence : "",
  3470.                     monto : "",
  3471.                     autorizacion : "",
  3472.                     banco : ""
  3473.                 }
  3474.                 vm.Tarjetas = []
  3475.                 vm.pagos[forma.codigo_Pago].valor = 0.00;
  3476.                     if(vm.pagos[2].valor <= 0){
  3477.                         resetDescuentoFiscal();
  3478.                     }
  3479.                 }else{
  3480.                     if(forma.codigo_Pago == 3){
  3481.                         //certificados
  3482.                         vm.certificadoIngresado = "";
  3483.                         vm.certificados = "";
  3484.                         vm.pagos[forma.codigo_Pago].valor = 0.00;
  3485.                     }else{
  3486.                         if(forma.codigo_Pago == 4){
  3487.                             //cupon
  3488.                             vm.pagos[forma.codigo_Pago].valor = 0.00
  3489.                             vm.cuponingresado = vm.cuponvalido = ''
  3490.                             vm.cuponesElectronicosAgregados = []
  3491.  
  3492.                             filterCuponesElectronicosAplicados()
  3493.                         }else{
  3494.                           var data = {
  3495.                             cargo: forma.id,
  3496.                             orden: vm.Orden[0].encabezado.numOrden
  3497.                           }
  3498.                           prodState.anulCargo(data).then(function(s) {
  3499.                             activate();
  3500.                             $state.transitionTo("pagar");
  3501.                           })
  3502.                         }
  3503.                     }
  3504.                 }
  3505.             }
  3506.             vm.lectura.identidad = "";
  3507.             vm.lectura.nombre = "";
  3508.             vm.lectura.nacimiento = "";
  3509.             vm.mostrarlogo=false;
  3510.             calcularCambio();
  3511.             //$state.transitionTo("pagar");
  3512.         }
  3513.  
  3514.         function limpiarDescuento(){
  3515.             //vm.Orden[0].encabezado.subtotal = parseFloat(vm.Orden[0].encabezado.subtotal) + parseFloat(vm.descuentoAplicado);
  3516.             //vm.Orden[0].encabezado.total = parseFloat(vm.Orden[0].encabezado.total) + parseFloat(vm.descuentoAplicado);
  3517.             vm.descuentoAplicado = "0";
  3518.             vm.descuentosAplicados = [];
  3519.             vm.lectura.identidad = "";
  3520.             vm.lectura.nombre = "";
  3521.             vm.lectura.nacimiento = "";
  3522.             getOrden(vm.datosMesa.NumOrden).then(function () {
  3523.                 calcularCambio();
  3524.             });
  3525.         }
  3526.  
  3527.         function validarCargos(){
  3528.             vm.cargos = [];
  3529.             var totalc = 0;
  3530.             var totalca = 0;
  3531.             var row;
  3532.             angular.forEach(vm.cargos, function(r,k){
  3533.                 totalc = r.monto;
  3534.             });
  3535.             for (var i = 0; i < 5; i++) {
  3536.                 if(eval("vm.Orden[0].encabezado.cargo" + (i+1)) == vm.cargosTodos[i].id){
  3537.                     row = vm.cargosTodos[i];
  3538.                     row.monto = 0;
  3539.                     if(eval("vm.Orden[0].encabezado.montoCargo" + (i+1)) <= 0){
  3540.                         if(row.tipo == "P"){
  3541.                             if(row.antesdeISV == "S"){
  3542.                                 row.monto = parseFloat(parseInt(row.valor)/100) * vm.Orden[0].encabezado.subtotal;
  3543.                             }else{
  3544.                                 row.monto = parseFloat(parseInt(row.valor)/100) * vm.Orden[0].encabezado.total;
  3545.                             }
  3546.                         }else{
  3547.                             if(row.tipo == "M"){
  3548.                                 row.monto = row.valor;
  3549.                             }
  3550.                         }
  3551.                         totalca = parseFloat(totalca) + parseFloat(row.monto);
  3552.                         vm.cargos.push(row);
  3553.                     }else{
  3554.                         row.monto = eval("vm.Orden[0].encabezado.montoCargo" + (i+1));
  3555.                         vm.cargos.push(row);
  3556.                     }
  3557.                 }
  3558.             };
  3559.             vm.Orden[0].encabezado.total = parseFloat(vm.Orden[0].encabezado.total) - parseFloat(totalc);
  3560.             vm.Orden[0].encabezado.total = parseFloat(vm.Orden[0].encabezado.total) + parseFloat(totalca);
  3561.             calcularCambio();
  3562.         }
  3563.  
  3564.  
  3565.         /* FUNCIONES CALCULADORA */
  3566.         function suma(){
  3567.             vm.monto = vm.monto  + "+";
  3568.         }
  3569.  
  3570.         function resta(){
  3571.             vm.monto = vm.monto  + "-";
  3572.         }
  3573.  
  3574.         function multiplica(){
  3575.             vm.monto = vm.monto  + "*";
  3576.         }
  3577.  
  3578.         function divide(){
  3579.             vm.monto = vm.monto  + "/";
  3580.         }
  3581.  
  3582.         function igual(){
  3583.             vm.monto = eval(vm.monto);
  3584.         }
  3585.  
  3586.         function GetEmpresa(search){
  3587.             return prodState.getEmpresa(search).then(function(data){
  3588.                 if(data.length >0)
  3589.                     vm.encontradoCliente = true;
  3590.                 else
  3591.                     vm.encontradoCliente = false;
  3592.                 return data;
  3593.             })
  3594.         }
  3595.  
  3596.         function selectedEmpresa(selected){
  3597.             if(selected){
  3598.                 vm.dataCliente.empresa = selected.originalObject.empresa;
  3599.                 vm.dataCliente.rtn = selected.originalObject.rtn;
  3600.                 vm.encontradoCliente = true;
  3601.             }else{
  3602.                 vm.encontradoCliente = false;
  3603.                 vm.dataCliente.empresa
  3604.             }
  3605.         }
  3606.  
  3607.         function inputchanged(data){
  3608.             vm.dataCliente.empresa = data;
  3609.         }
  3610.  
  3611.         function cuponElectronico() {
  3612.             vm.esCuponElectronico = true
  3613.             vm.cuponvalido        = null
  3614.             vm.cuponingresado     = ''
  3615.  
  3616.             $state.transitionTo("pagar.cupones.formulario")
  3617.  
  3618.             const cuponesElectronicosAplicados = vm.cuponesElectronicosAplicados
  3619.                 .filter(element => element.codigo_Mesa == vm.Orden[0].encabezado.codigo_Mesa)
  3620.  
  3621.             if (!jQuery.isEmptyObject(cuponesElectronicosAplicados)) {
  3622.                 const cupones = cuponesElectronicosAplicados
  3623.                     .filter(aplicado => !vm.cuponesElectronicosAgregados
  3624.                         .some(agregado => agregado.cuponingresado == aplicado.cuponingresado))
  3625.  
  3626.                 if (!jQuery.isEmptyObject(cupones)) {
  3627.                     vm.cuponingresado = cupones[0].cuponingresado
  3628.                     validarCupon()
  3629.                 }
  3630.             }
  3631.         }
  3632.  
  3633.         function getCuponElectronicoProds(id) {
  3634.             prodState.getCuponProducto(id).then(response => {
  3635.                 if (response.status == 200) vm.cuponelectronicoProds = response.data
  3636.                 else getCuponElectronicoProds(id)
  3637.             })
  3638.         }
  3639.  
  3640.         function setCuponElectronicoProd(item){
  3641.           var dta = {
  3642.             codigo_producto: item.codigo_Producto,
  3643.             codigo_cupon: item.codigo_Cupon
  3644.           }
  3645.           if(!vm.seteandoproductocupon){
  3646.             vm.seteandoproductocupon = true;
  3647.             prodState.selectCuponElectronicoProd(vm.Orden[0].encabezado.numOrden, dta).then(function(data){
  3648.               vm.seteandoproductocupon = false;
  3649.               if(data){
  3650.                 toaster.pop('success', "", "PRODUCTO INGRESADO EXITOSAMENTE");
  3651.                 $state.transitionTo('pagar')
  3652.               }
  3653.             }).catch(function(err) {
  3654.               if(err){
  3655.  
  3656.               }
  3657.             })
  3658.           }
  3659.         }
  3660.  
  3661.         function GenerarlinkDePago(){
  3662.             vm.linkDePago = ""
  3663.             prodState.getLinkPago(vm.Orden[0].encabezado.numOrden,vm.correo).then(function(data){
  3664.                 if(data.data != "error"){
  3665.                     vm.linkDePago = data.data;
  3666.                 }else{
  3667.                     toaster.pop("warning", "" , "NO SE HA PODIDO GENERAR EL LINK DE PAGO, INTENTE DE NUEVO")
  3668.                 }
  3669.             })
  3670.             vm.intervalPromise = $interval(function(){
  3671.                 consTarjetas();
  3672.             },3000);
  3673.         }
  3674.  
  3675.         function copiarLink(){
  3676.             document.getElementById('link').select()
  3677.             document.execCommand('copy')
  3678.             toaster.pop("success", "", "Link Copiado...!")
  3679.         }
  3680.  
  3681.         function getRegalias(orden){
  3682.             return prodState.getValidarRegalia(orden);
  3683.         }
  3684.  
  3685.         function setSeleccionRegalia(item){
  3686.             var data = {
  3687.                 codigo_regalia: item.codigoRegalia,
  3688.                 codigo_producto : item.codigo_producto,
  3689.                 numOrden: vm.Orden[0].encabezado.numOrden
  3690.             }
  3691.             prodState.postValidarRegalia(data).then(function(data){
  3692.                 if(data.status == 204){
  3693.                     toaster.pop('success','','Producto de Regalia Agregado Correctamente...');
  3694.                     $state.transitionTo('pagar');
  3695.                 }
  3696.             })
  3697.         }
  3698.  
  3699.         function loadConfiguraciones() {
  3700.             prodState.getConfiguraciones().then(response => {
  3701.                 if (response.status == 200) vm.configuraciones = response.data
  3702.                 else loadConfiguraciones()
  3703.             })
  3704.         }
  3705.  
  3706.         function loadCuponElectronicoCampaña() {
  3707.             prodState.getCuponElectronicoCampaña().then(response => {
  3708.                 if (response.status == 200) vm.cuponElectronicoCampaña = response.data
  3709.                 else loadCuponElectronicoCampaña()
  3710.             })
  3711.         }
  3712.  
  3713.         function redimirCuponElectronico() {
  3714.             aplicaCupon()
  3715.             if (vm.configuraciones.requerirAutorizacionRedimirCuponElectronico && !vm.requiereAuth)
  3716.                 vm.requiereAuth = true
  3717.             toaster.pop('success', 'CUPON APLICADO EXITOSAMENTE')
  3718.         }
  3719.  
  3720.         function filterCuponesElectronicosAplicados() {
  3721.             vm.cuponesElectronicosAplicados = vm.cuponesElectronicosAplicados
  3722.                 .filter(element => element.codigo_Mesa != vm.Orden[0].encabezado.codigo_Mesa)
  3723.             localStorageService.set('cuponesElectronicosAplicados', vm.cuponesElectronicosAplicados)
  3724.         }
  3725.  
  3726.         function addProductoCuponesElectronicos() {
  3727.             if (jQuery.isEmptyObject(vm.cuponesElectronicosAgregados)) return
  3728.  
  3729.             const numOrden = vm.Orden[0].encabezado.numOrden,
  3730.                   usuario  = vm.Usuario.usuario[0].id
  3731.  
  3732.             vm.cuponesElectronicosAgregados
  3733.                 .filter(element => element.couponType == 'PRODUCTO')
  3734.                 .forEach(element => {
  3735.                     prodState.postCuponElectronico(element.cuponingresado, numOrden, usuario).then(response => {
  3736.                         if (response.status == 200)
  3737.                             if (response.data.success) {
  3738.                                 toaster.pop('success', `PRODUCTO AGREGADO DEL CUPON ${element.cuponingresado}`)
  3739.                                 return
  3740.                             } else toaster.pop('error', `ERROR AL AGREGAR PRODUCTO DEL CUPON ${element.cuponingresado}`)
  3741.                         else toaster.pop('error', `ERROR AL PROCESAR CUPON ${element.cuponingresado}`)
  3742.  
  3743.                         vm.cuponesElectronicosAgregados = vm.cuponesElectronicosAgregados
  3744.                             .filter(element_ => element_ != element)
  3745.                         localStorageService.set('cuponesElectronicosAplicados', vm.cuponesElectronicosAplicados)
  3746.                     })
  3747.                 })
  3748.         }
  3749.  
  3750.         function deleteCuponesElectronicos() {
  3751.             if (jQuery.isEmptyObject(vm.cuponesElectronicosAgregados)) return
  3752.  
  3753.             const id       = vm.cuponesElectronicosAgregados.map(agregado => agregado.cuponingresado).join(),
  3754.                   numOrden = vm.Orden[0].encabezado.numOrden,
  3755.                   usuario  = prodState.Usuario.usuario[0].id
  3756.  
  3757.             prodState.deleteCuponElectronico(id, numOrden, usuario).then(response => {
  3758.                 if (response.status == 204) {
  3759.                     console.log('Cupones electrónicos validados correctamente')
  3760.                     filterCuponesElectronicosAplicados()
  3761.                 } else {
  3762.                     console.error('Error al validar cupones electrónicos, intentando nuevamente...')
  3763.                     deleteCuponesElectronicos()
  3764.                 }
  3765.             })
  3766.         }
  3767.  
  3768.         function filterStringNumbers(string) {
  3769.             return string.replace(/[^0-9]/g, '').replace(/(\..*)\./g, '$1')
  3770.         }
  3771.     }
  3772. })();
  3773.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement