(function () {
    "use strict";

    angular.module('pos').controller('caixaController', controller);
    controller.$inject = ['$scope', '$window', '$timeout', 'caixaService', 'entidadeAuxiliarService', '$confirmModalDefaults', '$confirm', '$compile', '$state'];

    function controller($scope, $window, $timeout, caixaService, entidadeAuxiliarService, $confirmModalDefaults, $confirm, $compile, $state) {
        $scope.$parent.initializeLayout('Caixa');
        $scope.salvando = false;
        $scope.concluido = false;
        $scope.total = {};
        $scope.autorizacao = false;

        $scope.state = {
            index: -1,
            lancamento: {},
            date: 0,
            totais: { TotalVendasEfetivadas: 0, NumeroVendasEfetivadas: 0, NumeroVendasCanceladas: 0, SaldoCaixa: 0 },
            periodos: { data: [], corrente: null },
            caixaByTipoLancamento: { data: [], carregando: false, vazio: true },
            ticketsByVendedor: { data: [], carregando: false, vazio: true },
            ticketsByTipoPagamento: { data: [], carregando: false, vazio: true },
            ticketsByDataHora: { data: [], carregando: false, vazio: true },
            lancamentos: { data: [], carregando: false, vazio: true, ativo: false, item: null, totalLancamentos: 0 },
            conferencia: { data: [], carregando: false, vazio: true, ativo: false, item: null },
            tiposLancamentoCaixa: { data: [], carregando: false, vazio: true },
            motivosCancelamento: { data: [], carregando: false, vazio: true },
            caixaAberto: false,
            fechamentoDetalhado: { modalCaixa: false, modalLoja: false, conferencia: {} },
            caixa: { carregando: true },
            showPendingInvoices: false,
            askToShowPendingInvoices: true,
        };

        $scope.initialize = function () {
            $scope.terminaisAbertos();
            $scope.refresh();
        };
        $scope.historyBack = function () {
            $window.history.back();
        }

        $scope.setPeriodoCorrente = function (val) {
            $scope.state.periodos.corrente = val;
            $scope.refresh();
        };

        $scope.getTotais = function () {
            caixaService
                .getHojeTotais($scope.$parent.config.Terminal.Codigo, $scope.state.periodos.corrente, null)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.info(response.Message, "Serviço");
                        else {
                            $scope.state.totais = response.Data;

                            //var valor = ($scope.state.totais.SaldoExtra == 0 ? $scope.state.totais.SaldoCaixa : $scope.state.totais.SaldoExtra);
                            //alert('Caixa > ' + valor);
                        }
                    },
                    function (err) {
                        $scope.$parent.toastr.error(response.Message, "Serviço");
                    }
                );
        };
        $scope.getPeriodosFechamento = function () {
            caixaService
                .getPeriodosFechamento($scope.$parent.config.Terminal.Codigo)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.info(response.Message, "Serviço");
                        else
                            angular.copy(angular.fromJson(response.Data), $scope.state.periodos.data);
                    },
                    function (err) { $scope.$parent.toastr.error(response.Message, "Serviço"); }
                );
        };
        $scope.getAllTipoLancamentoCaixa = function () {
            entidadeAuxiliarService
                .getAllTipoLancamentoCaixa()
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else {
                            angular.copy(angular.fromJson(response.Data), $scope.state.tiposLancamentoCaixa.data);
                        }

                    },
                    function (error) { $scope.$parent.toastr.error(error, 'Serviço'); }
                );
        };

        var concluir = function () {
            $scope.state.date = Date.now();
            $scope.sumLancamentos();
            $scope.sumPagamentos();
            $scope.concluido = true;
        }

        $scope.getAllMotivoCancelamento = function () {
            entidadeAuxiliarService
                .getAllMotivoCancelamento()
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else
                            angular.copy(angular.fromJson(response.Data), $scope.state.motivosCancelamento.data);
                    },
                    function (error) { $scope.$parent.toastr.error(error, 'Serviço'); }
                );
        };

        $scope.chartCaixaByTipoLancamento = function () {
            $scope.state.caixaByTipoLancamento.carregando = true;
            $scope.state.caixaByTipoLancamento.vazio = false;

            caixaService
                .chartHojeByTipoLancamento($scope.$parent.config.Terminal.Codigo, $scope.state.periodos.corrente, null)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.info(response.Message, "Serviço");
                        else
                            angular.copy(angular.fromJson(response.Data), $scope.state.caixaByTipoLancamento.data);

                        $scope.state.caixaByTipoLancamento.carregando = false;
                        $scope.state.caixaByTipoLancamento.vazio = $scope.$parent.tools.buildChart('#caixa-by-tipo-lancamento', '', $scope.state.caixaByTipoLancamento.data);
                    },
                    function (error) {
                        $scope.$parent.toastr.error(error, "Comunicação com o servidor");
                        console.error("Comunicação com o servidor", error);
                        $scope.state.caixaByTipoLancamento.carregando = false;
                        $scope.state.caixaByTipoLancamento.vazio = true;
                    }
                );
        };
        $scope.chartTicketsByVendedor = function () {
            $scope.state.ticketsByVendedor.carregando = true;
            $scope.state.ticketsByVendedor.vazio = false;
            caixaService
                .chartHojeByVendedor($scope.$parent.config.Terminal.Codigo, $scope.state.periodos.corrente, null)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.info(response.Message, "Serviço");
                        else
                            angular.copy(angular.fromJson(response.Data), $scope.state.ticketsByVendedor.data);

                        $scope.state.ticketsByVendedor.carregando = false;
                        $scope.state.ticketsByVendedor.vazio = $scope.$parent.tools.buildChart('#tickets-by-vendedor', '', $scope.state.ticketsByVendedor.data);
                    },
                    function (error) {
                        $scope.$parent.toastr.error(error, "Comunicação com o servidor");
                        console.error("Comunicação com o servidor", error);
                        $scope.state.ticketsByVendedor.carregando = false;
                        $scope.state.ticketsByVendedor.vazio = true;
                    }
                );
        };
        $scope.chartTicketsByTipoPagamento = function () {
            $scope.state.ticketsByTipoPagamento.carregando = true;
            $scope.state.ticketsByTipoPagamento.vazio = false;
            caixaService
                .chartHojeByTipoPagamento($scope.$parent.config.Terminal.Codigo, $scope.state.periodos.corrente, null)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.info(response.Message, "Serviço");
                        else
                            angular.copy(angular.fromJson(response.Data), $scope.state.ticketsByTipoPagamento.data);

                        $scope.state.ticketsByTipoPagamento.carregando = false;
                        $scope.state.ticketsByTipoPagamento.vazio = $scope.$parent.tools.buildChart('#tickets-by-tipo-pagamento', '', $scope.state.ticketsByTipoPagamento.data);

                    },
                    function (error) {
                        $scope.$parent.toastr.error(error, "Comunicação com o servidor");
                        console.error("Comunicação com o servidor", error);
                        $scope.state.ticketsByTipoPagamento.carregando = false;
                        $scope.state.ticketsByTipoPagamento.vazio = true;
                    }
                );
        };
        $scope.chartTicketsByDataHora = function () {
            $scope.state.ticketsByDataHora.carregando = true;
            $scope.state.ticketsByDataHora.vazio = false;
            caixaService
                .chartHojeByDataHora($scope.$parent.config.Terminal.Codigo, $scope.state.periodos.corrente, null)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.info(response.Message, "Serviço");
                        else
                            angular.copy(angular.fromJson(response.Data), $scope.state.ticketsByDataHora.data);

                        $scope.state.ticketsByDataHora.carregando = false;
                        $scope.state.ticketsByDataHora.vazio = $scope.$parent.tools.buildChart('#tickets-by-data-hora', 'Atendimentos', $scope.state.ticketsByDataHora.data);
                    },
                    function (error) {
                        $scope.$parent.toastr.error(error, "Comunicação com o servidor");
                        console.error("Comunicação com o servidor", error);
                        $scope.state.ticketsByDataHora.carregando = false;
                        $scope.state.ticketsByDataHora.vazio = true;
                    }
                );
        };

        $scope.getAllLancamento = function () {
            $scope.state.lancamentos.carregando = true;
            $scope.state.lancamentos.vazio = false;
            $scope.state.lancamentos.totalLancamentos = 0;

            caixaService
                .getAllHoje($scope.$parent.config.Terminal.Codigo, $scope.state.periodos.corrente, null)
                .then(
                    function (response) {
                        if (response.Status < 0) {
                            $scope.$parent.toastr.info(response.Message, "Serviço");
                        }
                        else {
                            angular.copy(angular.fromJson(response.Data), $scope.state.lancamentos.data);
                            $scope.state.lancamentos.data.forEach(function (item, index) {
                                var lancamento = (item.Entrada - item.Saida);
                                $scope.state.lancamentos.totalLancamentos += lancamento;
                            });
                        }

                        $scope.state.lancamentos.carregando = false;
                        $scope.state.lancamentos.vazio = (!response.Data || response.Data.length == 0);
                    },
                    function (err) {
                        $scope.$parent.toastr.error(response.Message, "Serviço");
                        $scope.state.lancamentos.carregando = false;
                        $scope.state.lancamentos.vazio = true;
                    }
                );
        };
        $scope.saveLancamento = function () {
            //if ($scope.state.lancamentos.data[$scope.state.index] && $scope.state.lancamentos.data[$scope.state.index].Tipo.TipoMovimentacao != $scope.state.lancamento.Tipo.TipoMovimentacao) {
            //    angular.copy($scope.state.lancamentos.data[$scope.state.index], $scope.state.lancamento);
            //    $scope.$parent.toastr.error('Não é possível transformar entradas em saídas, ou saídas em entradas');
            //    return;
            //}
            if ($scope.state.lancamentos.item.Tipo.TipoMovimentacao == 1) {

                var saidaMaiorQueCaixa = !$scope.$parent.config.SaidaMaiorTotalCaixa && ($scope.state.lancamentos.item.Saida > $scope.state.totais.SaldoCaixa);
                var saidaMaiorExtra = ($scope.$parent.config.SaidaMaiorTotalCaixa && $scope.state.lancamentos.item.Saida > $scope.state.totais.SaldoExtra);

                if (saidaMaiorQueCaixa || saidaMaiorExtra) {
                    $scope.$parent.toastr.error('O lançamento de saída não pode superar o saldo do caixa.');
                    return;
                }
            }


            if ($scope.$parent.autorizacaoGerente && $scope.$parent.autorizacaoGerente.data && $scope.$parent.autorizacaoGerente.data.Codigo) {
                $scope.state.lancamentos.item.Gerente = { Codigo: $scope.$parent.autorizacaoGerente.data.Codigo };
            }
            $scope.salvando = true;
            if (!$scope.state.lancamentos.item.CaixaVendedor) {
                $scope.state.lancamentos.item.CaixaVendedor = { Codigo: $scope.environment.perfil.Codigo, Nome: $scope.environment.perfil.Nome };
            }

            caixaService
                .save($scope.state.lancamentos.item)
                .then(
                    function (response) {
                        $scope.salvando = false;
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else {
                            $scope.getAllLancamento();
                            $scope.getTotais();
                            $scope.chartCaixaByTipoLancamento();
                            $scope.checkCaixa();

                            if ($scope.state.lancamentos.data[$scope.state.index])
                                $scope.state.lancamentos.data[$scope.state.index] = response.Data;
                            $scope.state.lancamentos.item = response.Data;
                            $scope.state.lancamentos.item = null;
                        }
                    },
                    function (error) {
                        if ($scope.state.lancamentos.item.Tipo.TipoMovimentacao == 1)
                            $scope.state.lancamentos.item.Entrada = 0
                        else
                            $scope.state.lancamentos.item.Saida = 0
                        $scope.$parent.toastr.error(error, 'Serviço');
                        $scope.salvando = false;
                    }
                );
        };
        $scope.prepareNewLancamento = function () {
            $scope.state.index = -1;
            caixaService
                .prepareNew()
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else
                            $scope.state.lancamentos.item = response.Data;
                        $timeout(function () { $('[ng-model*="state.lancamentos.item.Tipo"]').focus(); });
                    },
                    function (error) { $scope.$parent.toastr.error(error, 'Serviço'); }
                );
        };
        $scope.cancelLancamento = function () {
            caixaService
                .cancel($scope.state.lancamentos.item.Codigo, $scope.state.lancamentos.item.Terminal.Codigo, $scope.state.lancamentos.item.MotivoCancelamento.Codigo)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else
                            $scope.getAllLancamento();
                    },
                    function (error) { $scope.$parent.toastr.error(error, 'Serviço'); }
                );
        };
        $scope.toggleLancamentos = function () {
            $scope.state.lancamentos.ativo = !$scope.state.lancamentos.ativo;
            if ($scope.state.lancamentos.ativo)
                $scope.getAllLancamento();
            $scope.state.lancamentos.item = null;
            $scope.concluido = false
        }

        $scope.toggleConferencia = function () {
            getAllPayments();
            $scope.state.conferencia.ativo = !$scope.state.conferencia.ativo;
        }


        $scope.checkCaixa = function () {
            $scope.state.caixa.carregando = true;
            caixaService
                .checkCaixaAberto($scope.$parent.config.Terminal.Codigo, null)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, "Serviço");
                        else {
                            $scope.state.caixaAberto = response.Data;

                            // Variavel criada para que seja usada no controller _layout.js
                            // e controle a permissão da realiza;áo de uma nova venda.
                            $scope.$parent.caixaAberto = response.Data;
                            $scope.state.caixa.carregando = false;
                        }
                    },
                    function (error) { $scope.$parent.toastr.error(error, 'Serviço'); }
                );
        };
        $scope.openCaixa = function () {
            if ($scope.$parent.config.ApresentarNotasPendentes) {
                $scope.state.showPendingInvoices = true;
            }

            caixaService
                .open($scope.$parent.config.Terminal.Codigo, null)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, "Serviço");
                        else {
                            $scope.refresh();
                            $scope.toggleLancamentos();
                        }
                    },
                    function (error) { $scope.$parent.toastr.error(error, "Serviço"); }
                );
        };
        $scope.closeCaixa = function () {
            if ($scope.$parent.config.ApresentarNotasPendentes) {
                $scope.state.showPendingInvoices = true;
            }

            if ($scope.$parent.config.ControleCego && $scope.$parent.environment.perfil.IndicaGerente) {
                $scope.toggleLancamentos();
                $scope.toggleConferencia();
                return;
            }

            caixaService
                .close($scope.$parent.config.Terminal.Codigo, null)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, "Serviço");
                        else {
                            $scope.refresh();
                            $scope.toggleLancamentos();
                        }
                    },
                    function (error) { $scope.$parent.toastr.error(error, "Serviço"); }
                );
        };

        $scope.refresh = function () {
            $scope.state.caixa.carregando = true;
            $scope.getTotais();
            $scope.chartCaixaByTipoLancamento();
            $scope.chartTicketsByVendedor();
            $scope.chartTicketsByTipoPagamento();
            $scope.chartTicketsByDataHora();
            $scope.getPeriodosFechamento();
            $scope.getAllTipoLancamentoCaixa();
            $scope.getAllMotivoCancelamento();
            $scope.checkCaixa();
        };

        var getAllPayments = function () {
            caixaService
                .getAllPayments($scope.$parent.config.Terminal.Codigo, $scope.$parent.config.Filial.Codigo)
                .then(
                    function (response) {
                        if (response.Status < 0) {
                            $scope.$parent.toastr.info(response.Message, "Serviço");
                        }
                        else {
                            $scope.state.conferencia.data = response.Data;
                            $scope.isEquals();
                        }
                    },
                    function (error) { $scope.$parent.toastr.error(error, "Serviço"); }
                );
        };

        $scope.checkEquals = function () {
        }

        $scope.setAllPayments = function () {
            $scope.state.conferencia.data.Vendedor = $scope.environment.perfil.Codigo.trim();
            $scope.state.conferencia.data.Terminal = $scope.$parent.config.Terminal.Codigo.trim();
            $scope.state.conferencia.carregando = true;
            if (!$scope.state.conferencia.data.Filial)
                $scope.state.conferencia.data.Filial = {};
            $scope.state.conferencia.data.Filial.Codigo = $scope.$parent.config.Filial.Codigo;

            $scope.setFlagPayments();
            caixaService
                .setAllPayments($scope.state.conferencia.data)
                .then(
                    function (response) {
                        $scope.state.conferencia.carregando = false;
                        if (response.Status < 0) {
                            $scope.$parent.toastr.info(response.Message, "Serviço");
                        }
                        else {
                            $scope.state.conferencia.data = response.Data;
                            concluir();
                            $scope.refresh();
                            $confirmModalDefaults.defaultLabels.title = "Tudo Certo!";
                            $confirm({ text: "Conferência concluída com sucesso." })
                        }
                    },
                    function (error) { $scope.$parent.toastr.error(error, "Serviço"); }
                );
        }


        $scope.imprimir = function () {
            var printContents = document.getElementById("tablePrint").innerHTML;
            var content = "<link href='/content/css/bootstrap.paper.min.css' rel='stylesheet' type='text/css'> " + printContents;
            var popupWin = window.open('');
            popupWin.document.open();
            popupWin.document.write(content);


            setTimeout(function () {
                popupWin.print();
            }, 1000);

        }

        $scope.teste = function () {
            concluir();
        }
        $scope.sumPagamentos = function () {
            $scope.total.Pagamentos = { efetivado: 0, emCaixa: 0 };
            var pagamentos = $scope.state.conferencia.data;
            for (var i = 0; i < pagamentos.Pagamentos.length; i++) {
                $scope.total.Pagamentos.efetivado += pagamentos.Pagamentos[i].Valor;
                $scope.total.Pagamentos.emCaixa += pagamentos.EmCaixa[i].Valor;
            }
        }
        $scope.sumLancamentos = function () {
            $scope.total.Lancamentos = { efetivado: 0, emCaixa: 0 };
            var lancamentos = $scope.state.conferencia.data;
            for (var i = 0; i < lancamentos.Lancamentos.length; i++) {
                $scope.total.Lancamentos.efetivado += (lancamentos.Lancamentos[i].Entrada - lancamentos.Lancamentos[i].Saida);
                $scope.total.Lancamentos.emCaixa += lancamentos.LancamentosEmCaixa[i].Entrada - lancamentos.LancamentosEmCaixa[i].Saida;
            }
        }

        $scope.isEquals = function () {
            $scope.equals = false;
            for (var i = 0; i < $scope.state.conferencia.data.Pagamentos.length; i++)
                if (($scope.state.conferencia.data.Pagamentos[i].Valor != $scope.state.conferencia.data.EmCaixa[i].Valor) && !$scope.equals) {
                    $scope.equals = true;
                    return $scope.equals
                }

            return $scope.equals;
        }

        $scope.setFlagPayments = function () {
            for (var i = 0; i < $scope.state.conferencia.data.Pagamentos.length; i++)
                if ($scope.state.conferencia.data.Pagamentos[i].Valor != $scope.state.conferencia.data.EmCaixa[i].Valor)
                    $scope.state.conferencia.data.EmCaixa[i].Confirmado = true;
                else
                    $scope.state.conferencia.data.EmCaixa[i].Confirmado = false;
        }

        function CheckScopeBeforeApply() {
            setTimeout(function () {
                $scope.$apply();
            }, 1);
        };

        $scope.checkAuthorization = function () {
            if (!$scope.state.lancamentos.item)
                return;
            if ($scope.state.lancamentos.item.Tipo.TipoMovimentacao == 1)
                $scope.state.lancamentos.item.Entrada = 0;
            else
                $scope.state.lancamentos.item.Saida = 0;

            var autorizacao = $.parseJSON($scope.$parent.config.AutorizaMovimentacao);
            for (var i = 0; i < autorizacao.length; i++)
                if ($scope.state.lancamentos.item.Tipo.Codigo == autorizacao[i]) {

                    $scope.autorizacao = true;
                    carregar();
                    return;
                }

            carregar();
            $scope.autorizacao = false;
            return;
        }

        var carregar = function () {
            $scope.state.caixaByTipoLancamento.carregando = true;
            $timeout(function () { $scope.state.caixaByTipoLancamento.carregando = false;; }, 500);
        }

        $scope.editar = function (index) {
            $scope.state.index = index;
            angular.copy($scope.state.lancamentos.data[index], $scope.state.lancamento);
            $scope.state.lancamentos.item = $scope.state.lancamentos.data[index];
        }

        $scope.descartar = function () {
            angular.copy($scope.state.lancamento, $scope.state.lancamentos.data[$scope.state.index]);

            $scope.state.lancamentos.item = null;
        }

        $scope.toggleModalFechamentoCaixa = function () {
            $scope.state.fechamentoDetalhado.modalCaixa = !$scope.state.fechamentoDetalhado.modalCaixa;
        }

        $scope.toggleModalFechamentoLoja = function () {
            $scope.state.fechamentoDetalhado.modalLoja = !$scope.state.fechamentoDetalhado.modalLoja;
        }

        $scope.getConferenciaCaixa = function () {
            caixaService.getCaixaConferencia().then(
                function (response) {
                    if (response.Status < 0) {
                        $scope.$parent.toastr.info(response.Message, "Serviço");
                        return;
                    }
                    $scope.state.fechamentoDetalhado.conferencia = response.Data;
                },
                function (response) {
                    $scope.$parent.toastr.info(response, "Serviço");
                });
        }
        $scope.toggleReferenciaPagamento = function (codigoTipoPgto, index) {
            if (codigoTipoPgto == 'D')
                return;

            var exists = $scope.state.fechamentoDetalhado.conferencia.Conferencia[index].ReferenciaPagamento;
            $scope.state.fechamentoDetalhado.conferencia.Conferencia[index].Open = !$scope.state.fechamentoDetalhado.conferencia.Conferencia[index].Open;

            if (exists && exists.length > 0)
                return;


            getReferenciaPagamento(codigoTipoPgto, index);
        }

        $scope.save = function () {
            var caixa = $scope.state.fechamentoDetalhado.conferencia;

            caixaService.saveConferenciaCaixa(caixa).then(
                function (response) {
                    if (response.Status < 0) {
                        $scope.toggleModalDivergencia(response.Message);
                        return;
                    }
                    $scope.state.fechamentoDetalhado.modalCaixa = false;
                    $scope.state.lancamentos.ativo = false;
                    $scope.refresh();
                    $scope.$parent.toastr.success("Caixa fechado com sucesso");
                },
                function (response) {
                    $scope.$parent.toastr.info(response, "Serviço");
                });
        }

        var getReferenciaPagamento = function (codigoTipoPgto, index) {
            caixaService.getReferenciaPagamento(codigoTipoPgto).then(
                function (response) {
                    if (response.Status < 0) {
                        $scope.$parent.toastr.info(response.Message, "Serviço");
                        return;
                    }
                    $scope.state.fechamentoDetalhado.conferencia.Conferencia[index].ReferenciaPagamento = [];
                    $scope.state.fechamentoDetalhado.conferencia.Conferencia[index].ReferenciaPagamento = response.Data;
                },
                function (response) {
                    $scope.$parent.toastr.info(response, "Serviço");
                });
        }

        $scope.toggleModalDivergencia = function (message) {
            $scope.textoDivergencia = message;
            $scope.state.fechamentoDetalhado.modalDivergencia = !$scope.state.fechamentoDetalhado.modalDivergencia;
        }

        $scope.toggleModalTermos = function () {
            $scope.state.fechamentoDetalhado.modalTermos = !$scope.state.fechamentoDetalhado.modalTermos;
        }

        $scope.terminaisAbertos = function () {
            caixaService.terminaisAbertos().then(
                function (response) {
                    if (response.Status < 0) {
                        $scope.$parent.toastr.info(response.Message, "Serviço");
                        return;
                    }
                    if (response.Data == true) {
                        if ($scope.$parent.config.Terminal.Codigo || $scope.$parent.config.TerminalUnico) {
                            $scope.$parent.config.Terminal.Codigo = ($scope.$parent.config.TerminalUnico ? $scope.$parent.config.TerminalCorrente : $scope.$parent.config.Terminal.Codigo);
                            $scope.refresh();
                        }
                    }
                    else {
                        $scope.modalLojaFechamento = true;
                    }
                },
                function (response) {
                    $scope.$parent.toastr.info(response, "Serviço");
                });
        }

        $scope.home = function () {
            $state.go('state-home');
        }

        $scope.initialize();

    }



})();