(function () {
    "use strict";

    angular.module('pos').controller('consignacaoEditController', controller);
    controller.$inject = ['$scope', '$state', '$stateParams', '$window', 'consignacaoService', '$timeout', 'configService', '$confirm', 'entidadeAuxiliarService', 'notaFiscalService'];

    function controller($scope, $state, $stateParams, $window, consignacaoService, $timeout, configService, $confirm, entidadeAuxiliarService, notaFiscalService) {
        $scope.Title = "Consignação";

        $scope.state = {
            changed: false,
            carregando: false,
            codigo: "",
            data: {},
            tabelaspreco: [],
            tiposconsignacao: [],
            mostraEventos: false,
            mostraEncerramento: false,
            mostraConverter: false,
            mostraGerarNFSaida: false,
            mostraGerarNFRetorno: false,
            textNovoEvento: "",
            listaProdutosPreVenda: [],
            NaturezaOperacao: {},
            Serie: {},
            Volumes: 0,
            NaturezaOperacaoRetorno: {},
            SerieRetorno: {},
            VolumesRetorno: 0,
            carregandoEnviarSefaz: false,
            modalEnviarsefaz: false,
            statusNfe: '',
            mostrarEnviarSefaz: false
       
        };

        $scope.state.naturezas = [];
        $scope.state.series = [];
        $scope.state.naturezasretorno = [];
        $scope.state.tiposFrete = [
          { Tipo: 0, Descricao: "Por conta do emitente" },
          { Tipo: 1, Descricao: "Por conta do destinatário" },
          { Tipo: 2, Descricao: "Por conta de terceiros" },
          { Tipo: 9, Descricao: "Sem frete" }
        ];
        $scope.gerandoNotaFiscal = false;
        $scope.gerandoNotaFiscalRetorno = false;

        $scope.searchItemConsignacao = "";

        $scope.openEventos = function () {
            $scope.state.mostraEventos = true;
        }

        $scope.closeEventos = function () {
            $scope.state.mostraEventos = false;
        }

        $scope.refresh = function () {
            $scope.state.carregando = true;
            consignacaoService.getConsignacao($scope.state.codigo).then(
                function (response) {
                    $scope.state.carregando = false;
                    if (response.Status < 0) { $scope.$parent.toastr.error(response.Message, 'Serviço'); }
                    else {
                        angular.copy(response.Data, $scope.state.data);
                    }
                },
                function (error) {
                    $scope.$parent.toastr.error(error, "Serviço");
                });
        }

        $scope.getTabelasPreco = function () {
            configService.getAllTabelasPreco()
                .then(
                    function (response) {
                        if (response.Status < 0) { $scope.$parent.toastr.error(response.Message, 'Serviço'); }
                        else {
                            $scope.state.tabelaspreco = response.Data;
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        $scope.getTiposConsignacao = function () {
            consignacaoService.getAllTiposConsignacao()
                .then(
                    function (response) {
                        if (response.Status < 0) { $scope.$parent.toastr.error(response.Message, 'Serviço'); }
                        else {
                            $scope.state.tiposconsignacao = response.Data;
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        $scope.save = function () {
            if (!$scope.state.data.Cliente.Codigo) {
                $scope.$parent.toastr.error("Informe o cliente corretamente.", 'Atenção');
                return;
            }

            if (!$scope.state.data.TipoConsignacao.Codigo) {
                $scope.$parent.toastr.error("Informe o tipo de consignação corretamente.", 'Atenção');
                return;
            }

            if (!$scope.state.data.TabelaPreco.Codigo) {
                $scope.$parent.toastr.error("Informe a tabela de preço corretamente.", 'Atenção');
                return;
            }

            if (!$scope.state.data.Emissao) {
                $scope.$parent.toastr.error("Informe a data de emissão corretamente.", 'Atenção');
                return;
            }

            if (!$scope.state.data.Itens.length) {
                $scope.$parent.toastr.error("Informe pelo menos um produto para consignação.", 'Atenção');
                return;
            }
            ;
            consignacaoService
                .save($scope.state.data)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else {
                            $scope.state.data = response.Data;
                            $state.go("state-consignacao-detail", { codigo: $scope.state.codigo });
                            $scope.refresh();
                            $scope.$parent.toastr.success("A consignação foi salva com sucesso.", 'Sucesso');
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        $scope.saveSefaz = function () {
            if (!$scope.state.data.Cliente.Codigo) {
                $scope.$parent.toastr.error("Informe o cliente corretamente.", 'Atenção');
                return;
            }

            if (!$scope.state.data.TipoConsignacao.Codigo) {
                $scope.$parent.toastr.error("Informe o tipo de consignação corretamente.", 'Atenção');
                return;
            }

            if (!$scope.state.data.TabelaPreco.Codigo) {
                $scope.$parent.toastr.error("Informe a tabela de preço corretamente.", 'Atenção');
                return;
            }

            if (!$scope.state.data.Emissao) {
                $scope.$parent.toastr.error("Informe a data de emissão corretamente.", 'Atenção');
                return;
            }

            if (!$scope.state.data.Itens.length) {
                $scope.$parent.toastr.error("Informe pelo menos um produto para consignação.", 'Atenção');
                return;
            }
            ;
            consignacaoService
                .save($scope.state.data)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else {
                            $scope.state.data = response.Data;
                            
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        $scope.addEvento = function () {
            consignacaoService
                .saveEvent($scope.state.data.Codigo, $scope.state.textNovoEvento)
                .then(
                    function (response) {
                        if (response.Status < 0)
                            $scope.$parent.toastr.error(response.Message, 'Serviço');
                        else {
                            $scope.state.data.Observacao = response.Data;
                            $scope.state.textNovoEvento = "";
                            $timeout(function () {
                                $('#textareaOBS').animate({ scrollTop: document.getElementById('textareaOBS').scrollHeight }, 400, function () { });
                            }, 100);
                            $scope.$parent.toastr.success("Evento confirmado com sucesso.", 'Sucesso');
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        

        $scope.calculate = function (item) {
            var qtdeitem = 0;
            for (var i = 0; i < item.Tamanhos.length; i++) {
                qtdeitem += item.Tamanhos[i].Quantidade;
            }
            item.Quantidade = qtdeitem;
            item.Valor = qtdeitem * item.Preco;

            $scope.recalculateTotal();
        }

        $scope.recalculateTotal = function () {
            var qtdetotal = 0;
            var valortotal = 0;
            for (var i = 0; i < $scope.state.data.Itens.length; i++) {
                qtdetotal += $scope.state.data.Itens[i].Quantidade;
                valortotal += $scope.state.data.Itens[i].Valor;
            }
            $scope.state.data.QuantidadeTotal = qtdetotal;
            $scope.state.data.ValorTotal = valortotal;
        }

        $scope.limpaCodBarFocus = function () {
            $timeout(function () {
                $scope.searchItemConsignacao = "";
                $('[ng-model$="searchItemConsignacao"]').focus();
            });
        }

        $scope.pesquisaProduto = function () {
            if (!$scope.searchItemConsignacao) {
                $scope.$parent.toastr.error("Informe o código de barras corretamente.", 'Atenção');
                return;
            }

            if (!$scope.state.data.TabelaPreco || !$scope.state.data.TabelaPreco.Codigo) {
                $scope.$parent.toastr.error("Selecione uma tabela de preço para definir preço dos produtos a serem incluídos.", 'Atenção');
                return;
            }


            if ($scope.state.data.Encerramento) {
                $scope.$parent.toastr.error("Consignação já está encerrada, não é possível incluir novos itens.", 'Atenção');
                return;
            }

            //enviar o codigo de barras e os itens atuais, retornar os itens ja adicionado o item enviado
            consignacaoService
                .addItem($scope.state.data, $scope.searchItemConsignacao)
                .then(
                    function (response) {
                        if (response.Status < 0) {
                            $scope.$parent.toastr.error(response.Message, 'Atenção');
                        }
                        else {
                            angular.copy(response.Data, $scope.state.data.Itens);
                            $scope.recalculateTotal();
                        }
                        $scope.limpaCodBarFocus();
                    },
                    function (err) {
                        $scope.$parent.toastr.error(err);
                        $scope.limpaCodBarFocus();
                    }
                );


        }

        $scope.trocarTabelaPreco = function () {
            if ($scope.state.data.Itens != 0) {
                consignacaoService
                 .trocarTabelaPreco($scope.state.data, $scope.state.data.TabelaPreco.Codigo)
                     .then(
                        function (response) {
                            if (response.Status < 0) {
                                $scope.$parent.toastr.error(response.Message, 'Serviço');
                            }
                            else {
                                angular.copy(response.Data, $scope.state.data.Itens);
                                $scope.recalculateTotal();
                            }
                            $scope.limpaCodBarFocus();
                        },
                        function (err) {
                            $scope.$parent.toastr.error(err);
                            $scope.limpaCodBarFocus();
                        }
                    );
            }
        }

        $scope.enterCodigo = function ($event) {
            if ($event.keyCode == 10 || $event.keyCode == 13)
                $scope.pesquisaProduto();
        }

        $scope.deleteItem = function (index) {
            $scope.state.data.Itens.splice(index, 1);
            $scope.recalculateTotal();
        };

        $scope.openEncerrar = function () {
            $scope.state.mostraEncerramento = true;
        }

        $scope.closeEncerrar = function () {
            $scope.state.mostraEncerramento = false;
        }

        $scope.encerrarConsignacao = function () {
            consignacaoService
               .encerrarConsignacao($scope.state.data)
               .then(
                   function (response) {
                       if (response.Status < 0)
                           $scope.$parent.toastr.error(response.Message, 'Serviço');
                       else {
                           $scope.state.data = response.Data;
                           $scope.closeEncerrar();
                           $scope.$parent.toastr.success("A consignação foi encerrada com sucesso.", 'Sucesso');
                       }
                   },
                   function (err) { $scope.$parent.toastr.error(err); }
               );
        }

        $scope.getStatus = function (item) {

            if (item.Encerramento) {
                return "Encerrada";
            }

            var hoje = new Date();
            hoje.setHours(0, 0, 0, 0)
            var expiraEm = Math.ceil((new Date(item.Retorno) - hoje) / 86400000);

            if (expiraEm < 0) {
                //expirada
                return "Expirada";
            }
            if (expiraEm < 3) {
                //expirando
                return "Expirando";
            }
            if (expiraEm < 7) {
                //breve
                return "Em Breve";
            }
            if (expiraEm >= 7) {
                //com tempo ainda
                return "Em dia";
            }
        };

        $scope.getStatusColor = function (item) {

            if (item.Encerramento) {
                return "label-default";
            }

            var hoje = new Date();
            hoje.setHours(0, 0, 0, 0)
            var expiraEm = Math.ceil((new Date(item.Retorno) - hoje) / 86400000);

            if (expiraEm < 0) {
                //expirada
                return "label-danger";
            }
            if (expiraEm < 3) {
                //expirando
                return "label-warning";
            }
            if (expiraEm < 7) {
                //breve
                return "label-info";
            }
            if (expiraEm >= 7) {
                //com tempo ainda
                return "label-success";
            }
        };

        $scope.openConverter = function () {
            angular.copy($scope.state.data.Itens, $scope.state.listaProdutosPreVenda);
            $scope.state.mostraConverter = true;
        }

        $scope.closeConverter = function () {
            $scope.state.mostraConverter = false;
        }

        $scope.converterConsignacao = function () {

            var qtdeTotal = 0;
            for (var i = 0; i < $scope.state.listaProdutosPreVenda.length; i++) {
                qtdeTotal += $scope.state.listaProdutosPreVenda[i].Quantidade;
            }
            if (qtdeTotal <= 0) {
                $scope.$parent.toastr.error("Nenhum item foi selecionado. Se não haverá a venda dos produtos, faça o Encerramento da Consignação.", 'Atenção');
                return;
            }

            consignacaoService
               .converterConsignacao($scope.state.data, $scope.state.listaProdutosPreVenda)
               .then(
                   function (response) {
                       if (response.Status < 0)
                           $scope.$parent.toastr.error(response.Message, 'Serviço');
                       else {
                           var pedido = response.Data;
                           pedido = pedido.replace("-", "");
                           $scope.refresh();

                           $scope.confirmtoastr = $scope.$parent.toastr.success("A consignação foi convertida em pré-venda de número #" + pedido + "<br /><br /><button type='button' class='btn btn-primary'>OK</button>", 'Sucesso',
                           {
                               closeButton: false,
                               allowHtml: true,
                               timeOut: 0,
                               extendedTimeOut: 0,
                               tapToDismiss: false,
                               onShown: function (toast) {
                                   $scope.oldparent = $scope.$parent;
                                   $(angular.element(toast.el[0]).find("button")).click(function () {
                                       $scope.oldparent.toastr.clear($scope.confirmtoastr);
                                   });
                               }
                           });

                           $scope.state.mostraConverter = false;
                       }
                   },
                   function (err) { $scope.$parent.toastr.error(err); }
               );
        }

        $scope.verifica = function (linha, coluna) {
            var n = $scope.state.listaProdutosPreVenda[linha].Tamanhos[coluna];
            if (n && n.Quantidade == null) n.Quantidade = 0;
            var o = $scope.state.data.Itens[linha].Tamanhos[coluna];

            if (n && o && n.Quantidade != 0 && n.Quantidade != o.Quantidade) {
                $scope.$parent.toastr.warning("Quantidade inválida. Somente é permitido zerar um item. Não é possível alterar a quantidade original.");
                $scope.state.listaProdutosPreVenda[linha].Tamanhos[coluna].Quantidade = o.Quantidade;
            }
        }

        $scope.validaData = function (event) {
            var elem = $(event.target)[0];
            if (!elem || elem.value == "") return;
            var re = /^(((0[1-9]|[12][0-9]|3[01])([-.\/])(0[13578]|10|12)([-.\/])(\d{4}))|(([0][1-9]|[12][0-9]|30)([-.\/])(0[469]|11)([-.\/])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([-.\/])(02)([-.\/])(\d{4}))|((29)(\.|-|\/)(02)([-.\/])([02468][048]00))|((29)([-.\/])(02)([-.\/])([13579][26]00))|((29)([-.\/])(02)([-.\/])([0-9][0-9][0][48]))|((29)([-.\/])(02)([-.\/])([0-9][0-9][2468][048]))|((29)([-.\/])(02)([-.\/])([0-9][0-9][13579][26])))$/;
            if (!re.test(elem.value)) {
                $scope.$parent.toastr.warning("Data informada é inválida.");
                elem.value = "";
                if ($(elem).attr('ng-model') == "state.data.Emissao") $scope.state.data.Emissao = '';
                if ($(elem).attr('ng-model') == "state.data.Retorno") $scope.state.data.Retorno = '';
            }
        }

        $scope.openGerarNotaFiscalSaida = function () {
            ;
            $scope.getNaturezasOperacao();
            $scope.getSeriesNF();
            $scope.buscarTransportadoras();
            $scope.state.mostraGerarNFSaida = true;
        }

        $scope.closeGerarNotaFiscalSaida = function () {
            $scope.state.mostraGerarNFSaida = false;
        }

        $scope.getNaturezasOperacao = function () {
            consignacaoService.getNaturezasOperacao()
                .then(
                    function (response) {
                        if (response.Status < 0) { $scope.$parent.toastr.error("Erro ao buscar Naturezas de Operação: " + response.Message, 'Atenção'); }
                        else {
                            $scope.state.naturezas = response.Data;
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        $scope.getSeriesNF = function () {
            consignacaoService.getSeriesNF()
                .then(
                    function (response) {
                        if (response.Status < 0) { $scope.$parent.toastr.error("Erro ao buscar Séries de NF: " + response.Message, 'Atenção'); }
                        else {
                            $scope.state.series = response.Data;
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        $scope.buscarTransportadoras = function () {
            entidadeAuxiliarService.getAllTransportadora().then(
                function (response) {
                    $scope.state.transportadoras = response.Data;
                },
                function (error) {
                    $scope.$parent.toastr.error(error, "Serviço");
                }
                );
        }

        //$scope.validarTrocaTabelaPreco = function () {
        //    if ($scope.state.data.Itens.length && $scope.state.data.Itens.length > 0) {
        //        return "Não é possível alterar a tabela de preço de uma consignação que já possua itens.";
        //    }
        //}

        $scope.gerarNotaFiscal = function () {
            ;
            if (!$scope.state.NaturezaOperacao || !$scope.state.NaturezaOperacao.CFOP) {
                $scope.$parent.toastr.error("Selecione uma Natureza de Operação válida.", 'Atenção');
                return;
            }
            if (!$scope.state.Serie || !$scope.state.Serie.Codigo) {
                $scope.$parent.toastr.error("Selecione uma Série de NF válida.", 'Atenção');
                return;
            }
            if (!$scope.state.Volumes) {
                $scope.$parent.toastr.error("Informe o número de Volumes.", 'Atenção');
                return;
            }

            $scope.gerandoNotaFiscal = true;    
                consignacaoService
                  .gerarNotaFiscalSaida($scope.state.data, $scope.state.NaturezaOperacao, $scope.state.Serie, $scope.state.Volumes, $scope.state.transportadora, $scope.state.peso, $scope.state.tipoFrete)
                  .then(
                      function (response) {
                          $scope.gerandoNotaFiscal = false;
                          if (response.Status < 0)
                              $scope.$parent.toastr.error(response.Message, 'Serviço');
                          else {
                              $scope.state.data.Gerencial = false;
                              $scope.state.mostraGerarNFSaida = false;
                              $scope.state.data.NumeroNotaFiscal = response.Data;
                              $scope.state.data.SerieNotaFiscal = $scope.state.Serie.Codigo;
                              $scope.saveSefaz();

                              $timeout(function () {  
                                  $scope.enviarSefaz($scope.state.data.NumeroNotaFiscal, $scope.state.data.SerieNotaFiscal);
                                  $scope.refresh();
                              }, 300);
                              
                              
                              //$scope.confirmtoastr = $scope.$parent.toastr.success("A Nota Fiscal para Remessa de Consignacao foi gerada com sucesso.<br /><br /><button type='button' class='btn btn-primary'>OK</button>", 'Sucesso',
                              //{
                              //    closeButton: false,
                              //    allowHtml: true,
                              //    timeOut: 0,
                              //    extendedTimeOut: 0,
                              //    tapToDismiss: false,
                              //    onShown: function (toast) {
                              //        $scope.oldparent = $scope.$parent;
                              //        $(angular.element(toast.el[0]).find("button")).click(function () {
                              //            $scope.oldparent.toastr.clear($scope.confirmtoastr);
                              //        });
                              //    }
                              //});
                          }
                      },
                      function (err) {
                          $scope.gerandoNotaFiscal = false;
                          $scope.$parent.toastr.error(err);
                      }
                  );

        }

        $scope.enviarSefaz = function (numeroNotaFiscal, serieNotaFiscal) {
            ;
            $scope.state.mostrarEnviarSefaz = true;
            $confirm({ text: "Deseja enviar está nota para o Sefaz agora?", title: "Enviar Sefaz", ok: "Sim", cancel: "Não" })      
            .then(function () {
                $scope.state.modalEnviarsefaz = true;
                $scope.state.carregandoEnviarSefaz = true;
                notaFiscalService
               .EnviaNotaSefaz(numeroNotaFiscal, serieNotaFiscal, $scope.state.data.Filial.Nome)
                .then(
                    function (response) {
                        ;
                        if (response.Status < 0) {
                            $scope.state.modalEnviarsefaz = false;
                            $scope.state.carregandoEnviarSefaz = false;
                            $state.go("state-consignacao-detail", { codigo: $scope.state.codigo });
                            $scope.$parent.toastr.error(response.Message, 'Encerramento NF de saída');
                        } else {
                            $scope.state.modalEnviarsefaz = false;
                            $scope.state.carregandoEnviarSefaz = false; 
                            $scope.state.mostrarEnviarSefaz = false;
                            $scope.state.data.StatusNFE = response.Data.NFE.Status;
                            $scope.saveSefaz();
                            $state.go("state-consignacao-detail", { codigo: $scope.state.codigo });
                            $timeout(function () {
                                $scope.refresh();
                            }, 300);
                            $scope.$parent.toastr.success("NF Gerada com sucesso.");
                        }
                    }
                    //function (error) {
                    //    $scope.state.carregandoEnviarSefaz = false;
                    //    $scope.state.modalEnviarsefaz = false;
                    //    $scope.$parent.toastr.error(error, 'Comunicação com o servidor');
                    //}

                );
                } 
            );
        };
        

        $scope.openGerarNotaFiscalRetorno = function () {
            $scope.getNaturezasOperacaoRetorno();
            $scope.getSeriesNF();
            $scope.buscarTransportadoras();
            $scope.state.mostraGerarNFRetorno = true;
        }

        $scope.closeGerarNotaFiscalRetorno = function () {
            $scope.state.mostraGerarNFRetorno = false;
        }

        $scope.getNaturezasOperacaoRetorno = function () {
            consignacaoService.getNaturezasOperacaoRetorno()
                .then(
                    function (response) {
                        if (response.Status < 0) { $scope.$parent.toastr.error("Erro ao buscar Naturezas de Operação de Retorno: " + response.Message, 'Atenção'); }
                        else {
                            $scope.state.naturezasretorno = response.Data;
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        $scope.gerarNotaFiscalRetorno = function () {
            if (!$scope.state.NaturezaOperacaoRetorno || !$scope.state.NaturezaOperacaoRetorno.CFOP) {
                $scope.$parent.toastr.error("Selecione uma Natureza de Operação válida.", 'Atenção');
                return;
            }
            if (!$scope.state.SerieRetorno || !$scope.state.SerieRetorno.Codigo) {
                $scope.$parent.toastr.error("Selecione uma Série de NF válida.", 'Atenção');
                return;
            }
            if (!$scope.state.VolumesRetorno) {
                $scope.$parent.toastr.error("Informe o número de Volumes.", 'Atenção');
                return;
            }

            $scope.gerandoNotaFiscalRetorno = true;
            $scope.state.converterPreVendaGerarRetorno = false;
            consignacaoService
              .gerarNotaFiscalRetorno($scope.state.data, $scope.state.NaturezaOperacaoRetorno, $scope.state.SerieRetorno, $scope.state.VolumesRetorno)
              .then(
                  function (response) {
                      $scope.gerandoNotaFiscalRetorno = false;
                      if (response.Status < 0)
                          $scope.$parent.toastr.error(response.Message, 'Serviço');
                      else {
                          $scope.closeConverter();
                          $scope.enviarSefaz($scope.state.data.NumeroNotaFiscalRetorno, $scope.state.data.SerieNotaFiscalRetorno);
                          $scope.refresh();

                          $scope.confirmtoastr = $scope.$parent.toastr.success("A Nota Fiscal de Retorno de Consignação foi gerada com sucesso");
                          $scope.state.mostraGerarNFRetorno = false;
                          $scope.state.converterPreVendaGerarRetorno = false;
                      }
                  },
                  function (err) {
                      $scope.gerandoNotaFiscalRetorno = false;
                      $scope.state.converterPreVendaGerarRetorno = false;
                      $scope.$parent.toastr.error(err);
                  }
              );

        }

        $scope.imprimirComprovanteRemessa = function () {
            consignacaoService.imprimirComprovanteRemessa($scope.state.data)
                .then(
                    function (response) {
                        if (response.Status < 0) { $scope.$parent.toastr.error("Erro ao imprimir comprovante de Remessa: " + response.Message, 'Atenção'); }
                        else {
                            $scope.$parent.toastr.success("A Impressão foi enviada para a fila de impressão.", 'Sucesso');
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        $scope.imprimirComprovanteRetorno = function () {
            consignacaoService.imprimirComprovanteRetorno($scope.state.data)
                .then(
                    function (response) {
                        if (response.Status < 0) { $scope.$parent.toastr.error("Erro ao imprimir comprovante de Retorno: " + response.Message, 'Atenção'); }
                        else {
                            $scope.$parent.toastr.success("A Impressão foi enviada para a fila de impressão.", 'Sucesso');
                        }
                    },
                    function (err) { $scope.$parent.toastr.error(err); }
                );
        }

        $scope.openNotaFiscal = function(){
            $state.go("state-nota-fiscal-detail", { numero: $scope.state.data.NumeroNotaFiscal , serie: $scope.state.data.SerieNotaFiscal});
        };

        //$scope.openPreVenda = function () {
        //    $state.go("state-venda-add", { id:  });
        //};

        $scope.openNotaFiscalRetorno = function () {
            $state.go("state-nota-fiscal-detail", { numero: $scope.state.data.NumeroNotaFiscalRetorno, serie: $scope.state.data.SerieNotaFiscalRetorno });
        };

        var initialize = function () {
            $scope.getTabelasPreco();
            $scope.getTiposConsignacao();
            $scope.state.codigo = $stateParams.codigo;
            $scope.refresh();
        }

        initialize();

        $scope.$watch('state.data', function (valor, oldvalue) {
            if (!$scope.state.carregando) {
                $scope.state.changed = true;
            }
        }, true)

    }

})();