package Factura;

import java.util.ArrayList;

/**
 * Clase para manejar el Objeto Factura
 * @author felix
 */
        
public class Factura {
    private Cliente datosCliente;
    private ArrayList<Partida> items;
    
    /**
     * Constructor de Factura
     * @param unDomicilio
     */
    
    public Factura(Cliente unCliente) {
        items = new ArrayList<Partida>();
        datosCliente = unCliente; 
    }
    
    /**
     * Agraga un producto y su cantidad a la Factura
     * @param unProducto
     * @param unaCantidad
     */
    
    public void agrega(Producto unProducto, int unaCantidad) {
        Partida unItem = new Partida(unProducto, unaCantidad);
        items.add(unItem); 
    }
    
    /**
     * Da formato a la cadena de salida a la Factura
     * @return Regresa la Factura en formato establecido
     */
    
    public String formato() {
        String r = "                        F A C T U R A \n\n" 
                 + datosCliente.formato()
                 + String.format("\n\n%-30s%8s%5s%8s\n", 
                 "Descripcion", "Precio", "Cda", "Total"); 
        for (Partida item : items) {
            r = r + item.formato() + "\n"; 
        }
        
        r = r + String.format("\nCANTIDAD A PAGAR: $%8.2f", obtenCantidadDebida()); 
                return r;
    }
    
    /**
     * Obtiene la Cantidad total a pagar por la factura
     * @return Calcula el total a pagar por la Factura
     */
    
    public double obtenCantidadDebida() {
        double cantidadDebida = 0;
        
        for (Partida item : items) 
            cantidadDebida = cantidadDebida + item.obtenPrecioTotal(); 
        return cantidadDebida; 
    }
}
