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,