Versão atual:

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,

Versões (3):

Ver a versão formatada

Cálculo de linha no Datatable utilizando campos input

Comentário

new question