Integrações com outros sistemas > Ações SID > Mercado > Pedidos de Vendas > SID.Ped. GravarPedidoGrade - Gravar Pedido Em Grade

SID.Ped. GravarPedidoGrade - Gravar Pedido Em Grade

Aplicação:

Mercado – Pedido De Vendas.

Parâmetros obrigatórios:

Nome Descrição
SIDXML Texto em formato SID XML, cuja definição da estrutura está a seguir:
<pedidos>
<pedido>
<TipPed></TipPed>
<CodRep></CodRep>
<CodCdi></CodCdi>
<CodMar></CodMar>
<CodCli></CodCli>
<TnsPro></TnsPro>
<CatCli></CatCli>
<CodCpg></CodCpg>
<CodLip></CodLip>
<CodTpr></CodTpr>
<DatPrv></DatPrv>
<PedCli></PedCli>
<SeqEnt></SeqEnt>
<SeqCob></SeqCob>
<SeqCto></SeqCto>
<CodVen></CodVen>
<CodTra></CodTra>
<CodRed></CodRed>
<CepFre></CepFre>
<CodFpg></CodFpg>
<itens>
<item>
<CodPro></CodPro>
<CodFam></CodFam>
<CodMod></CodMod>
<CodFxa></CodFxa>
<CodPgr></CodPgr>
<QtdGrd></QtdGrd>
<CodClc></CodClc>
<ResEst></ResEst>
<PedCli></PedCli>
<SeqPcl></SeqPcl>
<derivacoes>
<derivacao></derivacao>
<quantidade</quantidade>
<derivacao></derivacao>
<quantidade></quantidade>
.
.
.
</derivacoes>
</item>
<item>
.
.
.
</item>
</itens>
<observacoes>
<observacao>
<obsped></obsped>
<codmot></codmot>
</observacao>
<observacao>
<obsped></obsped>
<codmot></codmot>
</observacao>
.
.
.
.
</observacoes>
<campos_usuario>
<campo_usuario>
<nomcmp></nomcmp>
<vlrcmp></vlrcmp>
</campo_usuario>
<campo_usuario>
<nomcmp></nomcmp>
<vlrcmp></vlrcmp>
</campo_usuario>
.
.
.
. </campos_usuario >
</pedido>
<pedido>
</pedido>
.
.
.
.
<pedido>
<pedidos>

A descrição de cada delimitador e sua funcionalidade ou obrigatoriedade está a seguir:

Os delimitadores abaixo devem estar dentro dos delimitadores <item></item> e se referem aos campos dos itens do pedido.

Parâmetros opcionais:

Nome Descrição
ManErrFec Indica que, se ocorrer erro no fechamento, o pedido não deva ser descartado, apenas gerado sem fechar. O número de pedido gerado, a situação (não fechado) e o erro ocorrido no fechamento serão evidenciados no retorno.
ManErrIte Indica que, se ocorrer erro na geração de um item de pedido, o pedido não deva ser descartado, e os demais itens devam ser processados normalmente, sem interromper todo o processo do pedido a ser importado. O pedido será apenas gerado sem fechar. O número de pedido gerado, a situação (não fechado) e os erros ocorridos nos itens serão evidenciados no retorno.

Retorno:

O retorno da ação é um texto também em formato XML, dentro dos delimitadores <retorno></retonro>. Dentro desses delimitadores é indicado o erro ou o sucesso na importação para cada pedido dentro da Sequência de pedidos, ordenados numericamente pela Sequência de entrada e iniciando em 1 (um) e envolvidos nos delimitadores <pedido ></pedido>. O número de ordenação exibido no retorno não é o número de pedido no Sapiens.

O formato geral do retorno para um pedido é:

<retorno>
<pedido pedido= 'Sequência_do_pedido' [item='Sequência_do_item'] resultado='erro ou sucesso'>texto do erro ou número do pedido</pedido>
.
.
.
.
(demais pedidos) </retorno>

O formato do retorno para um determinado pedido com erro durante a importação é:

<pedido pedido= 'Sequência_do_pedido' [item='Sequência_do_item'] resultado='erro'>texto_do_erro</pedido>
onde
'Sequência_do_pedido'
é o número de Sequência em que foi processado o pedido delimitado pelos delimitadores <pedido></pedido>
'Sequência_do_item'
é o número de Sequência do item grade que está sendo processado dentro do pedido, caso o erro tenha ocorrido em um item delimitado pelos delimitadores <itens></itens>. A Sequência do item é reiniciada para cada pedido. Se o erro for gerado pelos dados gerais ou outra consistência no fechamento do pedido e validação dos valores contra o contrato, esse texto não é exibido.
'texto_do_erro'
é a informação textual do erro ocorrido pela consistência ou pela verificação da estrutura do comando XML para um pedido.

O formato do retorno para um determinado pedido processado com sucesso é:

<pedido pedido= 'Sequência_do_pedido' resultado='sucesso'>situação = 'fechado ou não fechado' [motivo = 'motivo do erro no fechamento'] número pedido gerado = 'número_pedido_sapiens' </pedido>
onde
'Sequência_do_pedido'
é o número de Sequência em que foi processado o pedido delimitado pelos delimitadores <pedido></pedido>
'número_pedido_sapiens'
é o número do pedido gerado pelo Sapiens
'fechado ou não fechado'
irá exibir o valor 'fechado' quando o pedido for fechado com sucesso ou 'não fechado' caso o parâmetro ManErrFec for igual a 'S' e ocorrer erro no fechamento do pedido, sendo este apenas gravado
[motivo = 'motivo do erro no fechamento']
sem os colchetes) irá ser exibido somente caso o parâmetro ManErrFec for igual a 'S' e ocorre erro no fechamento do pedido, evidenciando o motivo do não fechamento do pedido, caso em que será apenas gravado e não descartado o pedido

O texto de retorno é plano e sem quebras de linha.

O retorno da ação com o uso do parâmetro não obrigatório ManErrIte é diferenciado. O formato geral do retorno para um pedido quando do uso do parâmetro não obrigatório ManErrIte é:

<retorno>
<pedido pedido = 'Sequência_do_pedido' resultado='erro ou sucesso [, no pedido, com erros na gravação dos itens]'> <mensagem> texto do erro ou número do pedido </mensagem> [<itens><item item='Sequência_do_item_do_pedido'> texto_do_erro_do_item </itens>] </pedido>
.
.
.
.
(demais pedidos)
</retorno>

O formato do retorno quando do uso do parâmetro não obrigatório ManErrIte para um determinado pedido com sucesso durante a importação do pedido (dados gerais, itens do pedido e fechamento) é:

<pedido pedido = 'Sequência_do_pedido' resultado='sucesso'> <mensagem> informações sobre o pedido gerado pelo Sapiens </mensagem> </pedido>

O formato do retorno quando do uso do parâmetro não obrigatório ManErrIte para um determinado pedido com erro no fechamento ou na geração do pedido, durante a importação é:

<pedido pedido = 'Sequência_do_pedido' resultado = 'erro'> <mensagem> texto_do_erro </mensagem> </pedido>

O formato do retorno quando do uso do parâmetro não obrigatório ManErrIte para um determinado pedido com erro nos itens, durante a importação é:

<pedido pedido = 'Sequência_do_pedido' resultado = 'sucesso no pedido, com erros na gravação dos itens'> <mensagem> <itens> <item item= 'Sequência_do_item_do_pedido'> texto_do_erro_do_item </item> </itens> </mensagem> </pedido>

O formato do retorno quando do uso do parâmetro não obrigatório ManErrIte para um determinado pedido com erro no fechamento do pedido e erros nos itens, durante a importação é:

<pedido pedido = 'Sequência_do_pedido' resultado = 'erro no pedido, com erros na gravação dos itens'> <mensagem> texto_do_erro_do_pedido </mensagem> <itens> <item item= 'Sequência_do_item_do_pedido'> texto_do_erro_do_item </item> </itens> </pedido>

Informações adicionais:

Dentro dos delimitadores <pedidos></pedidos> poderão ser informados vários pedidos e dentro de cada delimitador <itens></itens> devem ser informados os vários itens do pedido. A ação pode ser chamada individualmente para um pedido apenas, porém recomenda-se a utilização de vários pedidos dentro de uma única ação, que confere um desempenho melhor à importação.

A função irá processar pedido a pedido que estiver dentro dos delimitadores <pedidos></pedidos>. Caso ocorra um erro em um pedido, este pedido todo é descartado e a função segue processando o próximo pedido na Sequência. O pedido gerado é automaticamente fechado. Se ocorrer erro no fechamento, o pedido é descartado, a não ser que exista o parâmetro ManFecErr igual a 'S', que no caso irá apenas gravar o pedido se houver erro no fechamento. Ao final, será gerado o retorno da função indicando, para cada pedido com sucesso gerado, o seu número e para cada pedido não processado, o erro correspondente, na mesma sequência que foi informada no documento XML.

A rotina possui o mesmo funcionamento da rotina da tela do Comercial\Vendas\Pedidos\Via Grade de Produto, gerando pedidos fechados. A filial e empresa em que são gerados os pedidos são o da filial logada no Sapiens Server e não é permitido indicar filial ou empresa na ação.

Em relação ao documento XML a ser enviado à ação, este deve ser plano, ou seja, sem quebras de linha e sem espaços entre os delimitadores. Os valores dentro dos delimitadores podem ter espaços entre os mesmos, desde que o valor não seja numérico.

Segue um exemplo de uma ação com um pedido e dois itens:

acao=sid.ped.gravarpedidograde
sidxml=
<pedidos>
<pedido>
<codmar>SUPERMARCA</codmar>
<codcli>3</codcli>
<codrep>3</codrep>
<itens>
<item>
<codpro>FCAL00010017</codpro>
<codfxa>FAIXA DE CAL 01</codfxa>
<derivacoes>
<derivacao>33</derivacao>
<quantidade>1</quantidade>
<derivacao>34</derivacao>
<quantidade>2</quantidade>
<derivacao>35</derivacao>
<quantidade>2</quantidade>
<derivacao>36</derivacao>
<quantidade>5</quantidade>
</derivacoes>
</item>
<item>
<codpro>FCAL00010011</codpro>
<codfxa>FAIXA DE CAL 01</codfxa>
<codpgr>F100</codpgr>
</item>
</itens>
<observacoes>
<observacao>Pedido gerado via importação</observacao>
<observacao>Entrega normal</observacao>
</observacoes>
<campos_usuario>
<campo_usuario>
<nomcmp>usu_numerico</nomcmp>
<vlrcmp>10</vlrcmp>
</campo_usuario>
<campo_usuario>
<nomcmp>usu_real</nomcmp>
<vlrcmp>15,7</vlrcmp>
</campo_usuario>
<campo_usuario>
<nomcmp>usu_texto</nomcmp>
<vlrcmp>Texto do pedido</vlrcmp>
</campo_usuario>
<campo_usuario>
<nomcmp>usu_data</nomcmp>
<vlrcmp>01/01/2008</vlrcmp>
</campo_usuario>
<campo_usuario>
<nomcmp>usu_hora</nomcmp>
<vlrcmp>658</vlrcmp>
</campo_usuario>
</campos_usuario> </itens>
</pedido>
<pedido>
<tipped>6</tipped>
<codmar>SUPERMARCA</codmar>
<codcli>3</codcli>
<codrep>3</codrep>
<itens>
<item>
<codpro>FCAL00010017</codpro>
<codfxa>FAIXA DE CAL 01</codfxa>
<derivacoes>
<derivacao>33</derivacao>
<quantidade>1</quantidade>
<derivacao>34</derivacao>
<quantidade>2</quantidade>
<derivacao>35</derivacao>
<quantidade>2</quantidade>
<derivacao>36</derivacao>
<quantidade>5</quantidade>
</derivacoes>
</item>
</itens>
</pedido>
</pedidos>

Exemplo de um retorno com erro e um com sucesso:

Este artigo ajudou você?