Cálculo de linha no Datatable utilizando campos input

Olá

Estou utilizando Datatable alimentado por um dataset (wsconsultaSQL, TOTVS RM). Este datatable é carregado com alguns dados de produtos para fins de inventário.

O cálculo é relizado corretamente porém não estou conseguindo gravar o valor no campo da tabela "SLDFINALTBPF02" conforme linha onde o valor do input foi alterado.

Template Table:

    <script type="text/template" class="templateTBPF02">
        <tr>        
            <td>{{CODCOLIGADATBPF02}}</td>
            <td>{{CODFILIALTBPF02}}</td>
            <td><input class="form-control" name="IDPRDTBPF02" id="IDPRDTBPF02" type="text" value="{{IDPRDTBPF02}}" readonly></td>
            <td><p class="text-left">{{CODIGOPRDTBPF02}}</p></td>
            <td><p class="text-left">{{DESCPRODUTOTBPF02}}</p></td>
            <td><p class="text-center">{{UNTBPF02}}</p></td>
            <td><input class="form-control" name="SLDDISPERPTBPF02" id="SLDDISPERPTBPF02" type="number" value="{{SLDDISPERPTBPF02}}" data-only-numbers="" maxlength="12" size="12" readonly></td>                
            <td><input class="form-control" name="SLDFISICOTBPF02" id="SLDFISICOTBPF02" type="number" value="{{SLDFISICOTBPF02}}" data-only-numbers="" maxlength="12" size="12"></td>
            <td><input class="form-control" name="SLDFINALTBPF02" id="SLDFINALTBPF02" type="number" value="{{SLDFINALTBPF02}}" data-only-numbers="" maxlength="12" size="12" readonly></td>
        </tr>
    </script>

Javascript carga no Datatable:

$(document).on('click', "#btnSearchSldPrdLimpeza", 

    function SldPrdLimpeza() {

        if ($("#CODFILIAL").val() != "") {

            var that = this;
            var c1 = DatasetFactory.createConstraint("CODFILIAL", $("#CODFILIAL").val(), $("#CODFILIAL").val(), ConstraintType.MUST);
            var constraints = new Array(c1)

            var datasetReturned = DatasetFactory.getDataset("dsFLUIG000100006", null, constraints, null);
            if (datasetReturned != null && datasetReturned.values != null && datasetReturned.values.length > 0) {
                var records = datasetReturned.values;
                that.mydata = [];
                for ( var index in records) {
                    var record = records[index];
                    that.mydata.push({
                        CODCOLIGADATBPF02: record.CODCOLIGADA,
                        CODFILIALTBPF02: record.CODFILIAL,
                        IDPRDTBPF02: record.IDPRD,
                        CODIGOPRDTBPF02: record.CODIGOPRD,
                        DESCPRODUTOTBPF02: record.DESCPRODUTO,
                        UNTBPF02: record.UN,
                        SLDDISPERPTBPF02: record.SLDDISPERP,
                        SLDFISICOTBPF02: 0,                        
                        SLDFINALTBPF02: -record.SLDDISPERP
                    });
                }
            }

            that.myTable = FLUIGC.datatable('#tableTBPF02', {
                dataRequest: that.mydata,
                renderContent: '.templateTBPF02',
                limit:20,                
                offset: 0,
                patternKey: 'text',
                limitkey: 'per_page',
                offsetKey: 'page',
                formatData: function(data) {
                 // Process
                 return data;
                },
                /*multiSelect: true,*/
                classSelected: 'danger',
                header: [{
                    'title': 'Coligada',            
                    'size': 'col-xs-1 col-sm-1 col-md-1',
                    'display': false
                }, {
                    'title': 'Filial',
                    'size': 'col-xs-1 col-sm-1 col-md-1',
                    'display': false
                }, {
                    'title': 'IDPRD', 
                    'size': 'col-xs-1 col-sm-1 col-md-1',
                    'display': false
                }, {
                    'title': 'Código', 
                    'size': 'col-xs-1 col-sm-1 col-md-1',
                    'display': false
                }, {
                    'title': 'Descrição',                    
                    'standard': true,
                    'size': 'col-xs-6 col-sm-6 col-md-6',
                    'display': true
                }, {
                    'title': 'UN',                    
                    'size': 'col-xs-1 col-sm-1 col-md-1',
                    'display': false
                }, {
                    'title': 'Saldo ERP',
                    'size': 'col-xs-2 col-sm-2 col-md-2',
                    'display': true
                }, {
                    'title': 'Saldo Físico',
                    'size': 'col-xs-2 col-sm-2 col-md-2',
                    'display': true
                }, {
                    'title': 'Diferença',
                    'size': 'col-xs-2 col-sm-2 col-md-2',
                    'display': true
                }],
                search: {
                    enabled: false,
                },
                scroll: {                    
                    enabled: false,
                    target: ".tableTBPF02",
                    onScroll: function() {
                        // DO SOMETHING
                    }
                },
                actions: {
                    enabled: false,
                    template: '.templateTBPF02',
                    actionAreaStyle: 'col-xs-12 col-sm-12 col-md-12'
                },
                navButtons: {
                    enabled: false,
                },
                draggable: {
                    enabled: false
                },
            }, function(err, data) {
                if (err) {
                    FLUIGC.toast({
                        message: err,
                        type: 'danger'
                    });
                }
            });

            that.myTable.on('fluig.datatable.loadcomplete', function() {
                if (!that.tableData) {
                    that.tableData = that.myTable.getData();
                }
            });
        } else {
            $("#NOMEFANTASIA").focus();
            FLUIGC.toast({
                message: " Obrigatório informar a propriedade para atualização do saldo em estoque!",
                type: 'danger'                    
            }); 
        }

Javascript (Evento para cálculo da "Diferença"): Preciso gravar no campo SLDFINALTBPF02, mas sempre ele grava na primeira linha da tabela.

$('#tableTBPF02').on('change', 'input', function() {    

            var index = that.myTable.selectedRows()[0];
            var selected = that.myTable.getRow(index);

            var SLDFISICO = $(this).val();
            var SLDDISPERP = selected.SLDDISPERPTBPF02;
            var total = SLDFISICO - SLDDISPERP;

            alert(total);
            $("#SLDFINALTBPF02").val(total);
        })

Obrigado,

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags datatable input evento ou faça a sua própria pergunta.