use of afip.wsfe.wsdl.FEAuthRequest 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"));
}
}
use of afip.wsfe.wsdl.FEAuthRequest 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;
}
use of afip.wsfe.wsdl.FEAuthRequest 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"));
}
}
Aggregations