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