/*
 * OrderListViewSysManager.java
 *
 * Created on 17 de septiembre de 2004, 04:16 PM
 */

package com.fenalco.utilities.lists;

import java.util.Enumeration;
import java.util.Vector;

import com.fenalco.entities.Order;
import com.fenalco.entities.OrderProduct;
import com.fenalco.entities.SupplierProduct;
import com.fenalco.entities.ReportOrderList;
import com.fenalco.entities.Store;
import com.fenalco.entities.DataAccess;
import com.fenalco.entities.Community;

/**
 *
 * @author  Néstor Romero
 */
public class ReportOrderListViewSysManager implements ListView{
    
    /**
     * El listado (modelo o documento)
     */    
    Vector orderList;
    /**
     * Como el listado es un Hashtable, aqui almaceno el key actual
     */    
    private Enumeration keys;
    /**
     * La llave actual que se está trabajando, se usa para tener acceso a los objetos
     * que se deben mostrar de ese elemento de la lista
     */    
    private Object actualKey;
    /**
     * valor actual en el que se está trabajando, es decir, la fila actual de la lista
     */    
    private Order actualValue;
    /**
     * aqui se almacenan los datos que se van a mostrar en las diferentes columnas
     * de la lista
     */    
    private Vector valuesToShow;
    /**
     * contador que indica en que columna voy
     */    
    private int count;
    
    private int companyType;
    
    private int categoryId;
    
    private boolean hasStore;
    
        
    /** Creates a new instance of OrderListViewSysManager */
    public ReportOrderListViewSysManager(Vector list, int companyType, int categoryId, boolean hasStore) {
    	orderList = list;
    	keys = orderList.elements();
        
        //Parámetros de la vista
        this.companyType = companyType;
        this.categoryId = categoryId;
        this.hasStore = hasStore;
        
    }
	
	/* (non-Javadoc)
	 * @see com.fenalco.utilities.lists.ListView#move()
	 */
	public boolean move( )
	{
        boolean res = false;
        if( keys.hasMoreElements() )
        {
            actualValue = ( Order )keys.nextElement();
            int storeId = actualValue.getStoreId();
            Store store = new Store( storeId );
            
            valuesToShow = new Vector();
            count = 0;
            
            // siempre el primer elemento que mando es el id del objeto (se use o no)
            //System.out.println( "View-Id" );
            
            valuesToShow.addElement( actualValue.getId() + "" );                
            
            if( companyType==2 ){
                //Proveedor
                //System.out.println( "View-Supplier" );
                if( actualValue.getCompanyName() != null ){
                    valuesToShow.addElement( actualValue.getCompanyName() );
                }else{
                    valuesToShow.addElement( "No disponible" );
                }
                
            }else{
                //Minorista
                //System.out.println( "View-ShopKeeper" );
                if( store.getCompanyName( store.getId() ) != null ){
                    valuesToShow.addElement( store.getCompanyName( store.getId() ) );
                }else{
                    valuesToShow.addElement( "No disponible" );
                }
                
            }
            
            if( hasStore ){
                //Establecimiento
                //System.out.println( "View-Store" );
                if( store.getName() != null ){
                    valuesToShow.addElement( store.getName() );
                }else{
                    valuesToShow.addElement( "No disponible" );
                }
                
            }
            
            if( categoryId != -1 ){
                //Category
                //System.out.println( "View-Category" );
                Enumeration enOrder = actualValue.getProducts().elements();
                boolean checked = false;
                while( enOrder.hasMoreElements() ){
                    OrderProduct op = (OrderProduct)enOrder.nextElement();
                    SupplierProduct sp = new SupplierProduct( op.getSupplierProductId() );
                    
                    if( !checked && sp.getCategory() == categoryId ){
                        checked = true;
                        valuesToShow.addElement( sp.getCategoryName() );
                    }
                    
                }
            }
            
            //System.out.println( "View-City" );
            if( store.getNeighbourhoodCity() !=null ){
                valuesToShow.addElement( store.getNeighbourhoodCity() );    
            }else{
                valuesToShow.addElement( "No disponible" );
            }
            
            //System.out.println( "View-Date" );
            if( actualValue.getDate() != null ){
                valuesToShow.addElement( actualValue.getDate().toString() );    
            }else{
                valuesToShow.addElement( "No disponible" );
            }
            
            //System.out.println( "View-Total" );
            valuesToShow.addElement( actualValue.getTime().toString() );
            valuesToShow.addElement( DataAccess.getCurrency( actualValue.getValue() ) );
            
            //System.out.println( "View-Total-Discount" );
            //valuesToShow.addElement( DataAccess.getCurrency( actualValue.getValue() - actualValue.getDiscount() ) );
            
            res = true;
            
            
        }
        return res;
	}

	/* (non-Javadoc)
	 * @see com.fenalco.utilities.lists.ListView#nextElement()
	 */
	public Object nextElement( )
	{
        Object res = null;
        if( valuesToShow != null && valuesToShow.size() > 0)
        {
            if( count < valuesToShow.size() )
            {
                res = valuesToShow.elementAt( count++ );
            }
        }
        return res;
	}
    
}

// “Copyright (C) <2008> Multilateral Investment Fund of the Inter-American Development Bank.
// Este archivo es parte de <ICT4BUS-PVL>
// < ICT4BUS-PVL > es software libre: usted puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General GNU publicada por la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
// < ICT4BUS-PVL > se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 
// Consulte los detalles de la Licencia Pública General GNU para obtener una información más detallada. 
// Debería haber recibido una copia de la Licencia Pública General GNU junto a este programa. En caso contrario, consulte http://www.gnu.org/licenses/.”