WS003 - Enviar Multi-documentos para Comprovei

Objetivo

Enviar múltiplos documentos para a Comprovei.  Permite o envio de até 50 documentos por chamada.
Uma documento é caracterizado por:
  • Chave da Danfe (chave)
  • Tipo e numero do documento
  • Emissor do documento
  • Cliente destinatário
  • Transportadora
  • Itens do documento

Características
  • As chamadas serão realizadas via "SOAP" sobre HTTP;
  • A origem do chamado do web service será o sistema do cliente;

Autenticação

  • As chamadas terão autenticação a nível de transporte (Basic Authentication);
  • Solicite o user / password ao administrador da conta
POST http://soap.comprovei.com.br/WebServicePOD/server.php HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "urn:WebServiceComprovei#sendMultiDocuments"
Authorization: Basic {* user/password codificado em BASE64}
Content-Length: 117
Host: soap.comprovei.com.br
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

Descrição do método
 Método    sendMultiDocuments
 Endereço de acesso  http://soap.comprovei.com.br/WebServicePOD/server.php?wsdl
 Versão atual  1.0 (14/07/2016)

Histórico das versões
 Data  Responsável  Histórico
 14/07/2016  renatof  Documentação inicial.
 18/11/2016 paulok Inclusão das tags Peso | Cubagem | ONU

Parâmetros de entrada
 Atributo  Tipo  Descrição
 conteudoArquivo  MIME Base64  conteúdo do arquivo xml codificado em MIME Base64.

Parâmetros de saída

Estrutura básica de saída. Contem código e mensagem do retorno da chamada, além da estrutura Notifications.
 AtributoTipoDescrição
 Code  Inteiro Código geral de retorno (ver tabela de Códigos de Retorno da Chamada).
 Status Conjunto de caracteres Mensagem geral de retorno (ver tabela de Códigos de Retorno da Chamada).
 Notifications Estrutura Notifications Estrutura que pode conter Error ou Warning.

Estrutura Notification. Contem as estruturas Error e Warning.
 AtributoTipoDescrição
 Error  Estrutura Error Contem o código de erro, a chave do documento e a mensagem de erro para aquele documento.
 Warning Estrutura Warning Contem o código de warning, a chave do documento e a mensagem de erro para aquele documento.

Estruturas Error e Warning. Contem códigos, chave e mensagens.
 AtributoTipoDescrição
 Code  Inteiro Código de erro/alerta para o documento (ver tabela de Códigos de Retorno do Documento).
 Doc Conjunto de caracteres Chave de identificação deste documento.
 Mensagem Conjunto de caracteres Mensagem de alerta para este documento.

<?xml version="1.0" encoding="utf-8"?>
<ns1:sendMultiDocumentsResponse xmlns:ns1="urn:WebServiceComprovei">
<Code xsi:type="xsd:integer"></Code>
<Status xsi:type="xsd:string"></Status>
<Notifications xsi:type="tns:Notifications">
<Error xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:Notification[1]">
<item xsi:type="tns:Notification">
<Code xsi:type="xsd:integer"></Code>
<Doc xsi:type="xsd:string"></Doc>
<Mensagem xsi:type="xsd:string"></Mensagem>
</item>
</Error>
<Warning xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:Notification[1]">
<item xsi:type="tns:Notification">
<Code xsi:type="xsd:integer"></Code>
<Doc xsi:type="xsd:string"></Doc>
<Mensagem xsi:type="xsd:string"></Mensagem>
</item>
</Warning>
</Notifications>
</ns1:sendMultiDocumentsResponse>

Códigos de Retorno da Chamada
Código  Descrição
 0  Importação realizada com sucesso.
 1  Arquivo identificado como xml inválido ou corrompido.
 2  Quantidade de documentos superior a 50.
 3  Importação concluída, mas alguns documentos apresentaram erros.
 4  Importação concluída, mas todos os documentos apresentaram erros.
 997  Conteúdo do arquivo não esta em base64!
 998  Método em manutenção!
 999  Usuário não autenticado!

Códigos de Retorno do Documento
Código Descrição
 0 Documento processado com sucesso.
 3 Documento com esta chave já importado.
 8 Itens do documento estão sem código. Importação abortada.

Estrutura do arquivo XML

Estrutura Documentos. TAG raiz que contém todas as estruturas Documento.
Atributo Tipo Obrigatório Descrição
 Documento Estrutura Documento Sim Contem todas as informações a cerca do documento.

Estrutura Documento. Contem diversas informações sobre o documento a ser importado.
Atributo Tipo Obrigatório Descrição
 Tipo Conjunto de caracteres Sim Tipo do documento NFS, OS, REQ, etc. O sistema não valida esta informação, apenas exibe para melhor orientação.
 TipoParada Conjunto de caracteres Sim  E = Documento de entrega | C = Documento de coleta | CA = Documento de coleta de danfes | CB = Documento de coleta com conferência
 Modelo Conjunto de caracteres Sim Modelo fiscal do documento (verificar junto a SEFAZ os modelos disponíveis).
 Numero Conjunto de caracteres Sim Número do documento. somente números sem caracteres especiais ou espaços.
 Valor Conjunto de caracteres Sim Valor total do documento. Números decimais podem ter como separador "." ou ",".
 Serie Inteiro Sim Série do documento, se não tiver enviar o valor  "0".
 Emissao Conjunto de caracteres Sim Data de emissão do documento. Obrigatório o formato YYYYMMDD.
 Atualizacao Conjunto de caracteres Não Data de envio do documento à transportadora. Obrigatório o formato YYYYMMDD.
 Chave Conjunto de caracteres Sim Chave do documento. Normalmente é a chave do documento fiscal (barcode).
 cnpj Conjunto de caracteres Sim CNPJ (ou CPF) do destinatário do documento. SOMENTE NÚMEROS, NÃO COLOCAR ".", "-","/".
 cnpjEmissor Conjunto de caracteres Sim CNPJ do emitente do documento e/ou do embarcador. SOMENTE NÚMEROS, NÃO COLOCAR ".", "-","/".
 cnpjTransportador Conjunto de caracteres Sim CNPJ do transportador. SOMENTE NÚMEROS, NÃO COLOCAR ".", "-","/".
 Remessa Conjunto de caracteres Não Número da remessa do documento.    
 Pedido Conjunto de caracteres Não Número do pedido do documento.
 Placa Conjunto de caracteres Não Placa do veículo associado ao documento.
 Filial Conjunto de caracteres Não Filial associada ao documento.
 Peso Conjunto de caracteres Não Peso total da carga do documento.    
 Cubagem Conjunto de caracteres Não Volume total da carga do documento.
 ONU Conjunto de caracteres Não Código de periculosidade da carga do documento.
 Janela Conjunto de caracteres Não Janela de entrega
 Cliente Estrutura Cliente Sim     Contem informações do cliente destinatário do documento (cliente final).
 SKUs Estrutura SKUs Sim Contem informações sobre os itens a serem entregues/coletados no cliente final.

Estrutura Cliente. Contem diversas informações sobre o cliente destinatário do documento (cliente final).
Atributo Tipo Obrigatório Descrição
 Codigo Inteiro Sim Código do cliente (ou CNPJ). Esse código é estritamente numérico.
 Contato Conjunto de caracteres Sim Nome do contato do cliente destinatário.
 Telefone Conjunto de caracteres Sim Celular (para envio de SMS) do contato do cliente destinatário.
 Email Conjunto de caracteres Sim Email (para envio de emails) do contato do cliente destinatário.
 Razao Conjunto de caracteres Sim Razão social ou nome fantasia do cliente destinatário.
 Endereco Conjunto de caracteres Sim Endereço de entrega do cliente destinatário. Somente rua e número, separado por vírgula (","), sem complementos.
 Bairro Conjunto de caracteres Não Bairro.
 Cidade Conjunto de caracteres Sim Cidade.    
 Estado Conjunto de caracteres Sim Estado (UF).
 Pais Conjunto de caracteres Sim País
 CEP Conjunto de caracteres Sim CEP do endereço de entrega.
 Regiao Conjunto de caracteres Não Região ou filial ou rota do endereço de entrega
 TipoCliente Conjunto de caracteres Não Tipo do cliente
 Mensagem Conjunto de caracteres Não Mensagem a ser exibida no dispositivo do motorista durante a entrega/coleta.

Estrutura SKUs. TAG raiz para agrupar todas as estruturas SKU.
Atributo Tipo Obrigatório Descrição
 SKU Estrutura SKU Sim Contem informações sobre o item a ser entregue/coletados no cliente final.

Estrutura SKU. Contem informações sobre o o item a ser entregue/coletado.
Atributo Tipo Obrigatório Descrição
 codigo Atributo da TAG. Conjunto de caracteres Sim Código do item.
 PesoBruto Conjunto de caracteres NãoPeso bruto total deste item. Números decimais podem ter como separador "." ou ",".
 PesoLiquido Conjunto de caracteres NãoPeso líquido total deste item. Números decimais podem ter como separador "." ou ",".
 Volumes Conjunto de caracteres Sim Quantidade total de volumes deste item.
 Descricao Conjunto de caracteres Sim Descrição deste item.
 Qde Conjunto de caracteres Sim Quantidade total deste item.
 Uom Conjunto de caracteres Sim Unidade de medida deste item.
 Barcode Conjunto de caracteres Sim Código de barras deste item (para conferência).

Estrutura Janela de entrega/coleta. TAG raiz para agrupar os horários de inicio e fim
Atributo Tipo Obrigatório Descrição
 DataHoraIni Conjunto de caracteres Sim Horário de inicio da janela de entrega/coleta. Obrigatório utilizar o formato 
 YYYYMMDD HHMM
 DataHoraFim Conjunto de caracteres Sim Horário de fim da janela de entrega/coleta. Obrigatório utilizar o formato 
 YYYYMMDD HHMM
XSD do XML
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Documentos">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Documento" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element type="xs:string" name="Tipo"/>
                            <xs:element type="xs:string" name="TipoParada"/>
                            <xs:element type="xs:string" name="Modelo"/>
                            <xs:element type="xs:string" name="Numero"/>
                            <xs:element type="xs:string" name="Valor"/>
                            <xs:element type="xs:string" name="Serie"/>
                            <xs:element type="xs:string" name="Emissao"/>
                            <xs:element type="xs:string" name="Atualizacao" minOccurs="0"/>
                            <xs:element type="xs:string" name="Chave"/>
                            <xs:element type="xs:string" name="cnpj"/>  
                            <xs:element type="xs:string" name="cnpjEmissor" minOccurs="0"/>
                            <xs:element type="xs:string" name="cnpjTransportador" minOccurs="0"/>
                            <xs:element type="xs:string" name="Remessa" minOccurs="0"/>
                            <xs:element type="xs:string" name="Pedido" minOccurs="0"/>
                            <xs:element type="xs:string" name="Placa" minOccurs="0"/>
                            <xs:element type="xs:string" name="Filial" minOccurs="0"/>
                            <xs:element type="xs:string" name="Peso" minOccurs="0"/>
                            <xs:element type="xs:string" name="Cubagem" minOccurs="0"/>
                            <xs:element type="xs:string" name="ONU" minOccurs="0"/>
                            <xs:element type="xs:string" name="Anotacao" minOccurs="0"/>
                            <xs:element name="Cliente">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element type="xs:string" name="Codigo"/>
                                        <xs:element type="xs:string" name="Contato"/>
                                        <xs:element type="xs:string" name="Telefone"/>
                                        <xs:element type="xs:string" name="Email"/>
                                        <xs:element type="xs:string" name="Razao"/>
                                        <xs:element type="xs:string" name="Endereco"/>
                                        <xs:element type="xs:string" name="Bairro"/>
                                        <xs:element type="xs:string" name="Cidade"/>
                                        <xs:element type="xs:string" name="Estado"/>
                                        <xs:element type="xs:string" name="Pais"/>
                                        <xs:element type="xs:string" name="CEP"/>
                                        <xs:element type="xs:string" name="Regiao"/>
                                        <xs:element type="xs:string" name="TipoCliente"/>
                                        <xs:element type="xs:string" name="Mensagem"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="SKUs">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="SKU" maxOccurs="unbounded">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element type="xs:string" name="PesoBruto"/>
                                                    <xs:element type="xs:string" name="PesoLiquido"/>
                                                    <xs:element type="xs:string" name="Volumes"/>
                                                    <xs:element type="xs:string" name="Descricao"/>
                                                    <xs:element type="xs:string" name="Qde"/>
                                                    <xs:element type="xs:string" name="Uom"/>
                                                    <xs:element type="xs:string" name="Barcode"/>
                                                </xs:sequence>
                                                <xs:attribute type="xs:string" name="codigo" use="required"/>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Exemplo de arquivo xml
<?xml version="1.0" encoding="UTF-8"?>
<Documentos>
<Documento>
<Tipo>NFS</Tipo>
<TipoParada>E</TipoParada>
<Modelo>EFS</Modelo>
<Numero>244552</Numero>
<Valor>1101.53</Valor>
<Serie>0</Serie>
<Emissao>20160714</Emissao>
<Atualizacao>20160714</Atualizacao>
<Chave>3514001615500700028557518898261</Chave>
<cnpj>59221328000132</cnpj>
<cnpjEmissor>60331056000122</cnpjEmissor>
<cnpjTransportador>90667239000112</cnpjTransportador>
<Cliente>
<Codigo>35231360002</Codigo>
<Contato>RICARDO MIURA</Contato>
<Telefone>11967922044</Telefone>
<Email>rmiura@comprovei.com.br</Email>
<Razao>COMPROVEI</Razao>
<Endereco>RUA COSTA BARROS, 2050</Endereco>
<Bairro>SITIO PINHEIRINHO</Bairro>
<Cidade>SAO PAULO</Cidade>
<Estado>SP</Estado>
<Pais>BRASIL</Pais>
<CEP>03210001</CEP>
<Regiao>0 - S J R PRETO</Regiao> 
<TipoCliente>0 - Normal</TipoCliente> 
<Mensagem>Não recebe aos sábados</Mensagem>
</Cliente>
<SKUs>
<SKU codigo="21000510">
<PesoBruto>40</PesoBruto>
<PesoLiquido>36</PesoLiquido>
<Volumes>4</Volumes>
<Descricao>Produto 1</Descricao>
<Qde>4</Qde>
<Uom>CX</Uom>
<Barcode>1234</Barcode>
</SKU>
<SKU codigo="21000520">
<PesoBruto>40</PesoBruto>
<PesoLiquido>36</PesoLiquido>
<Volumes>2</Volumes>
<Descricao>Produto 2</Descricao>
<Qde>2</Qde>
<Uom>CX</Uom>
<Barcode>4321</Barcode>
</SKU>
</SKUs>
</Documento>
<Documento>
<Tipo>NFS</Tipo>
<TipoParada>E</TipoParada>
<Modelo>EFS</Modelo>
<Numero>244556</Numero>
<Valor>1050.53</Valor>
<Serie>0</Serie>
<Emissao>20160714</Emissao>
<Atualizacao>20160714</Atualizacao>
<Chave>3514001615500700028557518898269</Chave>
<cnpj>59221328000133</cnpj>
<cnpjEmissor>60331056000122</cnpjEmissor>
<cnpjTransportador>90667239000112</cnpjTransportador>
<Cliente>
<Codigo>35231360003</Codigo>
<Contato>RENATO FRANZE</Contato>
<Telefone>35994049714</Telefone>
<Email>renatof@comprovei.com.br</Email>
<Razao>COMPROVEI</Razao>
<Endereco>Avenida José de Souza Nogueira, 419</Endereco>
<Bairro>Santa Rosa</Bairro>
<Cidade>Itajuba</Cidade>
<Estado>MG</Estado>
<Pais>BRASIL</Pais>
<CEP>37501901</CEP>
<Regiao></Regiao> 
<TipoCliente>0 - Normal</TipoCliente> 
<Mensagem>Não recebe aos sábados</Mensagem>
</Cliente>
<SKUs>
<SKU codigo="21000510">
<PesoBruto>40</PesoBruto>
<PesoLiquido>36</PesoLiquido>
<Volumes>4</Volumes>
<Descricao>Produto 1</Descricao>
<Qde>4</Qde>
<Uom>CX</Uom>
<Barcode>1234</Barcode>
</SKU>
<SKU codigo="21000520">
<PesoBruto>40</PesoBruto>
<PesoLiquido>36</PesoLiquido>
<Volumes>2</Volumes>
<Descricao>Produto 2</Descricao>
<Qde>2</Qde>
<Uom>CX</Uom>
<Barcode>4321</Barcode>
</SKU>
</SKUs>
</Documento>
</Documentos>