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.DocumentoEnum;
5
import br.com.swconsultoria.nfe.dom.enuns.EstadosEnum;
6
import br.com.swconsultoria.nfe.dom.enuns.ServicosEnum;
7
import br.com.swconsultoria.nfe.exception.NfeException;
8
import br.com.swconsultoria.nfe.schema_4.consStatServ.TConsStatServ;
9
import br.com.swconsultoria.nfe.schema_4.retConsStatServ.TRetConsStatServ;
10
import br.com.swconsultoria.nfe.util.ConstantesUtil;
11
import br.com.swconsultoria.nfe.util.WebServiceUtil;
12
import br.com.swconsultoria.nfe.util.XmlNfeUtil;
13
import br.com.swconsultoria.nfe.wsdl.NFeStatusServico4.NFeStatusServico4Stub;
14
import lombok.extern.java.Log;
15
import org.apache.axiom.om.OMElement;
16
import org.apache.axiom.om.util.AXIOMUtil;
17
 
18
import javax.xml.bind.JAXBException;
19
import javax.xml.stream.XMLStreamException;
20
import java.rmi.RemoteException;
21
 
22
/**
23
 * Classe responsável por fazer a Verificação do Status Do Webservice
24
 *
25
 * @author Samuel Oliveira
26
 */
27
@Log
28
class Status {
29
 
30
    /**
31
     * Metodo para Consulta de Status de Serviço
32
     * <p>
33
     * Cria um objeto do tipo TConsStatServ usando as propriedades passadas
34
     * pelo argumento <b>config</b>. Após, este objeto é convertido em um obejto
35
     * OMElement manipulável onde é passado para o atributo extraElement da
36
     * classe NFeStatusServico4Stub.NfeDadosMsg.
37
     * </p>
38
     *
39
     * <p>
40
     * O método statusServico então cria uma instância de NFeStatusServico4Stub
41
     * passando o argumento <b>tipo</b> e <b>config</b> em seu construtor, onde será montada a URL
42
     * de consulta do status do serviço dependendo das configuções
43
     * (ambiente, Estado, NF-e ou NFC-e)
44
     * </p>
45
     *
46
     * <p>
47
     * Então o método nfeStatusServicoNF efetuará a consulta e retornará o
48
     * resultado que será convertido em um objeto e enfim retornado por este
49
     * método.
50
     * </p>
51
     *
52
     * @param config        ConfiguracoesNfe, interface de configuração da NF-e ou NFC-e.
53
     * @param tipoDocumento ConstantesUtil.NFE ou ConstantesUtil.NFCE
54
     * @return TRetConsStatServ - objeto que contém o resultado da transmissão do XML.
55
     * @throws NfeException
56
     * @see ConfiguracoesNfe
57
     * @see ConstantesUtil
58
     * @see WebServiceUtil
59
     * @see XmlNfeUtil
60
     */
61
    static TRetConsStatServ statusServico(ConfiguracoesNfe config, DocumentoEnum tipoDocumento) throws NfeException {
62
 
63
        try {
64
 
65
            TConsStatServ consStatServ = new TConsStatServ();
66
            consStatServ.setTpAmb(config.getAmbiente().getCodigo());
67
            consStatServ.setCUF(config.getEstado().getCodigoUF());
68
            consStatServ.setVersao(ConstantesUtil.VERSAO.NFE);
69
            consStatServ.setXServ("STATUS");
70
            String xml = XmlNfeUtil.objectToXml(consStatServ, config.getEncode());
71
 
72
            log.info("[XML-ENVIO]: " + xml);
73
 
74
            OMElement ome = AXIOMUtil.stringToOM(xml);
75
 
76
            if (EstadosEnum.MS.equals(config.getEstado())) {
77
                br.com.swconsultoria.nfe.wsdl.NFeStatusServico4MS.NFeStatusServico4Stub.NfeDadosMsg dadosMsg =
78
                        new br.com.swconsultoria.nfe.wsdl.NFeStatusServico4MS.NFeStatusServico4Stub.NfeDadosMsg();
79
                dadosMsg.setExtraElement(ome);
80
 
81
                br.com.swconsultoria.nfe.wsdl.NFeStatusServico4MS.NFeStatusServico4Stub stub =
82
                        new br.com.swconsultoria.nfe.wsdl.NFeStatusServico4MS.NFeStatusServico4Stub(
83
                                WebServiceUtil.getUrl(config, tipoDocumento, ServicosEnum.STATUS_SERVICO));
84
 
85
                br.com.swconsultoria.nfe.wsdl.NFeStatusServico4MS.NFeStatusServico4Stub.NfeResultMsg result = stub.nfeStatusServicoNF(dadosMsg);
86
 
87
                log.info("[XML-RETORNO]: " + result.getExtraElement().toString());
88
                return XmlNfeUtil.xmlToObject(result.getExtraElement().toString(), TRetConsStatServ.class);
89
            } else {
90
                NFeStatusServico4Stub.NfeDadosMsg dadosMsg = new NFeStatusServico4Stub.NfeDadosMsg();
91
                dadosMsg.setExtraElement(ome);
92
 
93
                NFeStatusServico4Stub stub = new NFeStatusServico4Stub(
94
                        WebServiceUtil.getUrl(config, tipoDocumento, ServicosEnum.STATUS_SERVICO));
95
 
96
                NFeStatusServico4Stub.NfeResultMsg result = stub.nfeStatusServicoNF(dadosMsg);
97
 
98
                log.info("[XML-RETORNO]: " + result.getExtraElement().toString());
99
                return XmlNfeUtil.xmlToObject(result.getExtraElement().toString(), TRetConsStatServ.class);
100
            }
101
 
102
        } catch (RemoteException | XMLStreamException | JAXBException e) {
103
            throw new NfeException(e.getMessage(),e);
104
        }
105
    }
106
 
107
}