Subversion Repositories Integrator Subversion

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
414 espaco 1
package nfe;
2
 
3
import br.com.swconsultoria.nfe.dom.ConfiguracoesNfe;
4
import br.com.swconsultoria.nfe.dom.enuns.ConsultaDFeEnum;
5
import br.com.swconsultoria.nfe.dom.enuns.DocumentoEnum;
6
import br.com.swconsultoria.nfe.dom.enuns.PessoaEnum;
7
import br.com.swconsultoria.nfe.dom.enuns.ServicosEnum;
8
import br.com.swconsultoria.nfe.exception.NfeException;
9
import br.com.swconsultoria.nfe.schema.distdfeint.DistDFeInt;
10
import br.com.swconsultoria.nfe.schema.retdistdfeint.RetDistDFeInt;
11
import br.com.swconsultoria.nfe.util.ConstantesUtil;
12
import br.com.swconsultoria.nfe.util.ObjetoUtil;
13
import br.com.swconsultoria.nfe.util.WebServiceUtil;
14
import br.com.swconsultoria.nfe.util.XmlNfeUtil;
15
import br.com.swconsultoria.nfe.wsdl.NFeDistribuicaoDFe.NFeDistribuicaoDFeStub;
16
import lombok.extern.java.Log;
17
import org.apache.axiom.om.OMElement;
18
import org.apache.axiom.om.util.AXIOMUtil;
19
import org.apache.axis2.transport.http.HTTPConstants;
20
 
21
import javax.xml.bind.JAXBException;
22
import javax.xml.stream.XMLStreamException;
23
import java.rmi.RemoteException;
24
 
25
/**
26
 * @author Samuel Oliveira - samuel@swconsultoria.com.br - www.swconsultoria.com.br
27
 */
28
@Log
29
class DistribuicaoDFe {
30
 
31
    /**
32
     * Classe Reponsavel Por Consultar as NFE na SEFAZ
33
     *
34
     * @param config       Configuração
35
     * @param tipoPessoa   Informe {@link PessoaEnum}
36
     * @param cpfCnpj      Informe o Cpf ou Cnpj
37
     * @param tipoConsulta Informe {@link ConsultaDFeEnum}
38
     * @param nsuChave     Informe a Chave ou o Nsu
39
     * @return
40
     * @throws NfeException
41
     */
42
    static RetDistDFeInt consultaNfe(ConfiguracoesNfe config, PessoaEnum tipoPessoa, String cpfCnpj, ConsultaDFeEnum tipoConsulta,
43
                                     String nsuChave) throws NfeException {
44
 
45
        try {
46
 
47
            DistDFeInt distDFeInt = new DistDFeInt();
48
            distDFeInt.setVersao(ConstantesUtil.VERSAO.DIST_DFE);
49
            distDFeInt.setTpAmb(config.getAmbiente().getCodigo());
50
            distDFeInt.setCUFAutor(config.getEstado().getCodigoUF());
51
 
52
            if (PessoaEnum.JURIDICA.equals(tipoPessoa)) {
53
                distDFeInt.setCNPJ(cpfCnpj);
54
            } else {
55
                distDFeInt.setCPF(cpfCnpj);
56
            }
57
 
58
            switch (tipoConsulta) {
59
                case NSU:
60
                    DistDFeInt.DistNSU distNSU = new DistDFeInt.DistNSU();
61
                    distNSU.setUltNSU(nsuChave);
62
                    distDFeInt.setDistNSU(distNSU);
63
                    break;
64
                case NSU_UNICO:
65
                    DistDFeInt.ConsNSU consNSU = new DistDFeInt.ConsNSU();
66
                    consNSU.setNSU(nsuChave);
67
                    distDFeInt.setConsNSU(consNSU);
68
                    break;
69
                case CHAVE:
70
                    DistDFeInt.ConsChNFe chNFe = new DistDFeInt.ConsChNFe();
71
                    chNFe.setChNFe(nsuChave);
72
                    distDFeInt.setConsChNFe(chNFe);
73
                    break;
74
            }
75
 
76
            String xml = XmlNfeUtil.objectToXml(distDFeInt, config.getEncode());
77
 
78
            log.info("[XML-ENVIO]: " + xml);
79
 
80
            OMElement ome = AXIOMUtil.stringToOM(xml);
81
 
82
            NFeDistribuicaoDFeStub.NfeDadosMsg_type0 dadosMsgType0 = new NFeDistribuicaoDFeStub.NfeDadosMsg_type0();
83
            dadosMsgType0.setExtraElement(ome);
84
 
85
            NFeDistribuicaoDFeStub.NfeDistDFeInteresse distDFeInteresse = new NFeDistribuicaoDFeStub.NfeDistDFeInteresse();
86
            distDFeInteresse.setNfeDadosMsg(dadosMsgType0);
87
 
88
            NFeDistribuicaoDFeStub stub = new NFeDistribuicaoDFeStub(
89
                    WebServiceUtil.getUrl(config, DocumentoEnum.NFE, ServicosEnum.DISTRIBUICAO_DFE));
90
 
91
            // Timeout
92
            if (ObjetoUtil.verifica(config.getTimeout()).isPresent()) {
93
                stub._getServiceClient().getOptions().setProperty(HTTPConstants.SO_TIMEOUT, config.getTimeout());
94
                stub._getServiceClient().getOptions().setProperty(HTTPConstants.CONNECTION_TIMEOUT,
95
                        config.getTimeout());
96
            }
97
            NFeDistribuicaoDFeStub.NfeDistDFeInteresseResponse result = stub.nfeDistDFeInteresse(distDFeInteresse);
98
 
99
            log.info("[XML-RETORNO]: " + result.getNfeDistDFeInteresseResult().getExtraElement().toString());
100
            return XmlNfeUtil.xmlToObject(result.getNfeDistDFeInteresseResult().getExtraElement().toString(),
101
                    RetDistDFeInt.class);
102
 
103
        } catch (RemoteException | XMLStreamException | JAXBException e) {
104
            throw new NfeException(e.getMessage(),e);
105
        }
106
    }
107
 
108
}