Search in sources :

Example 1 with FECAECabRequest

use of afip.wsfe.wsdl.FECAECabRequest in project sic by belluccifranco.

the class AfipServiceImpl method transformFacturaVentaToFECAERequest.

@Override
public FECAERequest transformFacturaVentaToFECAERequest(FacturaVenta factura, int siguienteNroComprobante, int nroPuntoDeVentaAfip) {
    FECAERequest fecaeRequest = new FECAERequest();
    FECAECabRequest cabecera = new FECAECabRequest();
    FECAEDetRequest detalle = new FECAEDetRequest();
    // DocTipo = 80: CUIT, 86: CUIL, 96: DNI, 99: Doc.(Otro)
    switch(factura.getTipoComprobante()) {
        case FACTURA_A:
            cabecera.setCbteTipo(1);
            detalle.setDocTipo(80);
            detalle.setDocNro(Long.valueOf(factura.getCliente().getIdFiscal().replace("-", "")));
            break;
        case FACTURA_B:
            cabecera.setCbteTipo(6);
            // menor a $1000, si DocTipo = 99 DocNro debe ser igual a 0 (simula un consumidor final ???)
            if (factura.getTotal() < 1000) {
                detalle.setDocTipo(99);
                detalle.setDocNro(0);
            } else {
                if (factura.getCliente().getIdFiscal().equals("")) {
                    throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_cliente_sin_idFiscal_error"));
                }
                detalle.setDocTipo(80);
                detalle.setDocNro(Long.valueOf(factura.getCliente().getIdFiscal().replace("-", "")));
            }
            break;
        case FACTURA_C:
            cabecera.setCbteTipo(11);
            detalle.setDocTipo(0);
            detalle.setDocNro(0);
            break;
    }
    // Cantidad de registros del detalle del comprobante o lote de comprobantes de ingreso
    cabecera.setCantReg(1);
    // Punto de Venta del comprobante que se está informando. Si se informa más de un comprobante, todos deben corresponder al mismo punto de venta
    cabecera.setPtoVta(nroPuntoDeVentaAfip);
    fecaeRequest.setFeCabReq(cabecera);
    ArrayOfFECAEDetRequest arrayDetalle = new ArrayOfFECAEDetRequest();
    detalle.setCbteDesde(siguienteNroComprobante);
    detalle.setCbteHasta(siguienteNroComprobante);
    // Concepto del Comprobante. Valores permitidos: 1 Productos, 2 Servicios, 3 Productos y Servicios        
    detalle.setConcepto(1);
    // Fecha del comprobante (yyyymmdd)        
    detalle.setCbteFch(formatterFechaHora.format(factura.getFecha()).replace("/", ""));
    ArrayOfAlicIva arrayIVA = new ArrayOfAlicIva();
    if (factura.getIva_21_neto() != 0) {
        AlicIva alicIVA21 = new AlicIva();
        // Valores: 5 (21%), 4 (10.5%)
        alicIVA21.setId(5);
        // Se calcula con: (100 * IVA_neto) / %IVA
        alicIVA21.setBaseImp(Utilidades.round((100 * factura.getIva_21_neto()) / 21, 2));
        alicIVA21.setImporte(Utilidades.round(factura.getIva_21_neto(), 2));
        arrayIVA.getAlicIva().add(alicIVA21);
    }
    if (factura.getIva_105_neto() != 0) {
        AlicIva alicIVA105 = new AlicIva();
        // Valores: 5 (21%), 4 (10.5%)
        alicIVA105.setId(4);
        // Se calcula con: (100 * IVA_neto) / %IVA
        alicIVA105.setBaseImp(Utilidades.round((100 * factura.getIva_105_neto()) / 10.5, 2));
        alicIVA105.setImporte(Utilidades.round(factura.getIva_105_neto(), 2));
        arrayIVA.getAlicIva().add(alicIVA105);
    }
    // Array para informar las alícuotas y sus importes asociados a un comprobante <AlicIva>. Para comprobantes tipo C y Bienes Usados – Emisor Monotributista no debe informar el array.
    detalle.setIva(arrayIVA);
    // Suma de los importes del array de IVA. Para comprobantes tipo C debe ser igual a cero (0).
    detalle.setImpIVA(Utilidades.round(factura.getIva_105_neto() + factura.getIva_21_neto(), 2));
    // Importe neto gravado. Debe ser menor o igual a Importe total y no puede ser menor a cero. Para comprobantes tipo C este campo corresponde al Importe del Sub Total                
    detalle.setImpNeto(Utilidades.round(factura.getSubTotal_bruto(), 2));
    // Importe total del comprobante, Debe ser igual a Importe neto no gravado + Importe exento + Importe neto gravado + todos los campos de IVA al XX% + Importe de tributos                        
    detalle.setImpTotal(Utilidades.round(factura.getTotal(), 2));
    // Código de moneda del comprobante. Consultar método FEParamGetTiposMonedas para valores posibles
    detalle.setMonId("PES");
    // Cotización de la moneda informada. Para PES, pesos argentinos la misma debe ser 1
    detalle.setMonCotiz(1);
    arrayDetalle.getFECAEDetRequest().add(detalle);
    fecaeRequest.setFeDetReq(arrayDetalle);
    return fecaeRequest;
}
Also used : ArrayOfAlicIva(afip.wsfe.wsdl.ArrayOfAlicIva) FECAECabRequest(afip.wsfe.wsdl.FECAECabRequest) BusinessServiceException(sic.service.BusinessServiceException) ArrayOfFECAEDetRequest(afip.wsfe.wsdl.ArrayOfFECAEDetRequest) FECAEDetRequest(afip.wsfe.wsdl.FECAEDetRequest) ArrayOfFECAEDetRequest(afip.wsfe.wsdl.ArrayOfFECAEDetRequest) ArrayOfAlicIva(afip.wsfe.wsdl.ArrayOfAlicIva) AlicIva(afip.wsfe.wsdl.AlicIva) FECAERequest(afip.wsfe.wsdl.FECAERequest)

Example 2 with FECAECabRequest

use of afip.wsfe.wsdl.FECAECabRequest in project sic by belluccifranco.

the class AfipServiceImpl method transformComprobanteToFECAERequest.

@Override
public FECAERequest transformComprobanteToFECAERequest(ComprobanteAFIP comprobante, int siguienteNroComprobante, int nroPuntoDeVentaAfip) {
    FECAERequest fecaeRequest = new FECAERequest();
    FECAECabRequest cabecera = new FECAECabRequest();
    FECAEDetRequest detalle = new FECAEDetRequest();
    // DocTipo = 80: CUIT, 86: CUIL, 96: DNI, 99: Doc.(Otro)
    switch(comprobante.getTipoComprobante()) {
        case FACTURA_A:
            cabecera.setCbteTipo(1);
            detalle.setDocTipo(80);
            detalle.setDocNro(Long.valueOf(comprobante.getCliente().getIdFiscal().replace("-", "")));
            break;
        case NOTA_DEBITO_A:
            cabecera.setCbteTipo(2);
            detalle.setDocTipo(80);
            detalle.setDocNro(Long.valueOf(comprobante.getCliente().getIdFiscal().replace("-", "")));
            break;
        case NOTA_CREDITO_A:
            cabecera.setCbteTipo(3);
            detalle.setDocTipo(80);
            detalle.setDocNro(Long.valueOf(comprobante.getCliente().getIdFiscal().replace("-", "")));
            break;
        case FACTURA_B:
            cabecera.setCbteTipo(6);
            // menor a $1000, si DocTipo = 99 DocNro debe ser igual a 0 (simula un consumidor final ???)
            if (comprobante.getTotal() < 1000) {
                detalle.setDocTipo(99);
                detalle.setDocNro(0);
            } else {
                if (comprobante.getCliente().getIdFiscal().equals("")) {
                    throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_cliente_sin_idFiscal_error"));
                }
                detalle.setDocTipo(80);
                detalle.setDocNro(Long.valueOf(comprobante.getCliente().getIdFiscal().replace("-", "")));
            }
            break;
        case NOTA_DEBITO_B:
            cabecera.setCbteTipo(7);
            // menor a $1000, si DocTipo = 99 DocNro debe ser igual a 0 (simula un consumidor final ???)
            if (comprobante.getTotal() < 1000) {
                detalle.setDocTipo(99);
                detalle.setDocNro(0);
            } else {
                if (comprobante.getCliente().getIdFiscal().equals("")) {
                    throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_cliente_sin_idFiscal_error"));
                }
                detalle.setDocTipo(80);
                detalle.setDocNro(Long.valueOf(comprobante.getCliente().getIdFiscal().replace("-", "")));
            }
            break;
        case NOTA_CREDITO_B:
            cabecera.setCbteTipo(8);
            // menor a $1000, si DocTipo = 99 DocNro debe ser igual a 0 (simula un consumidor final ???)
            if (comprobante.getTotal() < 1000) {
                detalle.setDocTipo(99);
                detalle.setDocNro(0);
            } else {
                if (comprobante.getCliente().getIdFiscal().equals("")) {
                    throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_cliente_sin_idFiscal_error"));
                }
                detalle.setDocTipo(80);
                detalle.setDocNro(Long.valueOf(comprobante.getCliente().getIdFiscal().replace("-", "")));
            }
            break;
        case FACTURA_C:
            cabecera.setCbteTipo(11);
            detalle.setDocTipo(0);
            detalle.setDocNro(0);
            break;
    }
    // Cantidad de registros del detalle del comprobante o lote de comprobantes de ingreso
    cabecera.setCantReg(1);
    // Punto de Venta del comprobante que se está informando. Si se informa más de un comprobante, todos deben corresponder al mismo punto de venta
    cabecera.setPtoVta(nroPuntoDeVentaAfip);
    fecaeRequest.setFeCabReq(cabecera);
    ArrayOfFECAEDetRequest arrayDetalle = new ArrayOfFECAEDetRequest();
    detalle.setCbteDesde(siguienteNroComprobante);
    detalle.setCbteHasta(siguienteNroComprobante);
    // Concepto del Comprobante. Valores permitidos: 1 Productos, 2 Servicios, 3 Productos y Servicios
    detalle.setConcepto(1);
    // Fecha del comprobante (yyyymmdd)
    detalle.setCbteFch(formatterFechaHora.format(comprobante.getFecha()).replace("/", ""));
    ArrayOfAlicIva arrayIVA = new ArrayOfAlicIva();
    if (comprobante.getIva21neto() != 0) {
        AlicIva alicIVA21 = new AlicIva();
        // Valores: 5 (21%), 4 (10.5%)
        alicIVA21.setId(5);
        // Se calcula con: (100 * IVA_neto) / %IVA
        alicIVA21.setBaseImp(Utilidades.round((100 * comprobante.getIva21neto()) / 21, 2));
        alicIVA21.setImporte(Utilidades.round(comprobante.getIva21neto(), 2));
        arrayIVA.getAlicIva().add(alicIVA21);
    }
    if (comprobante.getIva105neto() != 0) {
        AlicIva alicIVA105 = new AlicIva();
        // Valores: 5 (21%), 4 (10.5%)
        alicIVA105.setId(4);
        // Se calcula con: (100 * IVA_neto) / %IVA
        alicIVA105.setBaseImp(Utilidades.round((100 * comprobante.getIva105neto()) / 10.5, 2));
        alicIVA105.setImporte(Utilidades.round(comprobante.getIva105neto(), 2));
        arrayIVA.getAlicIva().add(alicIVA105);
    }
    // Array para informar las alícuotas y sus importes asociados a un comprobante <AlicIva>. Para comprobantes tipo C y Bienes Usados – Emisor Monotributista no debe informar el array.
    detalle.setIva(arrayIVA);
    // Suma de los importes del array de IVA. Para comprobantes tipo C debe ser igual a cero (0).
    detalle.setImpIVA(Utilidades.round(comprobante.getIva105neto() + comprobante.getIva21neto(), 2));
    // Importe neto gravado. Debe ser menor o igual a Importe total y no puede ser menor a cero. Para comprobantes tipo C este campo corresponde al Importe del Sub Total
    detalle.setImpNeto(Utilidades.round(comprobante.getSubtotalBruto(), 2));
    // El campo “Importe neto no gravado” <ImpTotConc>. No puede ser menor a cero(0). Para comprobantes tipo C debe ser igual a cero (0).
    detalle.setImpTotConc(comprobante.getMontoNoGravado());
    // Importe total del comprobante, Debe ser igual a Importe neto no gravado + Importe exento + Importe neto gravado + todos los campos de IVA al XX% + Importe de tributos
    detalle.setImpTotal(Utilidades.round(comprobante.getTotal(), 2));
    // Código de moneda del comprobante. Consultar método FEParamGetTiposMonedas para valores posibles
    detalle.setMonId("PES");
    // Cotización de la moneda informada. Para PES, pesos argentinos la misma debe ser 1
    detalle.setMonCotiz(1);
    arrayDetalle.getFECAEDetRequest().add(detalle);
    fecaeRequest.setFeDetReq(arrayDetalle);
    return fecaeRequest;
}
Also used : ArrayOfAlicIva(afip.wsfe.wsdl.ArrayOfAlicIva) FECAECabRequest(afip.wsfe.wsdl.FECAECabRequest) BusinessServiceException(sic.service.BusinessServiceException) ArrayOfFECAEDetRequest(afip.wsfe.wsdl.ArrayOfFECAEDetRequest) FECAEDetRequest(afip.wsfe.wsdl.FECAEDetRequest) ArrayOfFECAEDetRequest(afip.wsfe.wsdl.ArrayOfFECAEDetRequest) ArrayOfAlicIva(afip.wsfe.wsdl.ArrayOfAlicIva) AlicIva(afip.wsfe.wsdl.AlicIva) FECAERequest(afip.wsfe.wsdl.FECAERequest)

Aggregations

AlicIva (afip.wsfe.wsdl.AlicIva)2 ArrayOfAlicIva (afip.wsfe.wsdl.ArrayOfAlicIva)2 ArrayOfFECAEDetRequest (afip.wsfe.wsdl.ArrayOfFECAEDetRequest)2 FECAECabRequest (afip.wsfe.wsdl.FECAECabRequest)2 FECAEDetRequest (afip.wsfe.wsdl.FECAEDetRequest)2 FECAERequest (afip.wsfe.wsdl.FECAERequest)2 BusinessServiceException (sic.service.BusinessServiceException)2