Boa noite Senhores
Estou desenvolvendo um formulário para inclusão de solicitações de compras nos Movimentos do RM, então montei um Pai-Filho vinculado à um DataSet com dados itens do RM TITMMOV=(CODIGOPRD,NOMEFANTASIA,CODUND). Mas estou tomando uma surra do Javascript para fazer o preenchimento dos campos de código e unidade apos selecionar o nome do produto.
Erro no console do navegador
Uncaught TypeError: window[instance].setValue is not a function
at setZoomData (?WDCompanyId=1&WDNrDocto=0&WDNrVersao=0&WDParentDocumentId=20108&WKNumProces=0&processID=Solicitação+de+Inclusão+de+Movimento&WKNumState=0&WKManagerMode=false&WKDef=Solicitação+de+Inclusão+de+Movimento&WKVersDef=53&taskUserId=herickfreitas:255)
at setSelectedZoomItem (?WDCompanyId=1&WDNrDocto=0&WDNrVersao=0&WDParentDocumentId=20108&WKNumProces=0&processID=Solicitação+de+Inclusão+de+Movimento&WKNumState=0&WKManagerMode=false&WKDef=Solicitação+de+Inclusão+de+Movimento&WKVersDef=53&taskUserId=herickfreitas:247)
at HTMLSelectElement.<anonymous> (forms.js?v=1.6.5-200414:1)
at HTMLSelectElement.dispatch (jquery.js:2)
at HTMLSelectElement.r.handle (jquery.js:2)
at Object.trigger (jquery.js:2)
at HTMLSelectElement.<anonymous> (jquery.js:2)
at Function.each (jquery.js:2)
at n.fn.init.each (jquery.js:2)
at n.fn.init.trigger (jquery.js:2)
html Pai-filho e Smart-Zoom
<div class="container-fluid">
<div>
<table tablename="item" addbuttonlabel="Adicionar Itens" >
<thead>
<tr>
<td class="col-xs-2 col-md-2"><b>Cód. Item</b></td>
<td class="col-xs-4 col-md-4"><b>Nome</b></td>
<td class="col-xs-1 col-md-1"><b>Cód. Unidade</b></td>
<td class="col-xs-1 col-md-1"><b>Qtd.</b></td>
<td class="col-xs-2 col-md-2"><b>Valor Unit.</b></td>
<td class="col-xs-2 col-md-2"><b>Valor Total</b></td>
</tr>
</thead>
<tr>
<td class="col-xs-2 col-md-2"><input type="zoom" id = "CODIGOPRD" name="CODIGOPRD"
data-zoom="{
'displayKey':'CODIGOPRD',
'datasetId':'_RM_PRODUTO',
'maximumSelectionLength':'1',
'fields':[
{
'field':'CODIGOPRD',
'label':'Cód. Produto'
},{
'field':'NOMEFANTASIA',
'label':'Nome',
'standard':'true'
},{
'field':'CODUND',
'label':'Unidade'
}
]
}" /></td>
<td class="col-xs-4 col-md-4"><input type="zoom" id = "NOMEFANTASIA" name="NOMEFANTASIA"
data-zoom="{
'displayKey':'NOMEFANTASIA',
'datasetId':'_RM_PRODUTO',
'maximumSelectionLength':'1',
'placeholder':'Digite o produto ou serviço',
'fields':[
{
'field':'CODIGOPRD',
'label':'Cód. Produto'
},{
'field':'NOMEFANTASIA',
'label':'Nome',
'standard':'true'
},{
'field':'CODUND',
'label':'Unidade'
}
]
}" /></td>
<td class="col-xs-1 col-md-1"><input type="zoom" id = "CODUND" name="CODUND"
data-zoom="{
'displayKey':'CODUND',
'datasetId':'_RM_PRODUTO',
'maximumSelectionLength':'1',
'fields':[
{
'field':'CODIGOPRD',
'label':'Cód. Produto'
},{
'field':'NOMEFANTASIA',
'label':'Nome',
'standard':'true'
},{
'field':'CODUND',
'label':'Unidade'
}
]
}" /></td>
<td class="col-xs-1 col-md-1"><input type="text" name="QTD" id="QTD" class="form-control" mask="000.000.000"></td>
<td class="col-xs-2 col-md-2"><input type="text" name="VALORUNIT" id="VALORUNIT" class="form-control" mask="#00.000.000.000.000,00"></td>
<td class="col-xs-2 col-md-2"><input type="text" name="VALORTOTAL" id="VALORTOTAL" class="form-control" mask="#00.000.000.000.000,00"></td>
</tr>
</table>
</div>
</div>
JavaScript
```// Função coleta o input informado no zoom function setSelectedZoomItem(selectedItem) {
var FIELD = selectedItem.inputId; var nomeproduto = "NOMEFANTASIA"; console.log("Entrou no setSelectedZoomItem ")
if(FIELD.indexOf(nomeproduto) > -1){ setZoomData("CODIGOPRD", selectedItem["CODIGOPRD"]); setZoomData("CODUND", selectedItem["CODUND"]); //console.log(selectedItem["CODIGOPRD"]); //console.log(selectedItem["CODUND"]); }
// Funcao replica para outros campos do formulário function setZoomData(instance, value){ window[instance].setValue(value); }```
Solução
// Função coleta o input informado no zoom
function setSelectedZoomItem(selectedItem) {
var NAME = "NOMEFANTASIA"; var FIELD = selectedItem.inputId; var indice = FIELD.indexOf(NAME);
if (FIELD.indexOf(NAME) > -1){ var seq = FIELD.split("_");
setZoomData("CODIGOPRD"+""+seq[indice+1], selectedItem["CODIGOPRD"]); setZoomData("CODUND"+""+seq[indice+1], selectedItem["CODUND"]); } }
//2 segundos
window.onload = function(){ setTimeout(setZoomData, 2000); }
// Funcao replica para outros campos do formulário
function setZoomData(instance, value){ window[instance].setValue(value); }