var currentFocus;

new Vue({
    el: '#appNotasDeEntregaVer',
    data: {
        id_factura: document.getElementById('id_fac').value,
        cliente: document.getElementById('id_cliente_fac').value,
        simbolo_master: '',
        div_nombre_master: '',
        div_locale: '',
        div_simbolo: '',
        div_decimal: 2,
        div_conv_factor: 1,
        factura: [],
        divisa_pagar: '',
        metodo_pagar: '',
        cuenta_pagar: '',
        message: 'I am a Text!',
        abonos: [],
        cuentas: [],
        metodos_de_pagos: [],
        formDocumentos: { 'id_factura': '', 'descripcion': '', 'documento': '' },
        documentos: [],
        monto: 0,
        restante_original: 0,
        articulosTotal: 0,
        total_pagado: 0,
        descuento: 0,
        restante: 0,
        subtotal: 0,
        total: 0,
        neto: 0,
        iva: 0,
        divisa_predeterminada: '',
        almacen_predeterminado: '',
        serie_predeterminada: '',
        sucursal_predeterminada:'',
        productos: [],
        carrito: [],
        money: {
            locale: '',
            decimal: '.',
            thousands: ',',
            prefix: '',
            suffix: '',
            precision: 2,
            masked: false /* doesn't work with directive */
        },
        moneyPagar: {
            locale: '',
            decimal: '.',
            thousands: ',',
            prefix: '',
            suffix: '',
            precision: 2,
            masked: false
        },
        moneyConver: {
            decimal: '.',
            thousands: ',',
            prefix: '',
            suffix: '',
            precision: 2,
            masked: false
        },
        moneyBs: {
            decimal: ',',
            thousands: '.',
            prefix: '',
            suffix: '',
            precision: 2,
            masked: false
        },
        cargando: false,
        errorForm: [],
        observaciones: '',
        observacion_anular: '',
        loader_correo: false,
        cargando_documento: false,
        selected_pro: '',
        creditos: [],
        ver_contenedor_campos_pagar: true,
        select_credito: '',
        impModelosDocumentos: '',
        impModelosImpresoras: '',
        toggleBarcode: false,
        ubicacionProductos: [],
        conv_factor: '',
        conv_simbolo: '',
        conv_locale: '',
        conv_precision: '',
        divisa_convertir_p: '',
        divisa_convertir_s: '',
        monto_conv: 0.00,
        diferencia_credito: 0.00,
        divisa_pagar_credito: '',
        metodo_pagar_credito: '',
        cuenta_pagar_credito: '',
        pagar_descripcion_credito: '',
        comisiones_por_agentes: [],
        agente_cliente: false,
        agente_seleccionado: { id: '', nombres: '', apellidos: '' },
        dataEditar: { id: 0, porcentaje: 1, monto: '', total: '', divisa: '', comisiones: [], id_comision: 0 },
        agentes_todos: [],
        errorAgente: [],
        generar_credito: false,
        creditosFactura: [],
        idCreditoImprimir: '',
        divisa_pagar_comision: '',
        agentes: '',
        captado: { id: '', nombre: '' },
        emp_agente: "",
        prodCompuestos:[],
        sucursales_empleado:[],
        series_empleado:[],
        compra_dolares:false,
        cuenta_compradolares:[],
        pagomovil:0,
        referencia:'',
        campos: [{cm:''}] ,
        numeroCampos:1,
        pago_movil:[],
        redesSociales:[],
        form_redes:'',
        form_descripcion:'',
        form_id:'',
        cambiar_estatus:true,
        nuevo_agente:0,
        formWhatsapp:{telefono:'',mensaje:''},
        clientes_lista:[],
        lista_tarifas:[],
        tarifa:0,
        lic: { id: '', serial: '', fecha: '',comentario:'',factura:'' },
    },
    created() {
        axios.get('notasdeentregaeditar/obtenerFactura/' + this.id_factura).then(response => {

            this.factura = response.data.factura;
            if(response.data.factura.id_agente!=null){
                this.emp_agente = response.data.factura.id_agente;
            }

            this.obtenerSucursalesEmpleado();
            this.clientes_lista=response.data.licencia;
            this.almacen_predeterminado = this.factura.id_almacen;
            this.sucursal_predeterminada = this.factura.sucursal;
            this.serie_predeterminada = this.factura.id_serie;
            this.divisa_predeterminada = this.factura.id_divisa;
            this.div_nombre_master = response.data.div_nombre;
            this.div_locale = response.data.div_locale;
            this.div_simbolo = response.data.div_simbolo;
            this.div_decimal = response.data.div_decimal;
            this.observaciones = this.factura.observaciones ?? '';

            this.moneyPagar.locale = this.money.locale = response.data.divisa.locale;
            this.moneyPagar.prefix = this.money.prefix = response.data.divisa.symbol + ' ';
            this.moneyPagar.decimal = this.money.decimal = response.data.divisa.decimal;
            this.moneyPagar.thousands = this.money.thousands = response.data.divisa.thousands;
            this.moneyPagar.precision = this.money.precision = response.data.divisa.precision;

            this.articulosTotal = response.data.articulos_cantidad;
            this.subtotal = Number(response.data.subtotal).toFixed(this.money.precision);
            this.descuento = Number(response.data.descuento).toFixed(this.money.precision);
            this.neto = Number(response.data.neto).toFixed(this.money.precision);
            this.iva = Number(response.data.iva).toFixed(this.money.precision);
            this.total = Number(response.data.total).toFixed(this.money.precision);
            this.restante_original = Number(response.data.restante).toFixed(this.money.precision);
            this.restante = Number(response.data.restante).toFixed(this.money.precision);
            this.total_pagado = Number(response.data.total_pagado).toFixed(this.money.precision);
            this.carrito = response.data.data_carrito;
            this.abonos = response.data.abonos;
            this.creditosFactura = response.data.creditos;
            this.pago_movil=response.data.pago_movil;

           
            this.obtenerAgente();
            this.obtenerRedesSociales();
            
        });
        document.getElementById('confirmarp').disabled=true;
        if (this.total_pagado >= this.total) {
            this.obtenerDocumentos();
        }

        this.obtenerCreditos();
        this.obtenerubicacionProductos();
        this.obtenerTarifas();
        
    },
    methods: {
         seleccionarTarifa(){
                $('#modal_tarifas').modal('show');
             },
             obtenerTarifas(){
                axios
                .get("notasdeentregaeditar/obtenertarifas")
                .then((response) => {
                    this.lista_tarifas = response.data;
                })
                .catch((e) => notificacion());
             },
        deleteValue: function(index) {
            this.campos.splice(index, 1);
            this.numeroCampos=this.numeroCampos-1;
            //this.$emit('input', this.campos);
          },
          addValue: function() {
            this.campos.push( { cm:''} );
            this.numeroCampos=this.numeroCampos+1;
            //this.$emit('input', this.campos);
            console.log(this.campos);
          },        
        borrarSeleccionCredito(){
            //   if(this.compra_dolares==true){
                 this.compra_dolares=false;
              // }
             },
             borrarSeleccionCompra(){
               //   if(this.compra_dolares==true){
                    this.generar_credito=false;
                     axios({
                       method: 'post',
                       url: 'notasdeentregaeditar/pagomovil',
                       data: {
                         id_factura: this.id_factura,
                         monto:this.monto
                       },
                       transformRequest: serializar(),
                     }).then(response => {
                       this.pagomovil= response.data;
                     })
                     .catch((e) => notificacion());
                 
                 // }
                },
        obtenerSucursalesEmpleado(){
            axios
            .get("notasdeentrega/obtenerSucursalesEmpleado")
            .then((response) => {
              this.sucursales_empleado = response.data.sucursales;
              this.obtenerSeriesEmpleado();
            })
            .catch((e) => notificacion());
          },
          obtenerSeriesEmpleado(){
            axios
            .get("notasdeentrega/obtenerSeriesAlmacenesEmpleado/"+ this.sucursal_predeterminada)
            .then((response) => {
                this.series_empleado = response.data.series;
            })
            .catch((e) => notificacion());
          },
        comboProductosCompuestos(producto){
            axios.get('notasdeentregaeditar/obtenerProductosCompuestos/' + producto.id).then(response => {
                if (response.data != false) {
                    this.prodCompuestos = response.data;
                    $('#modal_productoscompuesto').modal('show');
                    console.log(response.data)
                }
            }).catch(e => notificacion());
        },
        modalLicencia(row){
            this.lic.id=row.id;
            this.lic.serial=row.serial;
            this.lic.fecha=row.fecha;
            this.lic.comentario=row.comentario;
            $('#modal_licencia').modal('show');
        },
        GuardarLicencias(){
            this.lic.factura=this.id_factura;
            axios({
                method: "post",
                url: "notasdeentregaeditar/GuardarLicencias",
                data: this.lic,
                transformRequest: serializar(),
            })
                .then((response) => {
                    if(response.data==true){
                        this.lic.id = '';
                        this.lic.fecha = '';
                        this.lic.serial = '';
                        this.lic.comentario = '';
                        notificacion('fa fa-check', 'Actualizado',"Actualizado exitosamente", 'warning');
                        $('#modal_licencia').modal('hide');
                        axios.get('notasdeentregaeditar/obtenerFactura/' + this.id_factura).then(response => {
                            this.clientes_lista=response.data.licencia;
                        });
                    }else{
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                   
                   
                }).catch(e => notificacion());
        },
        obtenerAgenteCliente() {
            axios.get('notasdeentrega/obtenerAgenteCliente/' + Number(this.emp_agente)).then(response => {
                if (response.data != false) {
                    this.agente_cliente = true;
                    this.agente_seleccionado.id = this.emp_agente;
                    this.agente_seleccionado.nombres = response.data.einfo_nombres + " " + response.data.einfo_apellidos;
                }
            }).catch(e => notificacion());
        },
        obtenerAgente() {
            axios({
                method: "post",
                url: "notasdeentregaeditar/obtenerAgenteCliente",
                data: {
                    factura: this.id_factura,
                    id_agente: this.emp_agente,
                    id_cliente: this.cliente
                },
                transformRequest: serializar(),
            })
                .then((response) => {
                    this.agentes = response.data;
                    this.obtenerAgenteCliente();
                    this.captado.nombre = this.agentes.empagent_captado;
                    this.captado.id = this.agentes.empagent_empid;
                }).catch(e => notificacion());
        },
        obtenerCreditosFactura() {
            axios.get('notasdeentregaeditar/obtenerCreditosFactura/' + Number(this.id_factura)).then(response => {
                this.creditosFactura = response.data;
            }).catch(e => notificacion());
        },
        obtenerubicacionProductos() {
            axios.get('notasdeentregaeditar/obtenerubicacionProductos/' + Number(this.id_factura)).then(response => {
                this.ubicacionProductos = response.data;
            }).catch(e => notificacion());
        },
        obtenerCreditos() {
            this.ver_contenedor_campos_pagar = true;
            axios.get('notasdeentregaeditar/obtenerCreditos/' + this.cliente).then(response => {
                this.creditos = response.data;
            }).catch(e => notificacion()).finally(() => { });
        },
        pagarConCredito() {
            let input_pagar = document.getElementById('pagarmonto');
            if (this.select_credito) {
                axios.get('notasdeentregaeditar/obtenerFactor', {
                    params: {
                        id_factura: this.id_factura,
                        id_credito: this.select_credito
                    }
                }).then(response => {
                    if (response.data.errors == null) {
                        this.monto = Number(response.data).toFixed(2);
                        this.ver_contenedor_campos_pagar = false;
                        input_pagar.disabled = true;
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion()).finally(() => { });
            } else {
                this.monto = 0;
                this.ver_contenedor_campos_pagar = true;
                input_pagar.disabled = false;
            }
        },
        actualizarDetalles() {

            this.errorForm = [];

            let dataFormClienteDetalle = {
                'id': this.cliente,
                'cli_tipodoc': document.getElementById('cli_tipodoc').value,
                'cli_dni': document.getElementById('cli_dni').value,
                'cli_razon_social': document.getElementById('cli_razon_social').value,
                'cli_fecha_nac': document.getElementById('cli_fecha_nac').value,
                'cli_email': document.getElementById('cli_email').value,
                'cli_telefono': document.getElementById('cli_telefono').value,
                'cli_telefono_2': '',
                'cli_direccion': document.getElementById('cli_direccion').value,
                'cli_contribuyente': '',
                'cli_estatus': '',
                'cli_fecha_reg': '',
                'cli_genero': '',
                'cli_paisid': document.getElementById('cli_pais').value,
                'cli_estado': document.getElementById('cli_estado').value,
                'cli_ciudad': document.getElementById('cli_ciudad').value,
                'cli_codigopostal': document.getElementById('cli_codigopostal').value,
                'cli_descuento': '',
                'cli_razonsocial': '',
                'cli_natural': '',
                'cli_grupid': '',
                'cli_observaciones': '',
                'cli_lat':document.getElementById('txtLat').value,
                'cli_lng':document.getElementById('txtLng').value,
                'id_agente': this.captado.id,
                'id_captado': this.captado.nombre,
                'factura': this.id_factura
            };

            if (!dataFormClienteDetalle.cli_tipodoc)
                this.errorForm.push('El campo Tipo de Documento es obligatorio');
            if (!dataFormClienteDetalle.cli_dni)
                this.errorForm.push('El campo Número de Documento es obligatorio.');
            if (!dataFormClienteDetalle.cli_direccion)
                this.errorForm.push('El campo Dirección es obligatorio');
            if (!dataFormClienteDetalle.cli_razon_social)
                this.errorForm.push('El campo Razón Social es obligatorio.');

            if (this.errorForm.length == 0) {
                this.cargando = true;
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/guardarDetallesCliente',
                    data: dataFormClienteDetalle,
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        if (response.data == true) {
                            document.getElementById('cabecera_cliente').innerHTML = dataFormClienteDetalle.cli_razon_social + ' ' + dataFormClienteDetalle.cli_dni;
                            notificacion('fa fa-edit', '', 'Actualización exitosa', 'info');
                        }
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion()).finally(() => this.cargando = false);
            } else {
                let total_errores = this.errorForm.length
                for (let i = 0; i < total_errores; i++) {
                    notificacion('fa fa-ban', 'Advertencia', this.errorForm[i], 'warning');
                }
            }
        },
        actualizarEnvio() {

            this.errorForm = [];

            let dataFormClienteEnvio = {
                'id_factura': this.id_factura,
                'env_nombre_opcional': document.getElementById('env_nombre_opcional').value,
                'env_agencia_transporte': document.getElementById('env_agencia_transporte').value,
                'env_codigo_seguimiento': document.getElementById('env_codigo_seguimiento').value,
                'env_direccion': document.getElementById('env_direccion').value,
                'env_pais': document.getElementById('env_pais').value,
                'env_estado': document.getElementById('env_estado').value,
                'env_ciudad': document.getElementById('env_ciudad').value,
                'env_codigopostal': document.getElementById('env_codigopostal').value,
                'env_asegurado': document.getElementById('env_asegurado').checked
            };

            if (!dataFormClienteEnvio.env_agencia_transporte)
                this.errorForm.push('El campo Agencia de Tranporte es obligatorio.');
            if (!dataFormClienteEnvio.env_codigo_seguimiento)
                this.errorForm.push('El campo Código de Seguimiento es obligatorio.');
            if (!dataFormClienteEnvio.env_direccion)
                this.errorForm.push('El campo Dirección obligatorio.');
            if (!dataFormClienteEnvio.env_pais)
                this.errorForm.push('El campo País es obligatorio.');
            if (!dataFormClienteEnvio.env_estado)
                this.errorForm.push('El campo Estado es obligatorio.');
            if (!dataFormClienteEnvio.env_ciudad)
                this.errorForm.push('El campo Ciudad es obligatorio.');
            if (!dataFormClienteEnvio.env_codigopostal)
                this.errorForm.push('El campo Código Postal es obligatorio.');

            if (this.id_factura && this.cliente && this.errorForm.length == 0) {
                this.cargando = true;
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/guardarEnvioCliente',
                    data: dataFormClienteEnvio,
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        if (response.data) {
                            if (document.getElementById('env_asegurado').checked == true) {
                                notificacion('fa fa-check', '', 'Envío asegurado', 'success');
                            } else {
                                notificacion('fa fa-info', '', 'Envío No asegurado', 'info');
                            }
                        }
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion()).finally(() => this.cargando = false);
            } else {
                let total_errores = this.errorForm.length
                for (let i = 0; i < total_errores; i++) {
                    notificacion('fa fa-ban', 'Advertencia', this.errorForm[i], 'warning');
                }
            }
        },
        predeterminarDivisa(event) {
            axios.get('notasdeentregaeditar/predeterminarDivisa', {
                params: {
                    id_divisa: event.target.value,
                    id_factura: this.id_factura,
                    descuento: this.descuento
                }
            }).then(response => {
                if (response.data.errors == null) {
                    this.divisa_predeterminada = event.target.value;
                    if (response.data.data_carrito) {
                        this.money.locale = response.data.divisa.locale;
                        this.money.prefix = response.data.divisa.symbol + ' ';
                        this.money.decimal = response.data.divisa.decimal;
                        this.money.thousands = response.data.divisa.thousands;
                        this.money.precision = response.data.divisa.precision;
                        this.articulosTotal = response.data.data_carrito.articulos_cantidad;
                        this.subtotal = response.data.data_carrito.subtotal
                        this.descuento = response.data.data_carrito.descuento;
                        this.neto = response.data.data_carrito.neto;
                        this.iva = response.data.data_carrito.iva;
                        this.total = response.data.data_carrito.total;
                        this.restante = response.data.data_carrito.total;
                        this.carrito = response.data.data_carrito.carrito;
                    }
                } else {
                    let total_errores = response.data.errors.length
                    for (let i = 0; i < total_errores; i++) {
                        notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                    }
                }
            }).catch(e => notificacion());
        },
        ActualizarPrecioTarifa(){
            axios({
               method: "post",
               url: "notasdeentregaeditar/ActualizarPrecioTarifa",
               data: {
                   'tarifa':this.tarifa,
                   'id':this.id_factura,
                   'descuento_global': this.descuento,
               },
               transformRequest: serializar(),
           })
               .then((response) => {
                   if (response.data.errors == null) {
                       this.articulosTotal = response.data.articulos_cantidad;
                       this.subtotal = response.data.subtotal;
                       this.descuento = response.data.descuento;
                       this.neto = response.data.neto;
                       this.iva = response.data.iva;
                       this.total = response.data.total;
                       this.restante = response.data.total;
                       $('#modal_tarifas').modal('hide');
                       Object.keys(response.data.carrito).forEach((key, i) => {
                           this.carrito[key].precio = response.data.carrito[key].precio;
                           this.carrito[key].neto = response.data.carrito[key].neto;
                           this.carrito[key].total = response.data.carrito[key].total;
                           this.carrito[key].tarifa = response.data.carrito[key].tarifa;
                       });
                   } else {
                       let total_errores = response.data.errors.length
                       for (let i = 0; i < total_errores; i++) {
                           notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                       }
                   }
               }).catch(e => notificacion());
       },
        actualizarPrecio(unique, event) {
            let precio = convertir_a_float(event.target.value);
            if (event.target.value && precio > 0 && unique && this.cliente && this.errorForm.length == 0) {
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/actualizarPrecio',
                    data: {
                        'unique': unique,
                        'precio': event.target.value,
                        'descuento_global': this.descuento,
                        'id_factura': this.id_factura
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        this.articulosTotal = response.data.articulos_cantidad;
                        this.subtotal = response.data.subtotal;
                        this.descuento = response.data.descuento;
                        this.neto = response.data.neto;
                        this.iva = response.data.iva;
                        this.total = response.data.total;
                        this.restante = response.data.total;
                        Object.keys(response.data.carrito).forEach((key, i) => {
                            this.carrito[key].neto = response.data.carrito[key].neto;
                            this.carrito[key].total = response.data.carrito[key].total;
                        });
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion());
            }
        },
        actualizarCantidad(unique, event) {
            let cantidad = convertir_a_float(event.target.value);
            if (event.target.value && cantidad > 0 && this.errorForm.length == 0) {
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/actualizarCantidad',
                    data: {
                        id_producto: unique,
                        cantidad: event.target.value,
                        descuento_global: this.descuento,
                        id_factura: this.id_factura
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        this.articulosTotal = response.data.articulos_cantidad;
                        this.subtotal = response.data.subtotal;
                        this.descuento = response.data.descuento;
                        this.neto = response.data.neto;
                        this.iva = response.data.iva;
                        this.total = response.data.total;
                        this.restante = response.data.total;
                        Object.keys(response.data.carrito).forEach((key, i) => {
                            this.carrito[key].neto = response.data.carrito[key].neto;
                            this.carrito[key].total = response.data.carrito[key].total;
                        });
                    } else {
                        if (response.data.cantidad > 0) {
                            event.target.value = response.data.cantidad;
                        }
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion());
            }
        },
        aplicarNuevoIva(unique, id_iva) {
            this.errorForm = [];
            if (unique && id_iva && this.cliente && this.errorForm.length == 0) {
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/aplicarNuevoIva',
                    data: {
                        'id_cliente': this.cliente,
                        'unique': unique,
                        'id_iva': id_iva,
                        'descuento_global': this.descuento,
                        'id_factura': this.id_factura
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        this.articulosTotal = response.data.articulos_cantidad;
                        this.subtotal = response.data.subtotal;
                        this.descuento = response.data.descuento;
                        this.neto = response.data.neto;
                        this.iva = response.data.iva;
                        this.total = response.data.total;
                        this.restante = response.data.total;
                        this.carrito = response.data.carrito;
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion());
            } else {
                let total_errores = this.errorForm.length
                for (let i = 0; i < total_errores; i++) {
                    notificacion('fa fa-ban', 'Advertencia', this.errorForm[i], 'warning');
                }
            }
        },
        aplicarDescuentoProducto(unique, event) {
            let descuento_ = convertir_a_float(event.target.value);
            if (unique && this.cliente) {
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/aplicarDescuentoProducto',
                    data: {
                        'id_cliente': this.cliente,
                        'unique': unique,
                        'descuento': descuento_,
                        'descuento_global': this.descuento,
                        'id_factura': this.id_factura
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        this.articulosTotal = response.data.articulos_cantidad;
                        this.subtotal = response.data.subtotal;
                        this.descuento = response.data.descuento;
                        this.neto = response.data.neto;
                        this.iva = response.data.iva;
                        this.total = response.data.total;
                        this.restante = response.data.total;
                        Object.keys(response.data.carrito).forEach((key, i) => {
                            this.carrito[key].neto = response.data.carrito[key].neto;
                            this.carrito[key].total = response.data.carrito[key].total;
                        });
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion());
            } else {
                let total_errores = this.errorForm.length
                for (let i = 0; i < total_errores; i++) {
                    notificacion('fa fa-ban', 'Advertencia', this.errorForm[i], 'warning');
                }
            }
        },
        aplicarDescuentoAdicional() {
            if (!isNaN(this.descuento) && this.descuento >= 0) {
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/aplicarDescuentoAdicional',
                    data: {
                        'descuento': this.descuento,
                        'id_cliente': this.cliente,
                        'id_factura': this.id_factura
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        this.articulosTotal = response.data.articulos_cantidad;
                        this.subtotal = response.data.subtotal;
                        this.neto = response.data.neto;
                        this.iva = response.data.iva;
                        this.total = response.data.total;
                        this.restante = response.data.total;
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion());
            }
        },
        eliminarProducto(unique) {
            if (this.cliente && unique) {
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/eliminarProducto',
                    data: {
                        'id_producto': unique,
                        'id_cliente': this.cliente,
                        'descuento_global': this.descuento,
                        'id_factura': this.id_factura
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        this.articulosTotal = response.data.articulos_cantidad;
                        this.subtotal = response.data.subtotal;
                        this.descuento = response.data.descuento;
                        this.neto = response.data.neto;
                        this.iva = response.data.iva;
                        this.total = response.data.total;
                        this.restante = response.data.total;
                        this.carrito = response.data.carrito;
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion());
            }
        },
        actualizarDescripcion(unique, event) {

            this.errorForm = [];

            if (!event.target.value)
                this.errorForm.push('La descripción no debe quedar vacia.');

            if (this.cliente && this.errorForm.length == 0) {
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/actualizarDescripcion',
                    data: {
                        'id_cliente': this.cliente,
                        'id_factura': this.id_factura,
                        'unique': unique,
                        'descripcion': event.target.value,
                        'descuento_global': this.descuento,
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors) {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion());
            } else {
                let total_errores = this.errorForm.length
                for (let i = 0; i < total_errores; i++) {
                    notificacion('fa fa-ban', 'Advertencia', this.errorForm[i], 'warning');
                }
            }
        },
        guardarFactura() {

            this.errorForm = [];

            if (this.carrito.length == 0)
                this.errorForm.push('No ha seleccinado algún producto para la compra');
            if (!this.serie_predeterminada)
                this.errorForm.push('Debe seleccionar una serie');
            if (!document.getElementById('fecha').value)
                this.errorForm.push('Debe seleccionar una fecha');

            if (this.id_factura && this.cliente && this.errorForm.length == 0) {
                this.cargando = true;
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/ventaEnEsperaEditar',
                    data: {
                        'id_serie': this.serie_predeterminada,
                        'id_cliente': this.cliente,
                        'id_factura': this.id_factura,
                        'descontar_inventario': false,
                        'fecha': document.getElementById('fecha').value,
                        'observaciones': this.observaciones
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        location.href = response.data;
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion()).finally(() => this.cargando = false);
            } else {
                let total_errores = this.errorForm.length
                for (let i = 0; i < total_errores; i++) {
                    notificacion('fa fa-ban', 'Advertencia', this.errorForm[i], 'warning');
                }
            }
        },
        descontardeEstock() {

            this.errorForm = [];

            if (this.carrito.length == 0)
                this.errorForm.push('No ha seleccinado algún producto para la compra');
            if (!this.serie_predeterminada)
                this.errorForm.push('Debe seleccionar una serie');
            if (!document.getElementById('fecha').value)
                this.errorForm.push('Debe seleccionar una fecha');

            if (this.id_factura && this.cliente && this.errorForm.length == 0) {
                this.cargando = true;
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/ventaEnEsperaEditar',
                    data: {
                        'id_serie': this.serie_predeterminada,
                        'id_cliente': this.cliente,
                        'id_factura': this.id_factura,
                        'descontar_inventario': true,
                        'fecha': document.getElementById('fecha').value,
                        'observaciones': this.observaciones
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        location.href = response.data;
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion()).finally(() => this.cargando = false);
            } else {
                let total_errores = this.errorForm.length
                for (let i = 0; i < total_errores; i++) {
                    notificacion('fa fa-ban', 'Advertencia', this.errorForm[i], 'warning');
                }
            }
        },
        modalPagar() {
            document.getElementById('modal_form_pagar').reset();
            this.monto = 0.00;
            this.monto = this.monto.toFixed(this.moneyPagar.precision);
            this.errorForm = [];
            this.divisa_pagar = '';
            this.metodo_pagar = '';
            this.metodos_de_pagos = [];
            this.cuenta_pagar = '';
            this.cuentas = [];
            this.referencia='';
            axios.get('notasdeentregaeditar/comprobarFactura/' + this.id_factura).then(response => {
                if (response.data.errors == null) {
                    $('#modal_pagar').modal({ show: true, backdrop: 'static', keyboard: false });
                } else {
                    let total_errores = response.data.errors.length
                    for (let i = 0; i < total_errores; i++) {
                        notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                    }
                }
            });
        },
        obtenerMetodosSegunDivisa(event) {

            this.errorForm = [];
            this.metodo_pagar = '';
            this.metodos_de_pagos = [];
            this.cuenta_pagar = '';
            this.cuentas = [];

            if (!event.target.value)
                this.errorForm.push('La divisa es requerida');

            if (this.errorForm.length == 0) {
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/obtenerMetodosSegunDivisa',
                    data: { 'id_factura': this.id_factura, 'id_divisa': event.target.value },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        if (response.data) {
                            this.monto = 0.00;
                            this.moneyPagar.locale = response.data.divisa.locale;
                            this.moneyPagar.prefix = response.data.divisa.symbol + ' ';
                            this.moneyPagar.decimal = response.data.divisa.decimal;
                            this.moneyPagar.thousands = response.data.divisa.thousands;
                            this.moneyPagar.precision = response.data.divisa.precision;
                            this.metodos_de_pagos = response.data.data_metodos;
                            this.div_conv_factor = monedaDecimal(response.data.factor,'en-US',2);
                            this.restante_original = Number(response.data.restante).toFixed(this.moneyPagar.precision);
                            this.restante = parseFloat(response.data.restante * response.data.factor).toFixed(this.moneyPagar.precision);
                            this.monto = Number(this.monto).toFixed(this.moneyPagar.precision);
                            //this.monto = this.restante;
                        }
                    } else {
                        this.divisa_pagar = '';
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion());
            }
        },
        obtenerCuentasSegunMetodo(event) {
            this.errorForm = [];
            this.cuenta_pagar = '';
            this.cuentas = [];

            if (!event.target.value)
                this.errorForm.push('EL Método de Pago es requerido');

            if (this.errorForm.length == 0) {
                axios.get('notasdeentregaeditar/obtenerCuentasSegunMetodo/' + event.target.value).then(response => {
                    if (response.data.errors == null) {
                        if (Array.isArray(response.data)) {
                            if (response.data.length > 0) {
                                this.cuentas = response.data;
                            }
                        }
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion());
            }
        },
        pagar() {

            if (!this.ver_contenedor_campos_pagar) {
                axios.get('notasdeentregaeditar/pagarConCredito', {
                    params: {
                        id_fac: this.id_factura,
                        id_credito: this.select_credito
                    }
                }).then(response => {
                    console.log(response.data);
                    if (response.data.errors == null) {
                        if (response.data) {
                            this.monto = 0.00;
                            this.abonos = response.data.abonos;
                            this.restante_original = Number(response.data.restante).toFixed(this.moneyPagar.precision);
                            this.restante = parseFloat(response.data.restante * convertir_a_float(String(this.div_conv_factor))).toFixed(this.moneyPagar.precision);
                            this.monto = Number(this.monto).toFixed(this.moneyPagar.precision);
                            this.total_pagado = Number(response.data.total_pagado).toFixed(this.moneyPagar.precision);
                            //this.monto = this.restante;
                            if (response.data.pagado) {
                                $('#modal_pagar').modal('hide');
                                notificacion('fa fa-check', 'Advertencia', 'Total de Nota de entrega pagado', 'success');
                            } else {
                                notificacion('fa fa-check', 'Pago', 'Pago exitoso', 'success');
                            }
                        }
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                    this.obtenerCreditos();
                }).catch(e => notificacion()).finally(() => {
                    let input_pagar = document.getElementById('pagarmonto');
                    input_pagar.disabled = false;
                    input_pagar.value = '';
                });
            } else {

                this.errorForm = [];

                if (!this.divisa_pagar)
                    this.errorForm.push('El campo Divisa es obligatorio');
                if (!this.metodo_pagar)
                    this.errorForm.push('El campo Método es obligatorio');
                if (!this.cuenta_pagar)
                    this.errorForm.push('El campo Cuenta es obligatorio');
                if (!this.monto)
                    this.errorForm.push('El campo Monto es obligatorio');

                if (this.errorForm.length == 0) {
                    this.cargando = true;
                    axios({
                        method: 'post',
                        url: 'notasdeentregaeditar/pagar',
                        data: {
                            id_factura: this.id_factura,
                            id_divisa: this.divisa_pagar,
                            id_metodo_divisa: this.metodo_pagar,
                            id_cuenta_metodo: this.cuenta_pagar,
                            monto: this.monto,
                            credito: this.generar_credito,
                            compra_dolares:this.compra_dolares,
                            cuenta_pagod:JSON.stringify(this.campos),
                            referencia:this.referencia,
                            factor: convertir_a_float(String(this.div_conv_factor))
                        },
                        transformRequest: serializar(),
                    }).then(response => {
                        if (response.data.errors == null) {
                            if (response.data) {
                                this.monto = 0.00;
                                this.abonos = response.data.abonos;
                                this.pago_movil=response.data.pago_movil;
                                this.restante_original = Number(response.data.restante).toFixed(this.moneyPagar.precision);
                                this.restante = parseFloat(response.data.restante *  convertir_a_float(String(this.div_conv_factor))).toFixed(this.moneyPagar.precision);
                                this.monto = Number(this.monto).toFixed(this.moneyPagar.precision);
                                this.total_pagado = Number(response.data.total_pagado).toFixed(this.moneyPagar.precision);
                                //this.monto = this.restante;
                                if (response.data.pagado) {
                                    $('#modal_pagar').modal('hide');
                                    notificacion('fa fa-check', 'Advertencia', 'Total de nota de entrega pagado', 'success');
                                } else {
                                    notificacion('fa fa-check', 'Pago', 'Pago exitoso', 'success');
                                }
                            }
                        } else {
                            let total_errores = response.data.errors.length
                            for (let i = 0; i < total_errores; i++) {
                                notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                            }
                        }
                    }).catch(e => {
                        notificacion();
                    }).finally(() => {
                        this.cargando = false;
                        this.monto = 0;
                        this.divisa_pagar = ''
                        this.metodo_pagar = '';
                        this.cuenta_pagar = '';
                        this.campos=[]
                        this.obtenerCreditosFactura();
                    });
                } else {
                    let total_errores = this.errorForm.length
                    for (let i = 0; i < total_errores; i++) {
                        notificacion('fa fa-ban', 'Advertencia', this.errorForm[i], 'warning');
                    }
                }
            }
        },
        eliminarPago(id) {
            axios({
                method: 'post',
                url: 'notasdeentregaeditar/eliminarPago',
                data: { 'id_factura': this.id_factura, 'id': id },
                transformRequest: serializar(),
            }).then(response => {
                if (response.data.errors == null) {
                    if (response.data) {
                        this.abonos = response.data.abonos;
                        this.restante_original = Number(response.data.restante).toFixed(this.money.precision);
                        this.restante = parseFloat(response.data.restante * convertir_a_float(String(this.div_conv_factor))).toFixed(this.money.precision);
                        this.total_pagado = Number(response.data.total_pagado).toFixed(this.money.precision);
                        //this.monto = this.restante;
                        notificacion('fa fa-trash', 'Eliminado', 'Pago eliminado', 'danger');
                    }
                } else {
                    this.divisa_pagar = '';
                    let total_errores = response.data.errors.length
                    for (let i = 0; i < total_errores; i++) {
                        notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                    }
                }
            }).catch(e => notificacion());
        },
        modalCorreo() {
            $('#modal_correo').modal('show');
            $('#modal_correo').on('shown.bs.modal', function () {
                //$('#nombre_divisa').trigger('focus');
            });
        },
        enviarFactura() {

            this.errorForm = [];

            let de = document.getElementById('cor_emailde').value;
            let para = document.getElementById('cor_emailpara').value;
            let copia = document.getElementById('cor_emailcopia').value;
            let firma = document.getElementById('cor_emailfirma').value;
            let tipo = document.getElementById('cor_tipo').value;

            if (!de)
                this.errorForm.push('El campo De es obligatorio.');
            if (!para)
                this.errorForm.push('El campo Para es obligatorio.');

            if (de && para) {
                if (!validaEmail(de))
                    this.errorForm.push('El Correo Electrónico ' + de + ' no es válido.');
                if (!validaEmail(para))
                    this.errorForm.push('El Correo Electrónico ' + para + ' no es válido.');
            }

            if (this.errorForm.length == 0) {

                this.loader_correo = true;

                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/eniviarFactura',
                    data: {
                        id_factura: this.id_factura,
                        de: de,
                        para: para,
                        copia: copia,
                        firma: firma,
                        tipo: tipo
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        if (response.data) {
                            notificacion('fa fa-check', 'Enviado', response.data, 'success');
                        }
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion()).finally(() => this.loader_correo = false);
            } else {
                let total_errores = this.errorForm.length
                for (let i = 0; i < total_errores; i++) {
                    notificacion('fa fa-ban', 'Advertencia', this.errorForm[i], 'warning');
                }
            }
        },
        handleFileUpload() {
            this.formDocumentos.documento = this.$refs.file.files[0];
        },
        enviarDocumento() {

            this.errorForm = [];

            this.formDocumentos.id_factura = this.id_factura;

            if (!this.formDocumentos.descripcion)
                this.errorForm.push('El campo Descripción es obligatorio.');

            if (!this.formDocumentos.documento)
                this.errorForm.push('El Documento obligatorio.');

            if (this.errorForm.length == 0) {
                this.cargando_documento = true;
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/enviarDocumento',
                    data: this.formDocumentos,
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        if (response.data == true) {
                            this.obtenerDocumentos();
                            notificacion('fa fa-check', 'Enviado', 'documento cargado exitosamente', 'success');
                        }
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion()).finally(() => this.cargando_documento = false);
            } else {
                let total_errores = this.errorForm.length
                for (let i = 0; i < total_errores; i++) {
                    notificacion('fa fa-ban', 'Advertencia', this.errorForm[i], 'warning');
                }
            }
        },
        obtenerDocumentos() {
            axios.get('notasdeentregaeditar/obtnerDocumentos/' + this.id_factura).then(response => {
                this.documentos = response.data;
            });
        },
        moneda(num, div_locale_, div_simbolo_, decimal_ = 2) {
            if (Object.keys(this.carrito).length > 0) {
                let monto_ = convertir_a_float(String(num).toString());
                return monedaMoneda(monto_, div_locale_, div_simbolo_, decimal_);
            }
        },
        decimal(num, div_locale_, decimal_ = 2) {
            if (Object.keys(this.carrito).length > 0) {
                let monto_ = convertir_a_float(String(num).toString());
                return monedaDecimal(monto_, div_locale_, decimal_);
            }
        },
        modalConvertirDocumento() {
            $('#modal_convertir').modal({ show: true, backdrop: 'static', keyboard: false });
        },
        focusBuuscar() {
            document.getElementById('buscador').focus();
        },
        buscarProducto(event) {
            if (this.almacen_predeterminado && this.divisa_predeterminada) {
                this.searchProducto(event.target.value, event, this);
            }
        },
        searchProducto: _.debounce((search, event, vm) => {

            if (vm.toggleBarcode == false) {

                currentFocus = 0;
                let a, b;
                var x = document.getElementsByClassName("autocomplete-items");

                for (var i = 0; i < x.length; i++) {
                    x[i].parentNode.removeChild(x[i]);
                }

                if (!search) {
                    return false;
                }

                axios.get('notasdeentrega/buscarProducto', {
                    params: {
                        'divisa': vm.divisa_predeterminada,
                        'almacen': vm.almacen_predeterminado,
                        'buscar': search.trim(),
                    }
                }).then(response => {
                    vm.productos = response.data;
                }).catch(e => {
                    notificacion();
                }).finally(() => {

                    currentFocus = -1;

                    a = document.createElement("div");
                    a.id = event.target.id + 'autocomplete-list';
                    a.classList.add('autocomplete-items');
                    event.target.parentNode.appendChild(a);

                    let self = vm;

                    vm.productos.forEach((item) => {

                        b = document.createElement("div");

                        if (item.imagen) {
                            b.innerHTML += "<img src='" + item.imagen + "' class='avatar-img rounded-circle' style='width: 50px; height: 50px; margin-right: 15px'>";
                        }

                        if (item.pro_descripcion.substr(0, search.length).toUpperCase() == search.toUpperCase()) {
                            b.innerHTML += "<strong>" + item.pro_descripcion.substr(0, search.length) + "</strong>";
                            b.innerHTML += "<span>" + item.pro_descripcion.substr(search.length) + "</span>";
                        } else {
                            b.innerHTML += "<strong>" + item.pro_descripcion + "</strong>";
                        }

                        b.innerHTML += "<small class='text-primary' style='margin-right: 5px'> stock: " + item.ps_cantidad + "</small> <br>";
                        b.innerHTML += "<small class='text-primary' style='margin-right: 10px'> fabricante: " + item.fabricante + "</small>";
                        b.innerHTML += "<input type='hidden' value='" + item.pro_id + "' data-almacen='" + item.id_almacen + "' data-name='" + item.pro_descripcion + "'>";

                        b.addEventListener("click", function (e) {

                            event.target.value = this.getElementsByTagName("input")[0].getAttribute('data-name');
                            let id_producto = this.getElementsByTagName("input")[0].value;
                            let id_almacen = this.getElementsByTagName("input")[0].getAttribute('data-almacen');

                            self.agregarProducto(id_producto, id_almacen);

                            for (var i = 0; i < x.length; i++) {
                                x[i].parentNode.removeChild(x[i]);
                            }
                        });

                        a.appendChild(b);
                    });
                });
            }
        }, 500),
        agregarProducto(id_producto, id_almacen) {
            if (this.divisa_predeterminada && id_producto && id_almacen && this.cliente) {
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/agregarProducto',
                    data: {
                        'id_factura': this.id_factura,
                        'id_producto': id_producto,
                        'id_almacen': id_almacen,
                        'id_divisa': this.divisa_predeterminada,
                        'descuento_global': this.descuento,
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        this.articulosTotal = response.data.articulos_cantidad;
                        this.subtotal = response.data.subtotal;
                        this.descuento = response.data.descuento;
                        this.neto = response.data.neto;
                        this.iva = response.data.iva;
                        this.total = response.data.total;
                        this.carrito = response.data.carrito;
                        this.obtenerubicacionProductos();
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion()).finally(() => {
                    document.getElementById('buscador').value = '';
                });
            }
        },
        seleccionarProducto(event) {

            var x = document.getElementById(event.target.id + 'autocomplete-list');

            if (x) x = x.getElementsByTagName("div");

            if (event.key == 'ArrowDown') {
                currentFocus++;
                active(x);
            } else if (event.key == 'ArrowUp') {
                currentFocus--;
                active(x);
            } else if (event.key == 'Enter') {

                event.preventDefault();

                if (this.toggleBarcode == true) {
                    this.agregarProductoBarcode(event.target.value);
                    document.getElementById('buscador').value = '';
                } else {
                    if (currentFocus > -1) {
                        if (x) x[currentFocus].click();
                    }
                }
            }
        },
        agregarProductoBarcode(producto) {
            if (this.divisa_predeterminada && this.id_factura) {
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/agregarProductoBarcode',
                    data: {
                        'id_factura': this.id_factura,
                        'producto': producto,
                        'id_divisa': this.divisa_predeterminada,
                        'id_almacen': this.almacen_predeterminado,
                        'descuento_global': this.descuento,
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        this.articulosTotal = response.data.articulos_cantidad;
                        this.subtotal = response.data.subtotal;
                        this.descuento = response.data.descuento;
                        this.neto = response.data.neto;
                        this.iva = response.data.iva;
                        this.total = response.data.total;
                        this.carrito = response.data.carrito;
                        this.obtenerubicacionProductos();
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion());
            }
        },
        modalAnular() {
            $('#modal_anular').modal();
            $('#modal_anular').on('shown.bs.modal', function () {
                $('#observacion_anular').trigger('focus')
            });
        },
        anular() {
            Swal.fire({
                title: '<strong>¿Anular nota de entrega?</strong>',
                showCloseButton: true,
                showCancelButton: true,
                focusConfirm: false,
                cancelButtonColor: '#aaa',
                confirmButtonColor: '#3085d6',
                confirmButtonText: 'Aceptar',
                cancelButtonText: 'Cancelar'
            }).then((result) => {
                if (result.value) {
                    axios.get('notasdeentregaeditar/anularFactura', {
                        params: {
                            id_factura: this.id_factura,
                            descripcion: this.observacion_anular
                        }
                    }).then(response => {
                        if (response.data.errors == null) {
                            if (response.data !== false) {
                                location.href = response.data;
                            } else {
                                notificacion('fa fa-ban', 'Error', 'Error al anular Nota de Entrega', 'danger');
                            }
                        } else {
                            let total_errores = response.data.errors.length
                            for (let i = 0; i < total_errores; i++) {
                                notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                            }
                        }
                    }).catch(e => notificacion()).finally(() => this.cargando = false);
                }
            });
        },
        modalImprimirCredito(id_credito) {
            this.idCreditoImprimir = id_credito;
            $('#modal-imprimir-credito').modal();
        },
        imprimirCredito(id_impresora) {
            axios.get('poseditar/imprimirCredito', {
                params: {
                    id_credito: Number(this.idCreditoImprimir),
                    id_impresora: id_impresora
                }
            }).then(response => {
                console.log(response.data);
                if (response.data.errors == null) {
                    if (response.data !== false) {
                        fetch(response.data.ip_puerto, {
                            method: 'POST',
                            body: JSON.stringify(response.data.data)
                        }).then((j) => {
                            console.log(j);
                            if (j.ok) {
                                notificacion('fa fa-check', 'Impreso', 'Impresion exitosa', 'success');
                                axios.get('poseditar/facturaImpresa/' + Number(this.id_factura)).then(response => {
                                    notificacion('fa fa-info', '', response.data, 'info');
                                }).catch(e => {
                                    notificacion('fa fa-ban', 'No impreso', 'debe actualizar manualmente el documento como impreso', 'success');
                                });
                            } else {
                                notificacion('fa fa-ban', 'Error', 'Respuesta de red OK pero respuesta HTTP no OK', 'warning');
                            }
                        }).catch((error) => {
                            notificacion('fa fa-ban', 'Error', 'Hubo un problema con la petición Fetch:' + error.message, 'danger');
                        });
                    }
                } else {
                    let total_errores = response.data.errors.length
                    for (let i = 0; i < total_errores; i++) {
                        notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                    }
                }
            }).catch(e => notificacion());

        },
        modalImprimir(ruta) {
            this.errorForm = [];
            $('#modal-imprimir').modal();
        },
        imprimir(id) {
            axios.get('notasdeentregaeditar/imprimir', {
                params: {
                    id_factura: Number(this.id_factura),
                    impresora: id,
                }
            }).then(response => {
                console.log(response.data);
                if (response.data.data.errors == null) {
                    fetch(response.data.ip_puerto, {
                        method: 'POST',
                        body: JSON.stringify(response.data.data)
                    }).then((j) => {
                        if (j.ok) {
                            notificacion('fa fa-check', 'Impreso', 'Impresion exitosa', 'success');
                        } else {
                            notificacion('fa fa-ban', 'Error', 'Respuesta de red OK pero respuesta HTTP no OK', 'warning');
                        }
                    }).catch((error) => {
                        notificacion('fa fa-ban', 'Error', 'Hubo un problema con la petición Fetch:' + error.message, 'danger');
                    });
                } else {
                    let total_errores = response.data.data.errors.length
                    for (let i = 0; i < total_errores; i++) {
                        notificacion('fa fa-ban', 'Advertencia', response.data.data.errors[i], 'warning');
                    }
                }
            }).catch(e => notificacion());
        },
        colocarEnMonto() {
            if (this.ver_contenedor_campos_pagar == true) {
                this.monto_conv = this.monto = Number(this.restante).toFixed(this.moneyPagar.precision);
            }
        },
        conversor() {
            if (this.divisa_convertir_p && this.divisa_convertir_s) {
                axios.get('generico/conversion', {
                    params: {
                        'div_p': this.divisa_convertir_p,
                        'div_s': this.divisa_convertir_s
                    }
                }).then(response => {
                    if (!this.monto_conv) this.monto_conv = 0;
                    this.monto_conv = convertir_a_float(this.monto_conv);
                    this.monto_conv = this.monto_conv.toFixed(response.data.divisa_conv.precision);
                    this.moneyConver.decimal = response.data.divisa_conv.decimal;
                    this.moneyConver.thousands = response.data.divisa_conv.thousands;
                    this.moneyConver.prefix = response.data.divisa_conv.symbol;
                    this.moneyConver.precision = response.data.divisa_conv.precision;
                    this.conv_factor = response.data.factor;
                    this.conv_simbolo = response.data.divisa_result.symbol;
                    this.conv_local = response.data.divisa_result.locale;
                    this.conv_precision = response.data.divisa_result.precision;
                    let total = this.monto_conv * this.conv_factor;
                    total = monedaMoneda(total, this.conv_local, this.conv_simbolo, this.conv_precision);
                    document.getElementById('result_conv').value = total;
                }).catch(e => notificacion()).finally(() => {

                })
            }
        },
        convedorInput() {
            if (this.divisa_convertir_p && this.divisa_convertir_s) {
                let total = convertir_a_float(this.monto_conv) * this.conv_factor;
                total = monedaMoneda(total, this.conv_local, this.conv_simbolo, this.conv_precision);
                document.getElementById('result_conv').value = total;
            }
        },
        modalCrearCredito() {
            this.errorForm = [];
            this.divisa_pagar_credito = '';
            this.metodo_pagar_credito = '';
            this.cuenta_pagar_credito = '';
            this.pagar_descripcion_credito = '';
            this.cuentas = [];
            this.metodos_de_pagos = [];
            $('#modal_crear_credito').modal('show');
        },
        pagarCredito() {

            this.errorForm = [];

            if (!this.serie_predeterminada)
                this.errorForm.push('El campo Serie es obligatorio');
            if (!this.divisa_pagar_credito)
                this.errorForm.push('El campo Divisa es obligatorio');
            if (!this.metodo_pagar_credito)
                this.errorForm.push('El campo Método es obligatorio');
            if (!this.cuenta_pagar_credito)
                this.errorForm.push('El campo Cuenta es obligatorio');
            if (!this.diferencia_credito)
                this.errorForm.push('El campo Monto es obligatorio');

            if (this.errorForm.length == 0) {
                this.cargando = true;
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/guardarCredito',
                    data: {
                        id_factura: this.id_factura,
                        id_serie: this.serie_predeterminada,
                        monto: this.diferencia_credito,
                        id_divisa: this.divisa_pagar_credito,
                        id_metodo_divisa: this.metodo_pagar_credito,
                        id_cuenta_metodo: this.cuenta_pagar_credito,
                        observacion: this.pagar_descripcion_credito
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        if (response.data == true) {
                            notificacion('fa fa-check', '', 'Operación exitosa', 'success');
                        } else {
                            notificacion('fa fa-ban', 'Error', 'Error en la operación', 'danger');
                        }
                    } else {
                        let total_errores = response.data.errors.length
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion()).finally(() => {
                    this.cargando = false;
                    this.obtenerCreditosFactura();
                    this.divisa_pagar_credito = '';
                    this.metodo_pagar_credito = '';
                    this.cuenta_pagar_credito = '';
                    this.pagar_descripcion_credito = '';
                    this.cuentas = [];
                    this.metodos_de_pagos = [];
                    $('#modal_crear_credito').modal('hide');
                });
            }
        },
        chequearAgente() {
            axios({
                method: "post",
                url: "notasdeentregaeditar/chequearAgente",
                data: {
                    id_cliente: this.cliente,
                    id_agente: this.emp_agente,
                    factura: this.id_factura
                },
                transformRequest: serializar(),
            })
                .then((response) => {
                    if (response.data.errors == null) {
                        notificacion('fa fa-check', 'Actualizacion', 'Agente seleccionado exitosamente', 'success');
                        this.obtenerAgente();
                    } else {
                        let total_errores = response.data.errors.length;
                        for (let i = 0; i < total_errores; i++) {
                            notificacion("fa fa-ban", "Advertencia", response.data.errors[i], "warning");
                        }
                    }
                })
                .catch((e) => notificacion());
        },
        actualizar_agente(){
            axios({
                method: "post",
                url: "notasdeentregaeditar/actualizar_agente",
                data: {
                    id_cliente: this.cliente,
                    agente_anterior: this.emp_agente,
                    factura: this.id_factura,
                    id_agente:this.nuevo_agente
                },
                transformRequest: serializar(),
            })
                .then((response) => {
                    if (response.data.errors == null) {
                        notificacion('fa fa-check', 'Actualizacion', 'Agente seleccionado exitosamente', 'success');
                       
                          $('#modal_act').modal('hide');
                          this.emp_agente=this.nuevo_agente;
                          this.obtenerAgente();
    
                    } else {
                        let total_errores = response.data.errors.length;
                        for (let i = 0; i < total_errores; i++) {
                            notificacion("fa fa-ban", "Advertencia", response.data.errors[i], "warning");
                        }
                    }
                })
                .catch((e) => notificacion());
        },
        modal_actualizar_agente() {
            $('#modal_act').modal('show');
            this.nuevo_agente=0;
        },
        map_input(){
            let map= document.getElementById("pac-input").value;
            document.getElementById('cli_direccion').value=map;
        },
        modal_redes(){
            $('#modal-whatsapp').modal('show');
            let maps=document.getElementById('cli_direccion').value;
            let dir=(document.getElementById('txtLat').value!='')?' MAPS: https://www.google.com/maps/search/?api=1%26query='+document.getElementById('txtLat').value+','+document.getElementById('txtLng').value : '';

            this.formWhatsapp.mensaje='Cliente: '+document.getElementById('cli_razon_social').value+', Documento: '+document.getElementById('cli_dni').value+', Direccion: '+document.getElementById('cli_direccion').value+', Correo electronico: '+document.getElementById('cli_email').value+', Telefono: '+document.getElementById('cli_telefono').value+dir;
        },
        enviarWhatsapp(){
         if(this.formWhatsapp.telefono.length>0 && this.formWhatsapp.mensaje.length>0){
            window.open('https://api.whatsapp.com/send?phone=+58'+this.formWhatsapp.telefono+'&text='+this.formWhatsapp.mensaje+'');
         }else{
            notificacion('fa fa-ban', 'Debe llenar todos los campo', '', 'warning');
         }
        },
        obtenerAgenteVenta() {
            axios.get('generico/obtenerAgenteVenta').then(response => {
                if (response.data != null) {
                    this.agentes_todos = response.data;
                }
            }).catch(e => notificacion());
        },
        obtenerComisionFactNotaPendiente() {
            axios.get('notasdeentregaeditar/obtenerComisionesPendiente/' + Number(this.id_factura))
                .then(response => {
                    if (response.data) {
                        this.obtenerAgenteVenta();
                        this.obtenerComisionesActivas();
                        this.comisiones_por_agentes = response.data;
                    }
                }).catch(e => notificacion());
        },
        eliminarComisionPendiente(id) {
            if (id > 0) {
                Swal.fire({
                    title: 'Eliminar Comision',
                    text: "¿Estás seguro de querer eliminar esta comision pendiente ?",
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#3085d6',
                    cancelButtonColor: '#aaa',
                    confirmButtonText: 'Eliminar'
                }).then((result) => {
                    if (result.value) {
                        axios.get('generico/eliminarComisionPendiente/' + id).then(response => {
                            if (response.data == true) {
                                this.obtenerComisionFactNotaPendiente();
                                notificacion('fa fa-trash', 'Comision eliminada', '', 'danger');
                            } else {
                                notificacion('fa fa-ban', 'Error al eliminar la dirección de envío', this.dataTipoCom.nombrecom.toUpperCase(), 'danger');
                            }
                        }).catch(e => notificacion());
                    }
                });
            } else {
                notificacion('fa fa-ban', 'Advertencia', 'Error en la seleccion.', 'warning');
            }
        },
        recalcularComisiones() {
            axios.get('notasdeentregaeditar/recalcularComisiones/' + Number(this.id_factura)).then(response => {
                if (response.data.errors == null) {
                    if (response.data == true) {
                        this.obtenerComisionFactNotaPendiente();
                        notificacion('fa fa-check', 'Actualizacion', 'Modificado exitosamente', 'success');
                    }
                } else {
                    let total_errores = response.data.errors.length
                    for (let i = 0; i < total_errores; i++) {
                        notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                    }
                }
            }).catch(e => notificacion());
        },
        factor_b(){
            let rest = convertir_a_float(String(this.restante_original));
            let factor = convertir_a_float(String(this.div_conv_factor));
            let fact= rest*factor;
            this.restante=fact;
          },
        modalAgregarAgente() {
            this.divisa_pagar_comision = this.divisa_predeterminada;
            $('#modal_agregarag').modal('show');
        },
        modalPendienteeditar(id, porcentaje, monto, total, divisa) {
            $('#modal_pendiente').modal('show');
            this.dataEditar.id = id;
            this.dataEditar.porcentaje = porcentaje;
            this.dataEditar.total = total;
            this.dataEditar.monto = convertir_a_float(String(monto)).toFixed(this.money.precision);
            this.dataEditar.divisa = divisa;
        },
        editarpendiente() {
            axios({
                method: 'post',
                url: 'notasdeentregaeditar/editarpendiente',
                data: {
                    id: this.dataEditar.id,
                    porcentaje: this.dataEditar.porcentaje,
                    monto: this.dataEditar.monto,
                },
                transformRequest: serializar(),
            }).then(response => {
                if (response.data.errors == null) {
                    if (response.data == true) {
                        this.obtenerComisionFactNotaPendiente();
                        notificacion('fa fa-check', 'Actualizacion', 'Modificado exitosamente', 'success');
                    }
                } else {
                    let total_errores = response.data.errors.length
                    for (let i = 0; i < total_errores; i++) {
                        notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                    }
                }
            }).catch(e => notificacion());

        },
        obtenerComisionesActivas() {
            axios.get('generico/obtenerComisionesactivas').then(response => {
                if (response.data != null) {
                    this.dataEditar.comisiones = response.data;
                }
            }).catch(e => notificacion());
        },
        agregaragente() {

            let agente = document.getElementById('agenteid').value;
            let comision = document.getElementById('comisionesa').value;
            let monto = document.getElementById('montoca').value;
            this.errorAgente = [];

            if (!this.divisa_pagar_comision)
                this.errorAgente.push('La divisa es obligatoria.');
            if (agente == 0)
                this.errorAgente.push('Debe seleccionar un agente.');
            if (comision == 0)
                this.errorAgente.push('Debe seleccionar la comision, para realizar los cambios.');
            if (monto == 0)
                this.errorAgente.push('Debe agregar un monto, para realizar los cambios.');

            if (this.errorAgente.length == 0) {
                axios({
                    method: 'post',
                    url: 'notasdeentregaeditar/agregaragente',
                    data: {
                        id_agente: agente,
                        id_comision: comision,
                        id_factura: this.id_factura,
                        monto: monto,
                        id_divisa: this.divisa_pagar_comision
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                        if (response.data == true) {
                            this.obtenerComisionFactNotaPendiente();
                            notificacion('fa fa-edit', '', 'Agente agregado correctamente', 'info');
                        } else {
                            notificacion('fa fa-ban', '', response.data, 'warning');
                        }
                    } else {
                        let total_errores = response.data.errors.length;
                        for (let i = 0; i < total_errores; i++) {
                            notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                        }
                    }
                }).catch(e => notificacion()).finally(() => {
                    agente = '';
                    comision = '';
                    monto = '';
                });
            } else {
                let total_errores = this.errorAgente.length;
                for (let i = 0; i < total_errores; i++) {
                    notificacion('fa fa-ban', 'Advertencia', this.errorAgente[i], 'warning');
                }
            }
        },
        actualizarPrecios() {
            axios({
                method: 'post',
                url: 'notasdeentregaeditar/actualizarPrecios',
                data: {
                    id_factura: this.id_factura,
                    descuento_global: this.descuento
                },
                transformRequest: serializar(),
            }).then(response => {
                if (response.data.errors == null) {
                    this.articulosTotal = response.data.articulos_cantidad;
                    this.subtotal = response.data.subtotal;
                    this.descuento = response.data.descuento;
                    this.neto = response.data.neto;
                    this.iva = response.data.iva;
                    this.total = response.data.total;
                    this.restante = response.data.total;
                    this.carrito = response.data.carrito;
                } else {
                    let total_errores = response.data.errors.length;
                    for (let i = 0; i < total_errores; i++) {
                        notificacion('fa fa-ban', 'Advertencia', response.data.errors[i], 'warning');
                    }
                }
            }).catch(e => notificacion());
        },
        finalizarNota(estatus) {

            let estatus_nombre = '';

            if (estatus == 1) {
                estatus_nombre = 'Finalizado';
            } else if (estatus == 2) {
                estatus_nombre = 'Pendiente';
            } else if (estatus == 3) {
                estatus_nombre = 'Anulado';
            }

            Swal.fire({
                title: estatus_nombre,
                text: "¿Estás seguro que deseas cambiar el estatus de la nota de entrega a " + estatus_nombre + " ?",
                showCancelButton: true,
                confirmButtonColor: '#3085d6',
                cancelButtonColor: '#aaa',
                cancelButtonText: 'Cancelar',
                confirmButtonText: 'Aceptar'
            }).then((result) => {
                if (result.value) {
                    axios.get('facturacion/finalizarNota', {
                        params: {
                            id: this.id_factura,
                            estatus: estatus
                        }
                    }).then(response => {
                        if (response.data == true) {
                            location.reload();
                        } else {
                            notificacion('fa fa-ban', 'Advertencia', response.data, 'warning');
                        }
                    }).catch(e => notificacion());
                }
            });
        },
        obtenerRedesSociales() {
            axios.get('clientes/obtenerRedesSociales/' + this.cliente).then(response => {
                this.redesSociales = response.data;
            }).catch(e => notificacion());
        },
        editarGuardarRedes() {

            this.errorForm = [];

            if (!this.form_redes)
                this.errorForm.push('Seleccione el tipo de red social obligatorio.');

            if (!this.form_descripcion)
                this.errorForm.push('Agregue la descripcion de la red social obligatorio.');

            if (this.errorForm.length == 0) {
                axios({
                    method: 'post',
                    url: 'clientes/guardarRedes',
                    data: {
                        'tipo':this.form_redes,
                        'descripcion':this.form_descripcion,
                        'id':this.cliente,
                        'rd':this.form_id
                    },
                    transformRequest: serializar(),
                }).then(response => {
                    if (response.data.errors == null) {
                       this.obtenerRedesSociales();
                       this.form_descripcion='';
                       this.form_id='';
                       this.form_redes='';
                    } else {
                        this.errorForm = response.data.errors;
                    }
                }).catch(e => notificacion());
            }
        },
        verRedes(redes) {
            this.errorForm = [];
            this.form_redes = redes.clird_type;
            this.form_descripcion = redes.clird_descripcion;
            this.form_id = redes.clird_id;
        },
        eliminarRedes(redes) {

            this.errorForm = [];

            Swal.fire({
                title: 'Eliminar Red social',
                text: "¿Estás seguro que deseas eliminar la red social " + redes.clird_type + " ?",
                showCancelButton: true,
                confirmButtonColor: '#3085d6',
                cancelButtonColor: '#aaa',
                cancelButtonText: 'Cancelar',
                confirmButtonText: 'Eliminar'
            }).then((result) => {
                if (result.value) {
                    axios.get('clientes/eliminarRedes/' + redes.clird_id).then(response => {
                        if (response.data.errors == null) {
                            if (response.data == true) {
                                let posicion = this.redesSociales.findIndex(item => item.id == redes.clird_id);
                                this.redesSociales.splice(posicion, 1);
                                notificacion('fa fa-trash', 'Red social eliminada', redes.clird_descripcion.toUpperCase(), 'danger');
                            } else {
                                notificacion('fa fa-ban', 'Error al eliminar', redes.clird_descripcion.toUpperCase(), 'danger');
                            }
                        } else {
                            this.errorForm = response.data.errors;
                        }
                    }).catch(e => notificacion()).finally(() => {
                        this.form_redes = '';
                        this.form_descripcion = '';
                        this.form_id='';
                    })
                }
            });
        },
        modal_whatsapp(){
            let mensaje=document.getElementById('nombEmpresa').value+' le recuerda que tiene '+document.getElementById('cant_pend').value+' facturas pendientes por un monto de '+document.getElementById('pagot').value;
            let mens=mensaje+', agradecemos que cumpla con sus compromisos de pago.';
            window.open('https://api.whatsapp.com/send?phone=+58'+document.getElementById('telcli').value+'&text='+mens);
        }
    },
    computed: {
        costo() {
            let sum=0;
            if (Object.keys(this.carrito).length > 0) {
              Object.keys(this.carrito).forEach((key, i) => {
                let costo=parseFloat(this.carrito[key].costo);
                let cantidad=parseFloat(this.carrito[key].cantidad);
                sum+=costo*cantidad;
                if (sum <= 0) {
                  sum = 0;
                }
              });
           }
            return this.moneda(sum, this.money.locale, this.money.prefix, this.money.precision);
          },
        balance() {
            let total = convertir_a_float(String(this.restante));
            let monto = convertir_a_float(String(this.monto));
            let balance_ = (total - monto);
            if (balance_ <= 0) {
                balance_ = 0;
            }
            return this.moneda(balance_, this.moneyPagar.locale, this.moneyPagar.prefix, this.moneyPagar.precision);
        },
        diferencia_n() {
            let total = convertir_a_float(String(this.restante));
            let monto = convertir_a_float(String(this.monto));
            let balance_ = (total - monto);
            return balance_ = (balance_ <= 0) ? Math.abs(balance_) : 0;
        },
        diferencia() {
            let total = convertir_a_float(String(this.restante));
            let monto = convertir_a_float(String(this.monto));
            let balance_ = (total - monto);
            balance_ = (balance_ <= 0) ? Math.abs(balance_) : 0
            return this.moneda(balance_, this.moneyPagar.locale, this.moneyPagar.prefix, this.moneyPagar.precision);
        },
        porcentajemonto() {
            let total = convertir_a_float(String(this.dataEditar.total));
            let monto = convertir_a_float(String(this.dataEditar.monto));
            let Tcomision_ = (monto * 100) / total;
            Tcomision_ = (Tcomision_ >= 0) ? Tcomision_ : 0;
            this.dataEditar.porcentaje = convertir_a_float(String(Tcomision_)).toFixed(this.money.precision);
            return this.dataEditar.porcentaje;
        }
    }
});

function active(x) {

    if (!x) return false;

    for (var i = 0; i < x.length; i++) {
        x[i].classList.remove("autocomplete-active");
    }

    if (currentFocus >= x.length) currentFocus = 0;
    if (currentFocus < 0) currentFocus = (x.length - 1);

    x[currentFocus].classList.add("autocomplete-active");
}

function closeAllLists(elmnt) {
    let inp = document.getElementById("buscador");
    let x = document.getElementsByClassName("autocomplete-items");
    for (var i = 0; i < x.length; i++) {
        if (elmnt != x[i] && elmnt != inp) {
            x[i].parentNode.removeChild(x[i]);
        }
    }
}

document.addEventListener("click", function (e) {
    closeAllLists(e.target);
});