public ImpresorRemito(Venta venta) {
   this.venta = venta;
   detalles = new LinkedList<DetalleVentaDecorator>();
   // Carga los detalles apropiadamente.
   for (DetalleVenta detalle : venta.getDetalles()) {
     DetalleVentaDecorator dvd = new DetalleVentaDecorator();
     dvd.setCantidad(detalle.getCantidad());
     dvd.setCodigo(detalle.getProducto().getCodigo());
     String marcaDesc =
         detalle.getProducto().getDescripcion()
             + " - "
             + detalle.getCalidad().getCalidad().getNombre();
     dvd.setDescripcion(marcaDesc);
     dvd.setUm(detalle.getProducto().getProductoUM().getNombre());
     dvd.setUnitario(detalle.getImporteUnitario());
     detalles.add(dvd);
   }
 }
  /**
   * Imprime un reporte en un visor de Jasper Reports a partir del cual se puede exportar o enviar a
   * la impresora. Recibe como parámetro un valor booleano que indica si se realizara impresion
   * económica o no.
   *
   * @param ImpresionEconomica true: imprimir en blanco y negro false. imprimir en color.
   * @throws java.lang.Exception Si sucede algún error de impresión.
   */
  public void imprimirInforme(boolean impresionEconomica) throws Exception {
    Map params = new HashMap();
    params.put("FECHA", venta.getFecha());
    params.put(
        "CLIENTE",
        (venta.getCliente() != null ? venta.getCliente().getIdentidad() : "Consumidor Final"));
    if (venta.getImporteRecargoDescuento() == null || venta.getImporteRecargoDescuento() == 0) {
      params.put("REC_DESC", null);
      params.put("VALOR_REC_DESC", null);
    } else {
      if (venta.getImporteRecargoDescuento() > 0) {
        params.put("REC_DESC", "Recargo:");
        params.put("VALOR_REC_DESC", venta.getImporteRecargoDescuento());
      } else {
        params.put("REC_DESC", "Descuento:");
        params.put("VALOR_REC_DESC", (-1) * venta.getImporteRecargoDescuento());
      }
    }
    params.put("FORMA_PAGO", venta.getFormaCobro().getNombre());
    params.put("SUBTOTAL", venta.getImporteTotal() - venta.getImporteRecargoDescuento());
    params.put("TOTAL", venta.getImporteTotal());

    // Imprime el informe.
    Impresor impresor = new Impresor(params, "RemitoVenta", detalles);
    impresor.imprimirInforme(impresionEconomica);
  }