rw.ft = (function ($, rw) {
    return {
        criaModulo: {}
    }
} ($, rw))

rw.ft.clientes = (function ($, rw) {
    function insere(idTabela) {
        return function (registro) {
            var row = rw.tabelas.insereLinha(idTabela)
            $(row).hide()

            var cell = row.insertCell(-1)
            cell.innerHTML = registro.codigo

            cell = row.insertCell(-1)
            cell.innerHTML = registro.nome

            $(row).fadeIn(rw.FADE())
        }
    }

    function insereF4(idInput, idTabela) {
        return function (registro) {
            var row = rw.tabelas.insereLinha(idTabela)
            $(row).hide()

            var cell = row.insertCell(-1)
            cell.innerHTML = registro.codigo

            cell = row.insertCell(-1)
            cell.innerHTML = registro.nome

            $(row).click(rw.consultasF4.descricao(registro, idInput))

            $(row).fadeIn(rw.FADE())
        };
    }

    return {
        insere: insere,
        insereF4: insereF4
    };

} ($, rw))

rw.ft.clientesFornecedores = (function ($, rw) {
    function insereF4(idInput, idTabela) {
        return function (registro) {
            var row = rw.tabelas.insereLinha(idTabela)
            $(row).hide()

            var cell = row.insertCell(-1)
            cell.innerHTML = registro.codigo

            cell = row.insertCell(-1)
            cell.innerHTML = registro.nome

            cell = row.insertCell(-1)
            cell.innerHTML = registro.tipo

            $(row).click(rw.consultasF4.descricao(registro, idInput))

            $(row).fadeIn(rw.FADE())
        };
    }

    return {
        insereF4: insereF4
    };

} ($, rw))

rw.ft.historicoClientes = (function ($, rw) {
    var _dadosTabela = []
    var _anotacoesCliente;
    var _historicoClientes;
    function _setDadosTabelaUltimasCompras(dadosTab) { _dadosTabela = dadosTab; }
    function _setDadosHistoricoClientes(historicoClientes) { _historicoClientes = historicoClientes; }

    function abrirAnotacoes() {
        if ($(".wkblack").length == 0)
            $(document.body).append('<div class="wkblack"></div>')
        if ($("##wkf4Anotacoes").length == 0)
            $(document.body).append('<div id="#wkf4Anotacoes" class="wkf4AnotacoesGerais"></div>')

        $("##wkf4Anotacoes").css("top", 230)
        $("##wkf4Anotacoes").css("left", Number($(window).width()) - Number($("#btnAnotacoes").width()) - 326)
        $("##wkf4Anotacoes").fadeIn(rw.FADE())
        // $("##wkf4Anotacoes").html("<textarea  id='anotacoesClienteF4Anotacoes'rows='2' readonly cols='40'>" + _anotacoesCliente + "</textarea>")
        $("#anotacoesClienteF4Anotacoes").focus()
        $(".wkblack").click(function (e) {
            $(".wkblack, ##wkf4Anotacoes").fadeOut(rw.FADE())
            consulta.buscaInicial()
        })
        $("#anotacoesClienteF4Anotacoes").blur(function () {
            $("##wkf4Anotacoes").hide(500)
            $("#anotacoesClienteF4Anotacoes").hide(500)
        })

        $(document.body).keydown(
                function (event) {
                    if (event.keyCode == 27) { // ESC
                        $(".wkblack, ##wkf4Anotacoes").fadeOut(rw.FADE())
                        consulta.buscaInicial()
                    }
                }
            )
    }

    function limparDados() {
        limpaDadosCliente()
        limpaDadosInformacoesComerciais()
        limpaDadosInformacoesFinanceiras()
    }

    function limpaDadosInformacoesComerciais() {
        $("#valorPedidos").html("")
        $("#condicoesPagamento").html("")
        $("#valorVendas").html("")
        $("#tabPrecos").html("")
        $("#valorDevolucoes").html("")
        $("#frequenciaMedia").html("")
        $("#produtoValor").html("")
        $("#produtoQtd").html("")
    }

    function limpaDadosInformacoesFinanceiras() {
        $("#limite").html("")
        $("#saldoVencido").html("")
        $("#creditoUtilizada").html("")
        $("#saldoVencer").html("")
        $("#adiantamento").html("")
        $("#mediaAtraso").html("")
        $("#preDatados").html("")
        $("#devolvidos").html("")
        $("#creditoDisponivel").html("")
        $("#maiorAtraso").html("")
        $("#venda").html("")
        $("#baixaInadimplencia").html("")
    }

    function limpaDadosCliente() {
        $("#desc_f4_txtCliente").val("")
        $("#txtCnpjCpf").val("")
        $("#txtInscricaoEstadual").val("")
        $("#clienteDesde").html("")
        $("#desc_f4_txtCliente").val("")
        $("#txtEndereco").val("")
        $("#txtContato").val("")
        $("#txtFone").val("")
        $("#txtEmail").val("")
        $("#txtPorte").val("")
        $("#txtTipo").val("")
        $("#txtRegiao").val("")
    }

    function buscaDadosCliente() {
        if (_historicoClientes.CNJP != null || _historicoClientes.CNPJ != undefined) {
            if (_historicoClientes.CNPJ != "00.000.000/0000-00")
                $("#txtCnpjCpf").val(_historicoClientes.CNPJ)
        }

        $("#txtInscricaoEstadual").val(_historicoClientes.InscEstadual)
        $("#clienteDesde").html(_historicoClientes.ClienteDesde)
        $("#txtClientenome").val(_historicoClientes.Nome)
        $("#txtEndereco").val(_historicoClientes.Endereco)
        $("#txtContato").val(_historicoClientes.Contato)
        $("#txtFone").val(_historicoClientes.Telefone)
        $("#txtEmail").val(_historicoClientes.Email)
        $("#txtPorte").val(_historicoClientes.Porte)
        $("#txtTipo").val(_historicoClientes.Tipo)
        $("#txtRegiao").val(_historicoClientes.Regiao)

        //ANATOCAO QUE SERA CARREGADA NO METODO "abrirAnotacoes"
        $("#txtRegiao").val(_historicoClientes.Anotacoes)
        //_anotacoesCliente = _historicoClientes.Anotacoes;
    }

    function buscaDadosInformacoesComerciais() {
        $("#valorPedidos").html(_historicoClientes.ValorPedidos)
        $("#condicoesPagamento").html(_historicoClientes.CondicaoPagamento)
        $("#valorVendas").html(_historicoClientes.ValorVendas)
        $("#tabPrecos").html(_historicoClientes.TabPrecos)
        $("#valorDevolucoes").html(_historicoClientes.ValorDevolucoes)
        $("#frequenciaMedia").html(_historicoClientes.FrequenciaMedia)
        $("#produtoValor").html(_historicoClientes.ProdutoValor)
        $("#produtoQtd").html(_historicoClientes.ProdutoQtd)
    }

    function buscaDadosInformacoesFinanceiras() {
        $("#limite").html(_historicoClientes.Limite + " " + _historicoClientes.LimiteData)
        $("#saldoVencido").html(_historicoClientes.SaldoVencido)
        $("#creditoUtilizada").html(_historicoClientes.CreditoUtilizado)
        $("#saldoVencer").html(_historicoClientes.SaldoVencer)
        $("#adiantamento").html(_historicoClientes.Adiantamentos)
        $("#mediaAtraso").html(_historicoClientes.MediaAtraso + " " + _historicoClientes.MediaAtrasoUn)
        $("#preDatados").html(_historicoClientes.Predatados)
        $("#devolvidos").html(_historicoClientes.devolvidos)
        $("#creditoDisponivel").html(_historicoClientes.CreditoDisponivel)
        $("#maiorAtraso").html(_historicoClientes.MaiorAtraso)

        if (_historicoClientes.Venda == "AUTORIZADA")
            $("#venda").html(_historicoClientes.Venda != "AUTORIZADA" ? "<span style='color: red'>BLOQUEADA</span>" : "<span style='color: green'>AUTORIZADA</span>")

        $("#baixaInadimplencia").html(_historicoClientes.BaixasPorInad + " " + _historicoClientes.BaixasPorInadValor)
    }

    function buscaDadosUltimasCompras() {
        var tabela = $("#ultimasCompras")[0]
        rw.tabelas.limpa("#ultimasCompras")
        var registros = _dadosTabela

        $.map(registros, function (r) {
            var row = tabela.tBodies[0].insertRow(-1)

            $("#ultimasCompras tr:last").hide()

            var cell = row.insertCell(-1)
            cell.innerHTML = r.TipoMovimento
            cell.className = "wkvalor"

            cell = row.insertCell(-1)
            cell.innerHTML = r.Documento
            cell.className = "wkvalor"

            cell = row.insertCell(-1)
            cell.innerHTML = r.Filial
            cell.className = "wkint"

            cell = row.insertCell(-1)
            cell.innerHTML = r.Emissao
            cell.className = "wkdata"

            cell = row.insertCell(-1)
            cell.innerHTML = r.Saida
            cell.className = "wkdata"

            cell = row.insertCell(-1)
            cell.innerHTML = r.ValorVenda
            cell.className = "wkvalor"

            cell = row.insertCell(-1)
            cell.innerHTML = r.ValorDesconto
            cell.className = "wkvalor"

            cell = row.insertCell(-1)
            cell.innerHTML = r.Vendedor
            cell.className = "wkint"

            cell = row.insertCell(-1)
            cell.innerHTML = r.Representante
            cell.className = "wkint"

            $("#ultimasCompras tr:last").fadeIn(rw.FADE())
        })
    }

    function buscarDados(dataInicial) {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            _setDadosHistoricoClientes(data.resposta.historicoClientes)
            _setDadosTabelaUltimasCompras(data.resposta.UltimasCompras)
        }

        $.ajax("../api/ft/consulta-historicocliente.asp", {
            data: {
                txtDataInicial: $("#txtDataInicial").val(),
                txtDataFinal: $("#txtDataFinal").val(),
                txtCliente: $("#txtCliente").val()
            }, async: false,
            success: callback
        })

        buscaDadosCliente()
        buscaDadosInformacoesComerciais()
        buscaDadosInformacoesFinanceiras()
        buscaDadosUltimasCompras()
    }

    return {
        buscarDados: buscarDados,
        limparDados: limparDados,
        abrirAnotacoes: abrirAnotacoes

    };
} ($, rw))

rw.ft.agendamentosVisitas = (function ($, rw) {
    function objToParameters(obj) {
        var url = "'{"
        var primeiro = true

        for (attr in obj) {
            if (!primeiro) {
                url += ',"' + encodeURI(attr) + '":"' + encodeURI(obj[attr]) + '"'
            } else {
                url += '"' + encodeURI(attr) + '":"' + encodeURI(obj[attr]) + '"'
                primeiro = false;
            }
        }

        url += "}'"
        return url
    }

    var registroSelecionado;
    function insere(idTabela) {
        return function (registro) {
            var row = rw.tabelas.insereLinha(idTabela)
            $(row).hide()

            var cell = row.insertCell(-1)
            cell.innerHTML = registro.numero;

            cell = row.insertCell(-1)
            cell.className = "wkdata"
            cell.innerHTML = registro.data;

            cell = row.insertCell(-1)
            cell.innerHTML = registro.cliente;

            cell = row.insertCell(-1)
            cell.innerHTML = registro.situacaovisita;

            cell = row.insertCell(-1)
            cell.innerHTML = registro.vendaefetuada;

            cell = row.insertCell(-1)
            cell.className = "wkvalor"
            cell.innerHTML = registro.valorvenda;

            row.setAttribute("numero", registro.numero)
            row.setAttribute("posicao", registro.posicao)
            row.setAttribute("data", registro.data)
            row.setAttribute("cliente", registro.cliente)
            row.setAttribute("situacaovisita", registro.situacaovisita)
            row.setAttribute("vendaefetuada", registro.vendaefetuada)
            row.setAttribute("valorvenda", registro.valorvenda)
            row.setAttribute("obsagendamento", registro.obsagendamento)
            row.setAttribute("objvisita", registro.objvisita)
            row.setAttribute("tipoperiodo", registro.tipoperiodo)
            row.setAttribute("diautil", registro.diautil)
            row.setAttribute("atendidopor", registro.atendidopor)
            row.setAttribute("reagendadapara", registro.reagendadapara)
            row.setAttribute("recalcularproximosreagendamentos", registro.recalcularproximosreagendamentos)
            // row.setAttribute("registro", objToParameters(registro))

            $(row).fadeIn(rw.FADE())
        }
    }

    function retornaSelecao() {
        return registroSelecionado;
    }

    return {
        insere: insere
    };


} ($, rw))

rw.ft.saldoTotal = (function ($, rw) {
    var _saldoTotal = 0

    function insere(idTabela) {
        return function (registro) {
            var row = rw.tabelas.insereLinha(idTabela)

            var cell = row.insertCell(-1)
            cell.className = "wkint"
            cell.innerHTML = registro.codigo

            cell = row.insertCell(-1)
            cell.innerHTML = registro.descricao

            cell = row.insertCell(-1)
            cell.innerHTML = registro.grade1

            cell = row.insertCell(-1)
            cell.innerHTML = registro.grade2

            cell = row.insertCell(-1)
            cell.innerHTML = registro.grade3

            cell = row.insertCell(-1)
            cell.className = "wkvalor"
            cell.innerHTML = String(registro.saldo).replace(".", ",")

            cell = row.insertCell(-1)
            cell.className = "wkvalor"
            cell.innerHTML = registro.preco

            _saldoTotal += parseFloat(registro.saldo)

            $(row).fadeIn(rw.FADE())
        }
    }

    function getSaldoTotal() {
        return _saldoTotal
    }

    function montaDados(idTabela, idOrdenacao) {
        return function () {
            _saldoTotal = 0

            return {
                produto: $("#produto").val(),
                filial: $("#filial").val(),
                tabela: $("#tabPrecos").val(),
                mostrar: $("#saldoZero")[0].checked,
                ep: $("#tipoEP")[0].checked,
                ept: $("#tipoEPT")[0].checked,
                etpe: $("#tipoETPE")[0].checked
            }
        }
    }

    return {
        insere: insere,
        montaDados: montaDados,
        getSaldoTotal: getSaldoTotal
    }
} ($, rw))

rw.ft.pedidos = (function ($, rw) {
    function insere(idTabela) {
        return function (registro) {
            var row = rw.tabelas.insereLinha(idTabela)

            var cell = row.insertCell(-1)
            cell.innerHTML = registro.codigo

            cell = row.insertCell(-1)
            cell.innerHTML = registro.cliente

            cell = row.insertCell(-1)
            cell.className = "wkdata"
            cell.innerHTML = registro.emissao

            cell = row.insertCell(-1)
            cell.className = "wkdata"
            cell.innerHTML = registro.entrega

            cell = row.insertCell(-1)
            cell.innerHTML = registro.situacao

            cell = row.insertCell(-1)
            cell.innerHTML = registro.valor
            cell.className = "wkvalor"

            $(row).click(function () { _preenchePedido(registro.ponteiro) })
            $(row).fadeIn(rw.FADE())
        }
    }

    function _preenchePedido(ponteiro) {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            $("#numero").val(data.resposta.registro.numero)
            $("#emissao").val(data.resposta.registro.emissao)
            $("#filial").val(data.resposta.registro.filial)
            $("#representante").val(data.resposta.registro.representante)
            $("#cliente").val(data.resposta.registro.cliente)
            $("#desconto").val(data.resposta.registro.desconto)
            $("#condicao").val(data.resposta.registro.condicao)
            $("#entrega").val(data.resposta.registro.entrega)
            $("#valor").val(data.resposta.registro.valor)
            $("#situacao").val(data.resposta.registro.situacao)
            $("#observacoes").val(data.resposta.registro.observacoes)
            $("#nrOcDoCliente").val(data.resposta.registro.numOcCliente)

            _preencheItens(data.resposta.registro.itens)
        }

        $.ajax("../api/ft/pedido.asp", {
            data: { ponteiro: ponteiro },
            async: false,
            success: callback
        })
    }

    function _preencheItens(itens) {
        rw.tabelas.limpa("#tabelaItensPedido")
        $.map(itens, function (item) {
            var row = rw.tabelas.insereLinha("#tabelaItensPedido")
            var cell = row.insertCell(-1)
            cell.innerHTML = item.codigo

            cell = row.insertCell(-1)
            cell.innerHTML = item.descricao

            cell = row.insertCell(-1)
            cell.innerHTML = item.grade1 == undefined ? "" : item.grade1

            cell = row.insertCell(-1)
            cell.innerHTML = item.grade1 == undefined ? "" : item.grade2

            cell = row.insertCell(-1)
            cell.innerHTML = item.grade1 == undefined ? "" : item.grade3

            cell = row.insertCell(-1)
            cell.className = "wkint"
            cell.innerHTML = item.quantidade

            cell = row.insertCell(-1)
            cell.innerHTML = item.valorunitario
            cell.className = "wkvalor"

            cell = row.insertCell(-1)
            cell.innerHTML = item.desconto
            cell.className = "wkvalor"

            cell = row.insertCell(-1)
            cell.innerHTML = item.valortotal
            cell.className = "wkvalor"

            $(row).fadeIn(rw.FADE())
        })
    }

    return {
        insere: insere
    }
} ($, rw))

rw.ft.movPedidos = (function ($, rw) {
    var _possuiItem = false
    var _ehPorcentagem = false

    function validaPermissoes() {                        
        if (!rw.temPermissao("FT", 65)) { //Alterar sugestoes tributaris
            $("#aliqIpi").attr("disabled", true)
            $("#aliqIcms").attr("disabled", true)
            $("#aliqIcmsSt").attr("disabled", true)
        }

        if (!rw.temPermissao("FT", 5)) { // incluir pedidos
            rw.msg.alerta("Sem permissão para incluir pedidos.")
            window.location = "../df/home.asp"
        }

        if (!rw.temPermissao("FT", 20)) // conceder desconto
            $("#descontoUnitario").attr("disabled", true)

        if (!rw.temPermissao("FT", 49)) // habilita livre de cobranca
            $("#livreDeCobranca").attr("disabled", true)

        if (!rw.temPermissao("FT", 17)) //alterar cond. pagamento
            $("#condDePgto").attr("disabled", true)

        if (!rw.temPermissao("FT", 38))  // permitir desconto superior tab. preço
            $("#descontoUnitario").blur(
                function()  {
                    var descontoUnitario = new Number(String($("#descontoUnitario").val()).replace(",", "."))                                        

                    if ($("#valorPorcentagemDesconto").html() == "$") {
                        var descontoMax = new Number(String($("#descontoUniMax").val()).replace(",", "."))

                        if (descontoUnitario > descontoMax && descontoMax > parseFloat(0)) {
                            rw.msg.alerta("Desconto informado superior ao máximo permitido nesta tabela.")
                            $("#descontoUnitario").focus()
                            $("#descontoUnitario").val($("#descontoUniMax").val())
                        }
            
                    } else {
                        var descontoMaxPorcentagem = new Number(String($("#descontoUniMaxPorcentagem").val()).replace(",", "."))

                        if (descontoUnitario > descontoMaxPorcentagem && descontoMaxPorcentagem > parseFloat(0)) {
                            rw.msg.alerta("Desconto informado superior ao máximo permitido nesta tabela.")
                            $("#descontoUnitario").focus()
                            $("#descontoUnitario").val($("#descontoMaxPorcentagem").val())
                        }
                    }
                }
            )

        if (!rw.temPermissao("FT", 10) && !rw.temPermissao("FT", 58)) {  // alterar preco venda produto maior e menor                
            $("#valorUnitario").attr("disabled", true)
        } else {
            if (!rw.temPermissao("FT", 10)) { // alterar preco vendar produto maior
                $("#valorUnitario").blur(
                    function() {
                        var valorUnitario = parseFloat(rw.formataString($("#valorUnitario").val()))
                        var valorSugerido = parseFloat(rw.formataString($("#valorUnitarioSugerido").val()))

                        if (valorUnitario > valorSugerido) {
                            rw.msg.alerta("Usuário sem permissão para atribuir um valor unitário superior ao da tabela de preços.")
                            $("#valorUnitario").focus()
                            $("#valorUnitario").val($("#valorUnitarioSugerido").val())
                        }           
                    }     
                )
            }

            if (!rw.temPermissao("FT", 58)) {  // alterar preco vendar produto menor
                $("#valorUnitario").blur(
                    function() {
                        var valorUnitario = parseFloat(rw.formataString($("#valorUnitario").val()))
                        var valorSugerido = parseFloat(rw.formataString($("#valorUnitarioSugerido").val()))

                        if (valorUnitario < valorSugerido) {
                            rw.msg.alerta("Usuário sem permissão para atribuir um valor unitário inferior ao da tabela de preços.")
                            $("#valorUnitario").focus()
                            $("#valorUnitario").val($("#valorUnitarioSugerido").val())
                        }
                    }
                )
            }
        }

        if (!rw.temPermissao("FT", 64)) { // informar Op comercial
            if ($("#opComercial").val() == "") 
                $("#opComercial").attr("name", "Op. Comerciais")
        }        

        $(window).ready(
            function() {
                if(!rw.temPermissao("FT", 22)) //alterar tab. preco sugerida
                    rw.habilitaDiv("#divTabPrecos", false) 
            }
        )
    }

    function validaVolumes() {
        var qtdEmb = String($("#qtdeEmbalagem").val()).replace(",", ".")
        var qtdPallet = String($("#qtdePallet").val()).replace(",", ".")
        var qtd = String($("#quantidade").val()).replace(",", ".")

        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            var bQtde = data.resposta.quantidadesCondizentesEmbalagem

            if (bQtde && qtdEmb != "0.00") {
                var dQtdEmb = new Number(qtdEmb)
                var dQtd = new Number(qtd)
                var dQuot = new Number(dQtd / dQtdEmb)
                var dx = new Number(0.000005)
                var dMin = new Number(Number(dQuot.toFixed(0)) - dx)
                var dMax = new Number(Number(dQuot.toFixed(0)) + dx)

                if (dQuot < dMin || dQuot > dMax) {
                    rw.msg.alerta("A Quantidade deve ser um número múltiplo de " + String(qtdEmb).replace(".", ",") + ".")
                    $("#quantidade").focus()
                    return
                }
            }

            if (bQtde && qtdEmb != "0.00") {
                var dQtdEmb

                if (qtdPallet == 0)
                    dQtdEmb = new Number(qtdEmb)
                else
                    dQtdEmb = new Number(qtdEmb * qtdPallet)

                var dQtd = new Number(qtd)
                var dQuot = new Number(dQtd / dQtdEmb)
                var dx = new Number(0.000005)
                var dMin = new Number(Number(dQuot.toFixed(0)) - dx)
                var dMax = new Number(Number(dQuot.toFixed(0)) + dx)

                if (dQuot < dMin || dQuot > dMax)
                    rw.msg.alerta("A Quantidade não é suficiente para completar um palete.")
            }
        }

        $.ajax(
            "../api/ft/valida-volumes.asp", {
                data: {},
                async: true,
                success: callback
            }
        )
    }

    function insere(idTabela) {
        return function (registro) {
            var row = rw.tabelas.insereLinha(idTabela)
            $(row).hide()
            var cell = row.insertCell(-1)
            cell.innerHTML = registro.codigo

            cell = row.insertCell(-1)
            cell.innerHTML = registro.cliente

            cell = row.insertCell(-1)
            cell.className = "wkdata"
            cell.innerHTML = registro.emissao

            cell = row.insertCell(-1)
            cell.className = "wkdata"
            cell.innerHTML = registro.entrega

            cell = row.insertCell(-1)
            cell.innerHTML = registro.situacao

            cell = row.insertCell(-1)
            cell.innerHTML = registro.valor
            cell.className = "wkvalor"

            $(row).fadeIn(rw.FADE())
        }
    }

    function preencheDadosPedido() {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            $("#nrPedido").val(data.resposta.registro.nrpedido)
            $("#dataemissao").val(data.resposta.registro.dataemissao)
            $("#representante").val(data.resposta.registro.representante)
            $("#ponteiroCFOP").val(0)
            $("#quantTotal").val("0")
            $("#quantidade").val("0,00")
            $("#pesoBruto").val("0,00")
            $("#pesoLiquido").val("0,00")
            $("#valorTotal").val("0,00")
            $("#valorTotalDoIpiDosItens").val("0,00")
            $("#totalDosProdutos").val("0,00")
            $("#acrescimo").val("0,00")
            $("#valorItem").val("0,00")
            $("#descontoUniMax").val("0,00")
        }

        $.ajax("../api/ft/consulta-dadosNovoPedido.asp", {
            data: {},
            async: true,
            success: callback
        })
    }

    function preencheDescricaoTransportadoraSugerida(transportadora) {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            $("#transportadora").val(data.resposta.registro.codigo)
            $("#desc_f4_transportadora").val(data.resposta.registro.nome)
        }

        $.ajax("../api/df/consulta-transportadora.asp", {
            data: { codigo: transportadora },
            async: true,
            success: callback
        }
        )
    }

    function preencheDadosCliente() {
        if($("#cliente").val() != '') {
            var callback = function(data) {                
                if(data.resposta.status == "ERRO") {
                    $("#cep").val("")
                    $("#uf").val("")
                    $("#municipio").val("")
                    $("#localEntrega").val("")
                    $("#formaPgto").val("")
                    $("#condDePgto").val("")
                    $("#tipoCobranca").val("")
                    $("#tabPreco").val("")
                    $("#transportadora").val("")
                    $("#desc_f4_transportadora").val("")
                    return
                }

                $("#cep").val(data.resposta.registro.CEP)
                $("#uf").val(data.resposta.registro.UF)
                $("#municipio").val(data.resposta.registro.municipio)
                $("#localEntrega").val(data.resposta.registro.endereco)

                if($.browser.msie) {
                    $(document.getElementById("fp_" + data.resposta.registro.codFormaPgto)).attr("selected", true)
                    $(document.getElementById("cp_" + data.resposta.registro.codCondPgto)).attr("selected", true)
                    $(document.getElementById("tc_" + data.resposta.registro.codTipoCobranca)).attr("selected", true)
                } else {
                    $("#formaPgto").val(data.resposta.registro.codFormaPgto)
                    $("#condDePgto").val(data.resposta.registro.codCondPgto)                
                    $("#tipoCobranca").val(data.resposta.registro.codTipoCobranca)
                }                

                if(data.resposta.registro.tabPreco != 0)
                    $("#tabPreco").val(data.resposta.registro.tabPreco)

                if(data.resposta.registro.transportadora != "")
                    preencheDescricaoTransportadoraSugerida(data.resposta.registro.transportadora)
            }

            $.ajax(
                "../api/ft/consulta-dadosCliente.asp", {
                    data: { codigo: $("#cliente").val().toUpperCase() },
                    async: true,
                    success: callback
                }
            )
        }
    }

    function _atualizaMascaraQtdeProduto(qtdeCasasDecimais) {
        var settings = { precision: qtdeCasasDecimais }
        $("#quantidade").maskMoney("init", settings)
        $("#quantidade").maskMoney("mask")
    }

    function preencheDadosProduto() {
        if ($("#produto").val() != '') {
            if ($("#cliente").val() == '') {
                rw.msg.alerta("Cliente deve ser informado.")
                $("#produto").val("")
                rw.abas.trocaAba("Principal")
                $("#cliente").focus()
                return
            }

            if ($("#filial").val() == '') {
                rw.msg.alerta("Filial deve ser informada.")
                $("#produto").val("")
                rw.abas.trocaAba("Principal")
                $("#filial").focus()
                return
            }

            CFOPeICMSSugerida()
            buscaPonteiroCFOPdoItem()

            var callback = function (data) {
                if (data.resposta.status == "ERRO") {
                    rw.msg.erro(data)
                    return
                }

                $("#aliqIcms").val(data.resposta.registro.ICMS)
                $("#aliqIpi").val(data.resposta.registro.IPI)
                $("#aliqIcmsSt").val(data.resposta.registro.ICMSST)
                $("#pesoBrutoItem").val(data.resposta.registro.pesoBruto)
                $("#pesoLiquidoItem").val(data.resposta.registro.pesoLiquido)
                $("#valorUnitario").val(data.resposta.registro.valorUni)
                $("#valorUnitarioSugerido").val(data.resposta.registro.valorUni)
                $("#descontoUnitario").val(data.resposta.registro.descontoUni)
                $("#descontoUniMax").val(data.resposta.registro.descontoUniMax)
                $("#descontoUniMaxPorcentagem").val(data.resposta.registro.descontoUniMaxPorcentagem)
                $("#qtdeEmbalagem").val(data.resposta.registro.qtdeEmbalagem)
                $("#qtdePallet").val(data.resposta.registro.qtdePallet)

                if (data.resposta.registro.dataEntrega != 0)
                    $("#dataEntregaProduto").val(data.resposta.registro.dataEntrega)

                _atualizaMascaraQtdeProduto(data.resposta.registro.qtdeCasasDecimais)
            }

            $.ajax(
                "../api/ft/consulta-dadosNovoItem.asp", {
                    data: {
                        cliente: $("#cliente").val(),
                        natureza: $("#ponteiroCFOP").val(),
                        produto: String($("#produto").val()).toUpperCase(),
                        grade1: String($("#g1_produto").val()).toUpperCase(),
                        grade2: String($("#g2_produto").val()).toUpperCase(),
                        grade3: String($("#g3_produto").val()).toUpperCase(),
                        filial: $("#filial").val(),
                        tabpreco: $("#tabPreco").val()
                    },
                    async: true,
                    success: callback
                }
            )
        }
    }

    function removeItem(posicao) {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            calculaValorTotalIPI()
            montaItens()
            carregaDadosTransporte()
            $("#desconto").val(0)
            atualizaValorTotal()
            carregaDadosParcelas()
        }

        $.ajax(
            "../api/ft/remove-item.asp", {
                data: { posicao: posicao },
                async: true,
                success: callback
            }
        )
    }  

    function montaItens() {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            rw.tabelas.limpa("#tableItens")
            
            $.map(data.resposta.itens, function (item) {
                var row = rw.tabelas.insereLinha("#tableItens")

                var cell = row.insertCell(-1)
                cell.innerHTML = item.codigo

                cell = row.insertCell(-1)
                cell.innerHTML = item.descricao

                cell = row.insertCell(-1)
                cell.innerHTML = item.grade1 == undefined ? "" : item.grade1

                cell = row.insertCell(-1)
                cell.innerHTML = item.grade2 == undefined ? "" : item.grade2

                cell = row.insertCell(-1)
                cell.innerHTML = item.grade3 == undefined ? "" : item.grade3

                cell = row.insertCell(-1)
                cell.className = "wkint"
                cell.innerHTML = item.quantidade

                cell = row.insertCell(-1)
                cell.className = "wkvalor"
                cell.innerHTML = rw.acrescentaZerosValor(item.valorUni)

                cell = row.insertCell(-1)
                cell.className = "wkvalor"
                cell.innerHTML = rw.acrescentaZerosValor(item.descontoUni)

                cell = row.insertCell(-1)
                cell.className = "wkvalor"
                cell.innerHTML = rw.acrescentaZerosValor(item.valorLiquidoUni)

                cell = row.insertCell(-1)
                cell.className = "wkvalor"
                cell.innerHTML = "<div class='wkbotoes'><button id='btnRemoveItem' onclick='rw.ft.movPedidos.removeItem(\"" + item.posicao + "\")'>X</button></div>"

                $(row).fadeIn(rw.FADE())
            })

            $("#totalDosProdutos").val(data.resposta.valorTotalProdutos)
        }

        $.ajax("../api/ft/consulta-itensmovPedidos.asp", {
            data: {},
            async: true,
            success: callback
        })
    }
    
    function carregaDadosTransporte() {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            var valorLiquidoAnterior = $("#pesoLiquido").val()
            var valorBrutoAnterior = $("#pesoBruto").val()
            var pesoLiquidoItem = parseFloat(rw.formataString(valorLiquidoAnterior)) + parseFloat(rw.formataString(data.resposta.registro.pesoLiquido))
            var pesoBrutoItem = parseFloat(rw.formataString(valorBrutoAnterior)) + parseFloat(rw.formataString(data.resposta.registro.pesoBruto))

            if (pesoLiquidoItem != NaN)
                $("#pesoLiquido").val(rw.substituiPontoPorVirgula("" + pesoLiquidoItem))

            if (pesoBrutoItem != NaN)
                $("#pesoBruto").val(rw.substituiPontoPorVirgula("" + pesoBrutoItem))
        }

        $.ajax("../api/ft/consulta-dadostransporte.asp", {
            data: {},
            async: true,
            success: callback
        })
    }

    function validaAdicionarItem() {
        if ($("#valorUnitario").val() == "" || $("#valorUnitario").val() == "undefined" || $("#valorUnitario").val() == "0,00") {
            rw.msg.campoVazio("Valor Unitário")
            return false
        }

        if ($("#descontoUnitario").val() == "" || $("#descontoUnitario").val() == "undefined") {
            rw.msg.campoVazio("Desconto Unitário")
            return false
        }

        if ($("#produto").val() == "" || $("#produto").val() == "undefined") {
            rw.msg.campoVazio("Produto")
            return false
        }

        if ($("#filial").val() == "" || $("#filial").val() == "undefined") {
            rw.msg.campoVazio("Filial")
            return false
        }

        if ($("#quantidade").val() == "" || $("#quantidade").val() == "undefined" || $("#quantidade").val() == "0" || $("#quantidade").val() == 0) {
            rw.msg.campoVazio("Quantidade")
            return false
        }

        if ($("#tabPreco").val() == "" || $("#tabPreco").val() == "undefined") {
            rw.msg.campoVazio("Tabela de Preços")
            return false
        }

        if (!rw.temPermissao("FT", 64)) { // informar Op comercial
            if ($("#opComercial").val() == "") {
                rw.msg.campoVazio("Op. Comerciais");
                rw.abas.trocaAba("Principal");
                $("#opComercial").focus()
                return false;
            }
        }

        return true
    }


    function CFOPeICMSSugerida() {
        if ($("#opComercial").val() != "") {
            var callback = function (data) {
                if (data.resposta.status == "ERRO") {
                    rw.msg.erro(data)
                    return
                }

                $("#ponteiroCFOP").val(data.resposta.ponteiroCfopSugerida)
                $("#aliqIcms").val(data.resposta.icms)
            }

            $.ajax("../api/ft/consulta-cfopSugerida.asp", {
                data: {
                    produto: $("#produto").val(),
                    filial: $("#filial").val(),
                    cliente: $("#cliente").val(),
                    codigoOp: $("#opComercial").val()
                }, 
                async: true,
                success: callback
            })
        }
    }

    function adicionarItem() {
        _possuiItem = true

        if ($("#valorItem").val() == "0")
            getValorItem()

        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }
            
            montaItens()
            carregaDadosTransporte()
        }

        $.ajax("../api/ft/add-item.asp", {
            data: {
                codigo: $("#produto").val(),
                complemento: $("#complemento").val(),
                quantidade: $("#quantidade").val(),
                valorUni: $("#valorUnitario").val(),
                descricao: $("#produtonome").val(),
                descontoUni: $("#descontoUnitario").val(),
                aliqIPI: $("#aliqIpi").val(),
                aliqICMS: $("#aliqIcms").val(),
                aliqICMSST: $("#aliqIcmsSt").val(),
                numOC: $("#nrOcProduto").val(),
                dataEntrega: $("#dataEntregaProduto").val(),
                pesoBrutoItem: $("#pesoBrutoItem").val(),
                pesoLiquidoItem: $("#pesoLiquidoItem").val(),
                tabelaPreco: $("#tabPreco").val(),
                grade1: $("#g1_produto").val(),
                grade2: $("#g2_produto").val(),
                grade3: $("#g3_produto").val(),
                livreCobranca: $("#livreDeCobranca").attr("checked"),
                ponteiroCFOP: $("#ponteiroCFOP").val(),
                descontoEmPorcentagem: _ehPorcentagem
            },
            async: false,
            success: callback
        })

        $("#produto").val("")
        $("#g1_produto").val("")
        $("#g2_produto").val("")
        $("#g3_produto").val("")
        $("#complemento").val("")
        $("#quantidade").val(0)
        $("#aliqIcms").val("")
        $("#aliqIpi").val("")
        $("#aliqIcmsSt").val("")
        $("#valorUnitario").val("")
        $("#nrOcProduto").val("")
        $("#dataEntregaProduto").val("")
        $("#descontoUnitario").val("")
        $("#desc_f4_produto").val("")
        $("#livreDeCobranca").attr("checked", false)
    }

    function alteraCondicoesPagamento() {
        var callback = function(data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }
            
            _montaTabelaCondPgto(data.resposta.registros)            
            $("#acrescimo").val(data.resposta.valorAcrescimo)
        }

        var total = String(Number(rw.formataString($("#valorTotal").val())) - Number(rw.formataString($("#acrescimo").val()))).replace('.', ',')        

        $.ajax("../api/ft/consulta-parcelas.asp", {
            data: {
                codCondPgto: $("#condDePgto").val(),
                setarDados: true,
                valorTotal: total
            }, 
            async: false,
            success: callback
        })
    }

    function carregaTiposCobrancas() {
        var callback = function(data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            var registros = data.resposta.registros
            var options = '<option id="tc_nenhum" value="nenhum">(Nenhum)</option>'

            $.map(registros, 
                function(r) {
                    options += '<option id="tc_' + r.codigo + '" value="' + r.codigo + '">' + r.nome + '</option>'
                }
            )

            $("#tipoCobranca").html(options)
        }

        $.ajax("../api/ft/consulta-tipocobranca.asp", {
            data: {},
            async: true,
            success: callback
        })
    }

    function carregaCondicoesPagamento() {
        var callback = function(data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            var registros = data.resposta.registros
            var options = ""

            $.map(
                registros,
                function(r) {
                    options += '<option id="cp_' + r.codigo + '" value="' + r.codigo + '">' + r.nome + '</option>'
                }
            )

            $("#condDePgto").html(options)
        }

        $.ajax("../api/ft/consulta-condpgto.asp", {
            data: {},
            async: true,
            success: callback
        })
    }

    function carregaFormasPagamentos() {
        var callback = function(data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            var registros = data.resposta.registros
            var options = '<option id="fp_nenhum" value="nenhum">(Nenhuma)</option>'

            $.map(
                registros,
                function(r) {
                    options += '<option id="fp_' + r.codigo + '" value="' + r.codigo + '">' + r.nome + '</option>'
                }
            )

            $("#formaPgto").html(options)
        }

        $.ajax("../api/ft/consulta-formasPagamento.asp", {
            data: {},
            async: true,
            success: callback
        })
    }

    function carregaDadosParcelas() {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            _montaTabelaCondPgto(data.resposta.registros)
        }     

        $.ajax("../api/ft/consulta-parcelas.asp", {
            data: {
                codCondPgto: $("#condDePgto").val(),
                setarDados: false,
                valorTotal: $("#valorTotal").val()
            },
            async: false,
            success: callback
        })
    }

    function _carregaDadosParcelasSemAtualizar() {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            _montaTabelaCondPgto(data.resposta.registros)
        }

        $.ajax("../api/ft/consulta-parcelas.asp", {
            data: {
                codCondPgto: $("#condDePgto").val(),
                setarDados: false,
                valorTotal: $("#valorTotal").val()
            }, 
            async: false,
            success: callback
        })
    }

    function _montaTabelaCondPgto(resultadoParcelas) {
        var tabela = $("#tableParcelas")[0]
        rw.tabelas.limpa("#tableParcelas")

        $.map(resultadoParcelas, function (r) {
            var row = tabela.tBodies[0].insertRow(-1)

            $("#tableParcelas tr:last").hide()

            var cell = row.insertCell(-1)
            cell.innerHTML = r.numero

            cell = row.insertCell(-1)
            cell.innerHTML = r.data
            cell.classonddeName = "wkdata"

            cell = row.insertCell(-1)
            cell.innerHTML = r.valor
            cell.className = "wkvalor"

            cell = row.insertCell(-1)
            cell.innerHTML = r.codFormaPagamento == "nenhum" ? "(Nenhuma)" : r.nomeFormaPagamento

            cell = row.insertCell(-1)
            cell.innerHTML = r.observacao

            $("#tableParcelas tr:last").fadeIn(rw.FADE())

            $(row).click(function() {
                rw.ft.movPedidos.carregaCamposParcela(r.numero)
            })
        })
    }

    function carregaCamposParcela(numeroParcela) {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            $("#nrParcela").val(data.resposta.parcela.numero)
            $("#vencimento").val(data.resposta.parcela.data)

            if($.browser.msie) 
                $("#formaPgto").attr("selectedIndex", data.resposta.parcela.codFormaPagamento)
            else
                $("#formaPgto").val(data.resposta.parcela.codFormaPagamento)

            $("#obs").val(data.resposta.parcela.observacao)
            $("#valor").val(data.resposta.parcela.valor)
            rw.habilitaCampo("#btnAlterarParcela", true)
        }

        $.ajax("../api/ft/altera-dadosParcela.asp", {
            data: { numeroParcela: numeroParcela },
            async: false,
            success: callback
        })
    }

    function alterarParcela() {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }
        }

        $.ajax("../api/ft/grava-dadosAlteradosParcela.asp", {
            data: {
                numeroParcela: $("#nrParcela").val(),
                vencimento: $("#vencimento").val(),
                valor: $("#valor").val(),
                obs: $("#obs").val(),
                codFormaPgto: $("#formaPgto").val()
            },
            async: false,
            success: callback
        })

        $("#nrParcela").val("")
        $("#vencimento").val("")
        $("#valor").val("")
        $("#acrescimo").val("")
        $("#obs").val("")
        rw.habilitaCampo("#btnAlterarParcela", false)
        _carregaDadosParcelasSemAtualizar()
    }

    function _refresh(opcao) {
        if (opcao == 2) {
            window.location.reload()
            return
        }

        if ($.browser.opera) {
            var keyPressed = window.event.keyCode
            if (keyPressed == 116) {
                var refresh = confirm("Tem certeza que deseja atualizar a página? As modificações feitas serão perdidas.")
                if (!refresh)
                    window.event.returnValue = false
            }
        }

        window.onbeforeunload = function () {
            if (opcao != 1)
                return "As modificações feitas serão perdidas."
        }
    }

    function atualizaValorTotal() {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            $("#valorTotal").val(data.resposta.valorTotalAtualizado)
        }

        $.ajax("../api/ft/atualiza-valor-total-pedido.asp", {
            data: {
                acrescimo: $("#acrescimo").val(),
                ipi: $("#valorTotalDoIpiDosItens").val(),
                desconto: $("#desconto").val()
            }, 
            async: false,
            success: callback
        })
    }

    function validaGravarPedido() {
        if ($("#transportadora").val() == '')
            $("#transportadora").val(0)

        if ($("#cfop").val() == "" || $("#cfop").val() == "_.___.____")
            $("#cfop").val(0)

        if ($("#cliente").val() == "" || $("#cliente").val() == undefined) {
            rw.msg.campoVazio("Cliente")
            return false
        }

        if ($("#filial").val() == "" || $("#filial").val() == undefined) {
            rw.msg.campoVazio("Filial")
            return false
        }

        if ($("#tabPreco").val() == "" || $("#tabPreco").val() == undefined) {
            rw.msg.campoVazio("Tabela de Preços")
            return false
        }

        if (!_possuiItem) {
            msg.alerta("É necessário incluir ao menos um item para gravar o pedido.")
            return false
        }

        return true
    }

    function buscaPonteiroCFOP() {     
        var cfop = $("#cfop").val().replace(/_/g, "")

        if(cfop.charAt(cfop.length - 1) == ".")
            cfop = cfop.slice(0, cfop.length - 1)

        if(cfop == ".")
            cfop = ""

        $("#cfop").val(cfop)

        if ($("#cfop").val() != "" && String(parseFloat($("#cfop").val())) != "NaN") {                  
            var callback = function (data) {
                if (data.resposta.status == "ERRO") 
                    return

                $("#ponteiroCFOP").val(data.resposta.registro.codigo)

                if (data.resposta.registro.intregaFinanceiro == "False") {
                    $("#livreDeCobranca").attr("disabled", true)
                    $("#livreDeCobranca").attr("checked", true)
                } else {
                    $("#livreDeCobranca").attr("disabled", false)
                    $("#livreDeCobranca").attr("checked", false)
                }
            }

            $.ajax("../api/ft/consulta-dados-natureza.asp", {
                data: { natureza: $("#cfop").val() },
                async: false,
                success: callback
            })
        } else {
            $("#ponteiroCFOP").val(0)
        }
    }

    function buscaPonteiroCFOPdoItem() {
        if ($("#opComercial").val() != "" && $("#cfop").val() == "") {
            var callback = function (data) {
                if (data.resposta.status == "ERRO") {
                    rw.msg.erro(data)
                    return
                }

                if (data.resposta.natureza.intregaFinanceiro == "False") {
                    $("#livreDeCobranca").attr("disabled", true)
                    $("#livreDeCobranca").attr("checked", true)
                } else {
                    $("#livreDeCobranca").attr("disabled", false)
                    $("#livreDeCobranca").attr("checked", false)
                }
            }

            $.ajax("../api/ft/consulta-naturezaPeloCodigo.asp", {
                data: { codigo: $("#ponteiroCFOP").val() },
                async: false,
                success: callback
            })
        }
    }

    function calculaValorTotalIPI() {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            $("#valorTotalDoIpiDosItens").val(data.resposta.ipi)
        }

        $.ajax("../api/ft/consulta-calculoIpi.asp", {
            data: { valorDesconto: $("#desconto").val() }, 
            async: false,
            success: callback
        })
    }    

    function getValorItem() {
        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            $("#valorItem").val(parseFloat(rw.formataString(data.resposta.registro.totalDoItem)))
        }

        $.ajax("../api/ft/consulta-calculoDescontoPorcentagem.asp", {
            data: {
                valorDesconto: $("#descontoUnitario").val(),
                valorUnitario: $("#valorUnitario").val(),
                ehPorcentagem: false
            },
            async: false,
            success: callback
        })
    }

    function calculaDescontoPorcentagem(ehPorcentagem) {
        _ehPorcentagem = !ehPorcentagem

        var callback = function (data) {
            if (data.resposta.status == "ERRO") {
                rw.msg.erro(data)
                return
            }

            if (data.resposta.registro.desconto != "")
                $("#descontoUnitario").val(data.resposta.registro.desconto)

            $("#valorItem").val(parseFloat(rw.formataString(data.resposta.registro.totalDoItem)))
            
            if (ehPorcentagem) 
                $("#valorPorcentagemDesconto").html("$")
            else 
                $("#valorPorcentagemDesconto").html("%")
        }

        $.ajax("../api/ft/consulta-calculoDescontoPorcentagem.asp", {
            data: {
                valorDesconto: $("#descontoUnitario").val(),
                valorUnitario: $("#valorUnitario").val(),
                ehPorcentagem: ehPorcentagem,
                recalcularDesconto: true
            },
            async: false,
            success: callback
        })
    }

    function gravarPedido() {
        if ($("#cfop").val() == "" || $("#cfop").val() == "_.___.____")
            $("#ponteiroCFOP").val(0)

        var callback = function (data) {
            if (data.resposta.status == "ERRO")
                rw.msg.erro(data)
            else
                rw.msg.alerta("Pedido cadastrado com sucesso.")
        }

        $.ajax("../api/ft/grava-pedido.asp", {
            data: {
                codigo: $("#nrPedido").val(),
                cliente: $("#cliente").val(),
                tabPreco: $("#tabPreco").val(),
                dataentrega: $("#dataEntrega").val(),
                cfop: $("#ponteiroCFOP").val(),
                opcomerciais: $("#opComercial").val(),
                observacoes: $("#observacoes").val(),
                pesobruto: $("#pesoBruto").val(),
                pesoliquido: $("#pesoLiquido").val(),
                marca: $("#marca").val(),
                especie: $("#especie").val(),
                numeroinicial: $("#nrInicial").val(),
                qtdtotal: $("#quantTotal").val(),
                freteconta: $("#fretePorConta").val(),
                transportadora: $("#transportadora").val(),
                viatransporte: $("#viaDeTransporte").val(),
                redespacho: $("#transpRedespacho").val(),
                valortotal: $("#valorTotal").val(),
                descontototal: $("#desconto").val(),
                dataEmissao: $("#dataemissao").val(),
                codCondPagto: $("#condDePgto").val(),
                filial: $("#filial").val(),
                numOcCliente: $("#nrOcDoCliente").val(),
                codTipoCobranca: $("#tipoCobranca").val(),
                localEntrega: $("#localEntrega").val(),
                valorIpiTotal: $("#valorTotalDoIpiDosItens").val()
            },
            async: false,
            success: callback
        })

        _refresh(2)
    }

    return {
        preencheDadosCliente: preencheDadosCliente,
        preencheDadosPedido: preencheDadosPedido,
        preencheDadosProduto: preencheDadosProduto,
        adicionarItem: adicionarItem,
        carregaFormasPagamentos: carregaFormasPagamentos,
        carregaCondicoesPagamento: carregaCondicoesPagamento,
        carregaTiposCobrancas: carregaTiposCobrancas,
        carregaDadosParcelas: carregaDadosParcelas,
        carregaCamposParcela: carregaCamposParcela,
        alterarParcela: alterarParcela,
        alteraCondicoesPagamento: alteraCondicoesPagamento,
        gravarPedido: gravarPedido,
        atualizaValorTotal: atualizaValorTotal,
        calculaValorTotalIPI: calculaValorTotalIPI,
        insere: insere,
        buscaPonteiroCFOP: buscaPonteiroCFOP,
        removeItem: removeItem,
        validaPermissoes: validaPermissoes,
        validaVolumes: validaVolumes,
        validaAdicionarItem: validaAdicionarItem,
        validaGravarPedido: validaGravarPedido,
        calculaDescontoPorcentagem: calculaDescontoPorcentagem
    }
} ($, rw))

rw.ft.posicaoProdutos = (function ($, rw) {
    function preencheCampos() {
        return function (map, idTabPrecos, idFilial, idEP, idEPT, idETPE, idTabUltimasCompras) {
            var callback = function (data) {
                if (data.resposta.status == "ERRO") {
                    rw.msg.erro(data)
                    return
                }

                $("#txtDescricao").val(data.resposta.posicaoProdutos.descricao)
                $("#txtLocalPadrao").val(data.resposta.posicaoProdutos.localPadrao)
                $("#txtLocalMaiorSaldo").val(data.resposta.posicaoProdutos.localMaiorSaldo)
                $("#txtCustoMedio").val(data.resposta.posicaoProdutos.custoMedio)
                $("#txtTotal").val(data.resposta.posicaoProdutos.saldoTotal)
                $("#txtReservado").val(data.resposta.posicaoProdutos.saldoReservado)
                $("#txtPreBaixa").val(data.resposta.posicaoProdutos.saldoPreBaixa)
                $("#txtIndisponivel").val(data.resposta.posicaoProdutos.saldoIndisponivel)
                $("#txtDisponivel").val(data.resposta.posicaoProdutos.saldoDisponivel)
                $("#txtPrecoVenda").val(data.resposta.posicaoProdutos.precoVenda)
                $("#txtValorUnitario").val(data.resposta.posicaoProdutos.valorUnitario)
                $("#txtValorICMS").val(data.resposta.posicaoProdutos.valorICMS)
                $("#txtValorIpi").val(data.resposta.posicaoProdutos.valorIPI)
                $("#txtQtd").val(data.resposta.posicaoProdutos.quantidade)
                $("#txtFreteConta").val(data.resposta.posicaoProdutos.freteConta)
                $("#txtCondPgto").val(data.resposta.posicaoProdutos.condPgto)
                $("#txtDataEmissaoNf").val(data.resposta.posicaoProdutos.dataEmissaoNF)
                $("#txtNumeroNf").val(data.resposta.posicaoProdutos.numeroNF)
                $("#txtCFOP").val(data.resposta.posicaoProdutos.CFOP)
                $("#txtQuantidadeOrdensCompra").val(data.resposta.posicaoProdutos.quantidadeOC)
                $("#txtQuantidadeCotacao").val(data.resposta.posicaoProdutos.quantidadeCotacao)
                $(map[0].input).parent().children(".nome").val(data.resposta.posicaoProdutos.nome)

                $.map(data.resposta.ultimasCompras,
                    function (ultimaCompra) {
                        var row = rw.tabelas.insereLinha(idTabUltimasCompras)
                        row.className = rw.df.classeCss(ultimaCompra)
                        $(row).hide()

                        var cell = row.insertCell(-1)
                        cell.className = "wkdata"
                        cell.innerHTML = ultimaCompra.emissao

                        cell = row.insertCell(-1)
                        cell.className = "wkdata"
                        cell.innerHTML = ultimaCompra.entrada

                        cell = row.insertCell(-1)
                        cell.className = "wkint"
                        cell.innerHTML = ultimaCompra.fornecedor

                        cell = row.insertCell(-1)
                        cell.innerHTML = ultimaCompra.fantasia

                        cell = row.insertCell(-1)
                        cell.className = "wkvalor"
                        cell.innerHTML = ultimaCompra.valorUnitario

                        cell = row.insertCell(-1)
                        cell.className = "wkvalor"
                        cell.innerHTML = ultimaCompra.descUnitario

                        $(row).fadeIn(rw.FADE())
                    }
                )
            }

            $.ajax(
                "../api/ft/consulta-posicaoprodutos.asp", {
                    data: {
                        codProduto: $(map[0].input).val(),
                        codGrade1: $(map[1].input).val(),
                        codGrade2: $(map[2].input).val(),
                        codGrade3: $(map[3].input).val(),
                        codTabela: $(idTabPrecos).val(),
                        codFilial: $(idFilial).val(),
                        EP: $(idEP).attr("checked") ? "V" : "F",
                        EPT: $(idEPT).attr("checked") ? "V" : "F",
                        ETPE: $(idETPE).attr("checked") ? "V" : "F"
                    }, async: true,
                    success: callback
                }
            )
        }
    }

    return {
        preencheCampos: preencheCampos
    }
} ($, rw))
