Problemas com integração

estou tentando consumir um methodo de um web service do protheus porem tenho algumas variáveis que são do tipo numérica e como faço pra adaptar isso no meu dataset ?

meu WSDL


<s:complexType name="STRTITRECEBER">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="CGC" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="CLIENTE" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="COMISSAO" type="s:float"/>
<s:element minOccurs="0" maxOccurs="1" name="CONTRATOMDW" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="DTEMISSAO" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="DTRVENCTO" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="DTVENCTO" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="HISTTIT" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="LOJACLIENTE" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="NATUREZA" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="PIMDW" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="PREFIXO" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="QUANTIDADE" type="s:float"/>
<s:element minOccurs="0" maxOccurs="1" name="TIPO" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="TIPOFAT" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="TITULO" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="VALCRUZ" type="s:float"/>
<s:element minOccurs="0" maxOccurs="1" name="VALOR" type="s:float"/>
<s:element minOccurs="0" maxOccurs="1" name="VENDEDOR" type="s:string"/>
</s:sequence>

Willian, vocẽ tem o código do Dataset e o erro que está ocorrendo pra postar aqui?

Willian, tentou o parseFloat direto ali no JSON da função data? Ou na constraint do Dataset?

Se puder salve o WSDL do Protheus e anexe na pergunta

na função data sim ele me retorna NaN e se coloco na constraint e deixo a função data com “” ele da internal server error

Todo o Wsdl ou somente o metodo relacionado ?

somente o método relacionado

Esse é a função data que recebe os dados do meu dataset e envia pro meu web service



function data() {
    return {
  "fluigService" : "Integração Mundi Ware x Protheus",
  "operation" : "inctitreceber",
  "soapService" : "TVCNMUNDIWARE",
  "portType" : "TVCNMUNDIWARESOAP",
  "locatorClass" : "_175._159._68._177._54512.TVCNMUNDIWARE",
  "portTypeMethod" : "getTVCNMUNDIWARESOAP",
  "parameters" : [ ],
  "inputValues" : {
    "titreceber" : {
      "tIPO" : "",
      "cONTRATOMDW" : "",
      "dTEMISSAO" : "",
      "cLIENTE" : "",
      "cOMISSAO" :"" , //essas variaveis são float
      "tITULO" : "",
      "pREFIXO" : "",
      "pIMDW" : "",
      "vALCRUZ" :"", //essas variaveis são float
      "dTRVENCTO" : "",
      "hISTTIT" : "",
      "nATUREZA" : "",
      "lOJACLIENTE" : "",
      "qUANTIDADE" :"",//essas variaveis são float
      "tIPOFAT" : "",
      "vENDEDOR" : "",
      "vALOR" : "",//essas variaveis são float
      "dTVENCTO" : "",
      "cGC" : ""
    }

e esse é meu constraints que envia os dados pro meu datase que citei a cima



function createDataset(fields, constraints, sortFields) {

    var dataset = DatasetBuilder.newDataset(); 

    var CGC         = DatasetFactory.createConstraint("cGC",        "60820750000131","60820750000131", ConstraintType.MUST);
    var CLIENTE     = DatasetFactory.createConstraint("cLIENTE",    "000060","000060", ConstraintType.MUST);
    var CONTRATOMDW = DatasetFactory.createConstraint("cONTRATOMDW","FLUIG","FLUIG", ConstraintType.MUST);
    var DTEMISSAO     = DatasetFactory.createConstraint("dTEMISSAO",    "20180629","20180629", ConstraintType.MUST);
    var DTRVENCTO     = DatasetFactory.createConstraint("dTVENCTO",    "20180629","20180629", ConstraintType.MUST); 
    var DTVENCTO     = DatasetFactory.createConstraint("dTRVENCTO",    "20180629","20180629", ConstraintType.MUST);
    var HISTTIT     = DatasetFactory.createConstraint("hISTTIT",    "TESTEFLUIG","TESTEFLUIG", ConstraintType.MUST);
    var LOJACLIENTE = DatasetFactory.createConstraint("lOJACLIENTE","01","01", ConstraintType.MUST);
    var NATUREZA     = DatasetFactory.createConstraint("nATUREZA",    "114","114", ConstraintType.MUST);
    var PIMDW         = DatasetFactory.createConstraint("pIMDW",        "CONTRATO","CONTRATO", ConstraintType.MUST);
    var PREFIXO     = DatasetFactory.createConstraint("pREFIXO",    "BOL","BOL", ConstraintType.MUST);
    var TIPO         = DatasetFactory.createConstraint("tIPO",        "NF","NF", ConstraintType.MUST);
    var TIPOFAT     = DatasetFactory.createConstraint("tIPOFAT",    "01","01", ConstraintType.MUST);
    var TITULO         = DatasetFactory.createConstraint("tITULO",        "000010","000010", ConstraintType.MUST);
    var VENDEDOR     = DatasetFactory.createConstraint("vENDEDOR",    "000001","000001", ConstraintType.MUST);
    var COMISSAO     = DatasetFactory.createConstraint("cOMISSAO",     2, 2, ConstraintType.MUST);
    var QUANTIDADE     = DatasetFactory.createConstraint("qUANTIDADE",    3,3, ConstraintType.MUST);
    var VALCRUZ     = DatasetFactory.createConstraint("vALCRUZ",    9000,9000, ConstraintType.MUST);
    var VALOR         = DatasetFactory.createConstraint("vALOR",        9000,9000, ConstraintType.MUST);

    var dataset = DatasetFactory.getDataset("ds_incTitulo", null, new Array(CGC, CLIENTE, CONTRATOMDW, DTEMISSAO, DTRVENCTO, DTVENCTO, HISTTIT, LOJACLIENTE, NATUREZA, PIMDW, PREFIXO, TIPO, TIPOFAT, TITULO, VENDEDOR, COMISSAO, QUANTIDADE, VALCRUZ, VALOR), null);       

    return dataset;



function afterProcessing(form){

    var titreceber = {  "tIPO"             : form.getValue("CTIPO"),
                           "vALOR"         : parseFloat(form.getValue("NVALOR")),
                           "cONTRATOMDW"    : form.getValue("CCONTRATOMDW"),
                           "dTEMISSAO"        : form.getValue("CDTEMISSAO"),
                           "dTRVENCTO"        : form.getValue("CDTRVENCTO"),
                           "cLIENTE"        : form.getValue("CCLIENTE"),
                           "cOMISSAO"        : parseFloat(form.getValue("NCOMISSAO")),
                           "tITULO"        : form.getValue("CTITULO"),
                           "pREFIXO"        : form.getValue("CPREFIXO"),
                           "pIMDW"            : form.getValue("CPIMDW"),
                           "vALCRUZ"        : parseFloat(form.getValue("NVALCRUZ")),
                           "hISTTIT"         : form.getValue("CHISTTIT"),
                           "nATUREZA"         : form.getValue("CNATUREZA"),
                           "lOJACLIENTE"     : form.getValue("CLOJACLIENTE"),
                           "qUANTIDADE"     : parseFloat(form.getValue("NQUANTIDADE")),
                           "tIPOFAT"         : form.getValue("CTIPOFAT"),
                           "vENDEDOR"         : form.getValue("CVENDEDOR"),
                           "dTVENCTO"         : form.getValue("CDTVENCTO"),
                           "cGC"             : form.getValue("CCGC")

    }


    var tituloStr = JSON.stringify(titreceber);
    var constrTitulo = DatasetFactory.createConstraint("titreceber", tituloStr, tituloStr, ConstraintType.MUST);

    var dataset = DatasetFactory.getDataset("ds_incTitulo", null, new Array(tituloStr), null);
return dataset;

}

criei este evento e coloquei os devidos campos do formulário pra enviar os dados mas ainda esta dando javax.xml.ws.soap.SOAPFaultException: INTERNAL SERVER ERROR {
“tIPO” : “”,
“cONTRATOMDW” : “”,
“dTEMISSAO” : “”,
“cLIENTE” : “”,
“cOMISSAO” : “”,
“tITULO” : “”,
“pREFIXO” : “”,
“pIMDW” : “”,
“vALCRUZ” : “”,
“dTRVENCTO” : “”,
“hISTTIT” : “”,
“nATUREZA” : “”,
“lOJACLIENTE” : “”

Tente passar o objeto todo como uma unica constraint, senão você vai ter que tratar todos esses campos na função verifyConstraints do seu Dataset gerado.


var titreceber = {
      "tIPO" : "NF",
      "cONTRATOMDW" : "FLUIG",
      "dTEMISSAO" : "20180629",
      "cLIENTE" : "000060",
      "cOMISSAO" : 2 ,
      "tITULO" : "000010",
      "pREFIXO" : "BOL",
      "pIMDW" : "CONTRATO",
      "vALCRUZ" : 9000, 
      "dTRVENCTO" : "20180629",
      "hISTTIT" : "TESTEFLUIG",
      "nATUREZA" : "114",
      "lOJACLIENTE" : "01",
      "qUANTIDADE" : 3,
      "tIPOFAT" : "01",
      "vENDEDOR" : "000001",
      "vALOR" : 9000,
      "dTVENCTO" : "20180629",
      "cGC" : "60820750000131"
}

var tituloStr = JSON.stringify(titreceber);
var constrTitulo = DatasetFactory.createConstraint("titreceber", tituloStr, tituloStr, ConstraintType.MUST);

var dataset = DatasetFactory.getDataset("ds_incTitulo", null, new Array(constrTitulo), null);

========

Para utilizar dados no formulário na constraint depende de onde você vai chamar o dataset, por exemplo se esse formulário faz parte de um processo, ao chamar esse dataset em um evento de processo você utilizaria a hAPI pegando o valor do seu campo:


var titreceber = { "tIPO" : hAPI.getCardValue("tipo"),
   "vALOR" : parseFloat(hAPI.getCardValue("valor")), 
...
}

Se é somente um formulário no GED e não utiliza processo, chamando o Dataset em um evento de formulário você usaria o objeto form:


var titreceber = { "tIPO" : form.getValue("tipo"),
   "vALOR" : parseFloat(form.getValue("valor"))
...

Ou chamando ele em um js externo do seu formulário com jquery:


var titreceber = { "tIPO" : $('#tipo').val(),
   "vALOR" : parseFloat($('#valor').val())
...

Entendi Diogo mas desta forma como vou passar os dados do meu formulario pra essa constraint unica?

Não muda a forma de pegar os valores do formulário. Atualizei a resposta com um exemplo