Search in sources :

Example 1 with WebServiceClientException

use of org.springframework.ws.client.WebServiceClientException in project sic by belluccifranco.

the class AfipServiceImpl method getAfipWSAACredencial.

@Override
public AfipWSAACredencial getAfipWSAACredencial(String afipNombreServicio, Empresa empresa) {
    AfipWSAACredencial afipCredencial = new AfipWSAACredencial();
    String loginTicketResponse = "";
    byte[] p12file = configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(empresa).getCertificadoAfip();
    if (p12file.length == 0) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_cds_certificado_vacio"));
    }
    String p12signer = configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(empresa).getFirmanteCertificadoAfip();
    String p12pass = configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(empresa).getPasswordCertificadoAfip();
    //siempre devuelve por 12hs
    long ticketTime = 3600000L;
    byte[] loginTicketRequest_xml_cms = afipWebServiceSOAPClient.crearCMS(p12file, p12pass, p12signer, afipNombreServicio, ticketTime);
    LoginCms loginCms = new LoginCms();
    loginCms.setIn0(Base64.getEncoder().encodeToString(loginTicketRequest_xml_cms));
    try {
        loginTicketResponse = afipWebServiceSOAPClient.loginCMS(loginCms);
    } catch (WebServiceClientException ex) {
        LOGGER.error(ex.getMessage());
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_token_wsaa_error"));
    }
    try {
        Reader tokenReader = new StringReader(loginTicketResponse);
        Document tokenDoc = new SAXReader(false).read(tokenReader);
        afipCredencial.setToken(tokenDoc.valueOf("/loginTicketResponse/credentials/token"));
        afipCredencial.setSign(tokenDoc.valueOf("/loginTicketResponse/credentials/sign"));
        afipCredencial.setCuit(empresa.getCuip());
    } catch (DocumentException ex) {
        LOGGER.error(ex.getMessage());
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_error_procesando_xml"));
    }
    return afipCredencial;
}
Also used : AfipWSAACredencial(sic.modelo.AfipWSAACredencial) BusinessServiceException(sic.service.BusinessServiceException) WebServiceClientException(org.springframework.ws.client.WebServiceClientException) SAXReader(org.dom4j.io.SAXReader) DocumentException(org.dom4j.DocumentException) StringReader(java.io.StringReader) SAXReader(org.dom4j.io.SAXReader) Reader(java.io.Reader) StringReader(java.io.StringReader) LoginCms(afip.wsaa.wsdl.LoginCms) Document(org.dom4j.Document)

Example 2 with WebServiceClientException

use of org.springframework.ws.client.WebServiceClientException in project sic by belluccifranco.

the class AfipServiceImpl method autorizarFacturaVenta.

@Override
public FacturaVenta autorizarFacturaVenta(FacturaVenta factura) {
    if (configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(factura.getEmpresa()).isFacturaElectronicaHabilitada() == false) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_cds_fe_habilitada"));
    }
    if (factura.getTipoComprobante() != TipoDeComprobante.FACTURA_A && factura.getTipoComprobante() != TipoDeComprobante.FACTURA_B && factura.getTipoComprobante() != TipoDeComprobante.FACTURA_C) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_tipo_no_valido"));
    }
    if (factura.getCAE() != 0) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_factura_ya_autorizada"));
    }
    AfipWSAACredencial afipCredencial = this.getAfipWSAACredencial("wsfe", factura.getEmpresa());
    FEAuthRequest feAuthRequest = new FEAuthRequest();
    feAuthRequest.setCuit(afipCredencial.getCuit());
    feAuthRequest.setSign(afipCredencial.getSign());
    feAuthRequest.setToken(afipCredencial.getToken());
    FECAESolicitar fecaeSolicitud = new FECAESolicitar();
    fecaeSolicitud.setAuth(feAuthRequest);
    int nroPuntoDeVentaAfip = configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(factura.getEmpresa()).getNroPuntoDeVentaAfip();
    int siguienteNroComprobante = this.getSiguienteNroComprobante(feAuthRequest, factura.getTipoComprobante(), nroPuntoDeVentaAfip);
    fecaeSolicitud.setFeCAEReq(this.transformFacturaVentaToFECAERequest(factura, siguienteNroComprobante, nroPuntoDeVentaAfip));
    try {
        FECAEResponse response = afipWebServiceSOAPClient.FECAESolicitar(fecaeSolicitud);
        String msjError = "";
        // errores generales de la request
        if (response.getErrors() != null) {
            msjError = response.getErrors().getErr().get(0).getCode() + "-" + response.getErrors().getErr().get(0).getMsg();
            LOGGER.error(msjError);
            if (!msjError.isEmpty()) {
                throw new BusinessServiceException(msjError);
            }
        }
        // errores particulares de cada comprobante
        if (response.getFeDetResp().getFECAEDetResponse().get(0).getResultado().equals("R")) {
            msjError += response.getFeDetResp().getFECAEDetResponse().get(0).getObservaciones().getObs().get(0).getMsg();
            LOGGER.error(msjError);
            throw new BusinessServiceException(msjError);
        }
        long cae = Long.valueOf(response.getFeDetResp().getFECAEDetResponse().get(0).getCAE());
        factura.setCAE(cae);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
        factura.setVencimientoCAE(formatter.parse(response.getFeDetResp().getFECAEDetResponse().get(0).getCAEFchVto()));
        factura.setNumSerieAfip(nroPuntoDeVentaAfip);
        factura.setNumFacturaAfip(siguienteNroComprobante);
        return factura;
    } catch (WebServiceClientException ex) {
        LOGGER.error(ex.getMessage());
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_autorizacion_error"));
    } catch (ParseException ex) {
        LOGGER.error(ex.getMessage());
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_error_procesando_fecha"));
    }
}
Also used : AfipWSAACredencial(sic.modelo.AfipWSAACredencial) FECAEResponse(afip.wsfe.wsdl.FECAEResponse) BusinessServiceException(sic.service.BusinessServiceException) FEAuthRequest(afip.wsfe.wsdl.FEAuthRequest) WebServiceClientException(org.springframework.ws.client.WebServiceClientException) FECAESolicitar(afip.wsfe.wsdl.FECAESolicitar) ParseException(java.text.ParseException) SimpleDateFormat(java.text.SimpleDateFormat)

Example 3 with WebServiceClientException

use of org.springframework.ws.client.WebServiceClientException in project sic by belluccifranco.

the class AfipServiceImpl method getFEAuth.

@Override
public FEAuthRequest getFEAuth(String afipNombreServicio, Empresa empresa) {
    FEAuthRequest feAuthRequest = new FEAuthRequest();
    String loginTicketResponse = "";
    byte[] p12file = configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(empresa).getCertificadoAfip();
    if (p12file.length == 0) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_cds_certificado_vacio"));
    }
    String p12signer = configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(empresa).getFirmanteCertificadoAfip();
    String p12pass = configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(empresa).getPasswordCertificadoAfip();
    // siempre devuelve por 12hs
    long ticketTime = 3600000L;
    byte[] loginTicketRequest_xml_cms = afipWebServiceSOAPClient.crearCMS(p12file, p12pass, p12signer, afipNombreServicio, ticketTime);
    LoginCms loginCms = new LoginCms();
    loginCms.setIn0(Base64.getEncoder().encodeToString(loginTicketRequest_xml_cms));
    try {
        loginTicketResponse = afipWebServiceSOAPClient.loginCMS(loginCms);
    } catch (WebServiceClientException ex) {
        LOGGER.error(ex.getMessage());
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_token_wsaa_error"));
    }
    try {
        Reader tokenReader = new StringReader(loginTicketResponse);
        Document tokenDoc = new SAXReader(false).read(tokenReader);
        feAuthRequest.setToken(tokenDoc.valueOf("/loginTicketResponse/credentials/token"));
        feAuthRequest.setSign(tokenDoc.valueOf("/loginTicketResponse/credentials/sign"));
        feAuthRequest.setCuit(empresa.getCuip());
    } catch (DocumentException ex) {
        LOGGER.error(ex.getMessage());
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_error_procesando_xml"));
    }
    return feAuthRequest;
}
Also used : FEAuthRequest(afip.wsfe.wsdl.FEAuthRequest) BusinessServiceException(sic.service.BusinessServiceException) WebServiceClientException(org.springframework.ws.client.WebServiceClientException) SAXReader(org.dom4j.io.SAXReader) DocumentException(org.dom4j.DocumentException) StringReader(java.io.StringReader) SAXReader(org.dom4j.io.SAXReader) Reader(java.io.Reader) StringReader(java.io.StringReader) LoginCms(afip.wsaa.wsdl.LoginCms) Document(org.dom4j.Document)

Example 4 with WebServiceClientException

use of org.springframework.ws.client.WebServiceClientException in project sic by belluccifranco.

the class AfipServiceImpl method getSiguienteNroComprobante.

@Override
public int getSiguienteNroComprobante(FEAuthRequest feAuthRequest, TipoDeComprobante tipo, int nroPuntoDeVentaAfip) {
    FECompUltimoAutorizado solicitud = new FECompUltimoAutorizado();
    solicitud.setAuth(feAuthRequest);
    switch(tipo) {
        case FACTURA_A:
            solicitud.setCbteTipo(1);
            break;
        case NOTA_DEBITO_A:
            solicitud.setCbteTipo(2);
            break;
        case NOTA_CREDITO_A:
            solicitud.setCbteTipo(3);
            break;
        case FACTURA_B:
            solicitud.setCbteTipo(6);
            break;
        case NOTA_DEBITO_B:
            solicitud.setCbteTipo(7);
            break;
        case NOTA_CREDITO_B:
            solicitud.setCbteTipo(8);
            break;
        case FACTURA_C:
            solicitud.setCbteTipo(11);
            break;
    }
    solicitud.setPtoVta(nroPuntoDeVentaAfip);
    try {
        FERecuperaLastCbteResponse response = afipWebServiceSOAPClient.FECompUltimoAutorizado(solicitud);
        return response.getCbteNro() + 1;
    } catch (WebServiceClientException ex) {
        LOGGER.error(ex.getMessage());
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_siguiente_nro_comprobante_error"));
    }
}
Also used : BusinessServiceException(sic.service.BusinessServiceException) FECompUltimoAutorizado(afip.wsfe.wsdl.FECompUltimoAutorizado) WebServiceClientException(org.springframework.ws.client.WebServiceClientException) FERecuperaLastCbteResponse(afip.wsfe.wsdl.FERecuperaLastCbteResponse)

Example 5 with WebServiceClientException

use of org.springframework.ws.client.WebServiceClientException in project sic by belluccifranco.

the class AfipServiceImpl method autorizar.

@Override
public void autorizar(ComprobanteAFIP comprobante) {
    if (configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(comprobante.getEmpresa()).isFacturaElectronicaHabilitada() == false) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_cds_fe_habilitada"));
    }
    if (comprobante.getTipoComprobante() != TipoDeComprobante.FACTURA_A && comprobante.getTipoComprobante() != TipoDeComprobante.FACTURA_B && comprobante.getTipoComprobante() != TipoDeComprobante.FACTURA_C && comprobante.getTipoComprobante() != TipoDeComprobante.NOTA_CREDITO_A && comprobante.getTipoComprobante() != TipoDeComprobante.NOTA_DEBITO_A && comprobante.getTipoComprobante() != TipoDeComprobante.NOTA_CREDITO_B && comprobante.getTipoComprobante() != TipoDeComprobante.NOTA_DEBITO_B) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_comprobanteAFIP_invalido"));
    }
    if (comprobante.getCAE() != 0) {
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_comprobanteAFIP_autorizado"));
    }
    FECAESolicitar fecaeSolicitud = new FECAESolicitar();
    FEAuthRequest feAuthRequest = this.getFEAuth(WEBSERVICE_FACTURA_ELECTRONICA, comprobante.getEmpresa());
    fecaeSolicitud.setAuth(feAuthRequest);
    int nroPuntoDeVentaAfip = configuracionDelSistemaService.getConfiguracionDelSistemaPorEmpresa(comprobante.getEmpresa()).getNroPuntoDeVentaAfip();
    int siguienteNroComprobante = this.getSiguienteNroComprobante(feAuthRequest, comprobante.getTipoComprobante(), nroPuntoDeVentaAfip);
    fecaeSolicitud.setFeCAEReq(this.transformComprobanteToFECAERequest(comprobante, siguienteNroComprobante, nroPuntoDeVentaAfip));
    try {
        FECAEResponse response = afipWebServiceSOAPClient.FECAESolicitar(fecaeSolicitud);
        String msjError = "";
        // errores generales de la request
        if (response.getErrors() != null) {
            msjError = response.getErrors().getErr().get(0).getCode() + "-" + response.getErrors().getErr().get(0).getMsg();
            LOGGER.error(msjError);
            if (!msjError.isEmpty()) {
                throw new BusinessServiceException(msjError);
            }
        }
        // errores particulares de cada comprobante
        if (response.getFeDetResp().getFECAEDetResponse().get(0).getResultado().equals("R")) {
            msjError += response.getFeDetResp().getFECAEDetResponse().get(0).getObservaciones().getObs().get(0).getMsg();
            LOGGER.error(msjError);
            throw new BusinessServiceException(msjError);
        }
        long cae = Long.valueOf(response.getFeDetResp().getFECAEDetResponse().get(0).getCAE());
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
        comprobante.setCAE(cae);
        comprobante.setVencimientoCAE(formatter.parse(response.getFeDetResp().getFECAEDetResponse().get(0).getCAEFchVto()));
        comprobante.setNumSerieAfip(nroPuntoDeVentaAfip);
        comprobante.setNumFacturaAfip(siguienteNroComprobante);
    } catch (WebServiceClientException ex) {
        LOGGER.error(ex.getMessage());
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_autorizacion_error"));
    } catch (ParseException ex) {
        LOGGER.error(ex.getMessage());
        throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_error_procesando_fecha"));
    }
}
Also used : FECAEResponse(afip.wsfe.wsdl.FECAEResponse) BusinessServiceException(sic.service.BusinessServiceException) FEAuthRequest(afip.wsfe.wsdl.FEAuthRequest) WebServiceClientException(org.springframework.ws.client.WebServiceClientException) FECAESolicitar(afip.wsfe.wsdl.FECAESolicitar) ParseException(java.text.ParseException) SimpleDateFormat(java.text.SimpleDateFormat)

Aggregations

WebServiceClientException (org.springframework.ws.client.WebServiceClientException)5 BusinessServiceException (sic.service.BusinessServiceException)5 FEAuthRequest (afip.wsfe.wsdl.FEAuthRequest)3 LoginCms (afip.wsaa.wsdl.LoginCms)2 FECAEResponse (afip.wsfe.wsdl.FECAEResponse)2 FECAESolicitar (afip.wsfe.wsdl.FECAESolicitar)2 Reader (java.io.Reader)2 StringReader (java.io.StringReader)2 ParseException (java.text.ParseException)2 SimpleDateFormat (java.text.SimpleDateFormat)2 Document (org.dom4j.Document)2 DocumentException (org.dom4j.DocumentException)2 SAXReader (org.dom4j.io.SAXReader)2 AfipWSAACredencial (sic.modelo.AfipWSAACredencial)2 FECompUltimoAutorizado (afip.wsfe.wsdl.FECompUltimoAutorizado)1 FERecuperaLastCbteResponse (afip.wsfe.wsdl.FERecuperaLastCbteResponse)1