package org.freshwaterlife.finance;

import java.util.*;

import java.lang.*;

import java.sql.*;

import java.text.*;

import javax.servlet.*;

public class InvoiceItemsVAT {

	double addedVat = 0.0 /*Double.parseDouble("0")*/;

	String invoiceId = null;

	String countSql = "select count(trans_id) as counted from transaction where trans_invoice_id = ";

	String vatSql = "select invoice_vat_total from invoice where invoice_id = ";

	double vatTotal = 0.0 /*Double.parseDouble("0")*/;

	double transCount = 0.0 /*Double.parseDouble("0")*/;

	HashMap errorList = null;

	Connection connection = null;

	Statement statement = null;

	ResultSet countResultSet = null;

	ResultSet vatResultSet = null;

	public InvoiceItemsVAT(){

		addedVat = 0.0 /*Double.parseDouble("0")*/;

		}	

	public void setInvoiceId(String invoiceId){

		this.invoiceId = invoiceId;

		}

	public String getInvoiceId(){

		return(this.invoiceId);

		}

	public void setAddedVat(double addedVat){

		this.addedVat = addedVat;

		}


	public double getAddedVat(){

		invoiceId = getInvoiceId();

		try{
			Class.forName("com.mysql.jdbc.Driver");

			connection = DriverManager.getConnection("jdbc:mysql://localhost/fwl_finance");

			statement = connection.createStatement();

			countResultSet = statement.executeQuery(countSql + invoiceId);

			}

		catch(Exception e){

			return(0.1);

			}

		try{

			Class.forName("com.mysql.jdbc.Driver");

			connection = DriverManager.getConnection("jdbc:mysql://localhost/fwl_finance");

			statement = connection.createStatement();

			vatResultSet = statement.executeQuery(vatSql + invoiceId);

			}

		catch(Exception e){

			return(0.2);

			}

		if(countResultSet == null){

			return(0.31);

			}

		if(vatResultSet == null){

			return(0.32);

			}

		try{

			while(countResultSet.next()){

				/*String transCountStr = countResultSet.getString("counted");

				transCount =  Double.parseDouble(transCountStr);*/

				transCount = countResultSet.getDouble("counted");

				}

			}

		catch(Exception e){
			
			return (0.33);

			}

		try{

			while(vatResultSet.next()){

				/*String vatTotalStr = vatResultSet.getString("invoice_vat_total");

				vatTotal = Double.parseDouble(vatTotalStr);*/

				vatTotal = vatResultSet.getDouble("invoice_vat_total");

				}

			}

		catch(Exception e){
			
			return (0.34);

			}

		try{

			addedVat = vatTotal / transCount;	

			}
	
		catch(Exception e){
			
			return (0.4);

			}

		/*
		Use banker's rounding to round the value to two decimal places.
		Multiply by 100 then use Math.rint to round to nearest integer, 
		then finally divide by 100 again.
		*/

		return(Math.rint(addedVat*100.0)/100.0);


		}

	public void setVatTotal(double vatTotal){

		this.vatTotal = vatTotal;

		}

	public double getVatTotal(){

		return(this.vatTotal);

		}

	public void setTransCount(double transCount){

		this.transCount = transCount;

		}

	public double getTransCount(){

		return(this.transCount);

		}

	}

