Ajuda - classe Nota Fiscal

Olá Pessoal. :shock:

Sou novo no forum e procuro ajuda desta comunidade…

Tenho uma aplicação onde estou tentando desenvolver, estou apredendo e se falar alguma bobeira por favor me descupem.

Tenho uma classe Nota Fiscal, onde estou com dificuldade em montar ela… Devido a orientação do professor criei uma classe ItemDaNota onde ela vai utilizar os dados da classe Produto para compor o item, neste itens será de 1 a 10 onde ao incluir o item ele vai fazer um calculo de quantidade * valor unitário para dar o calor total do item… depois que todos os itens tiverem calculado a classe nota fiscal vai somar todos os totais de itens para ter o resultado total da nota…

Segue abaixo o código da classe NotaFiscal:
package lojaSGLC;

import java.util.Date;
import java.util.List;

public class NotaFiscal implements Persistivel {

private Integer idNotaFiscal;

private Date data;

private Float valorTotal;

private Fornecedor fornecedor;

private List<ItemDaNota> itensDaNota;

public Integer getIdNotaFiscal() {
	return idNotaFiscal;
}

/**
 * Este metodo inclui o item da nota na lista de itens (
 * <code>itensDaNota</code>) e recalcula o valor total da nota. Atribui um 
 * número de item ao item incluido (sequencial). 
     *
 * @param item
 */
public void addItem(ItemDaNota item) {
	
}

public void setIdNotaFiscal(Integer idNotaFiscal) {
	this.idNotaFiscal = idNotaFiscal;
}

public Date getData() {
	return data;
}

public void setData(Date data) {
	this.data = data;
}

public Float getValorTotal() {
	return valorTotal;
}

public void setValorTotal(Float valorTotal) {
	this.valorTotal = valorTotal;
}

public Fornecedor getFornecedor() {
	return fornecedor;
}

public void setFornecedor(Fornecedor fornecedor) {
	this.fornecedor = fornecedor;
}

public List<ItemDaNota> getItensDaNota() {
	return itensDaNota;
}

public void setItensDaNota(List<ItemDaNota> itensDaNota) {
	this.itensDaNota = itensDaNota;
}

/**
 *@see lojaSGLC.Persistivel#incluir()
 */
public void incluir() {

}

/**
 *@see lojaSGLC.Persistivel#alterar()
 */
public void alterar() {

}

/**
 *@see lojaSGLC.Persistivel#excluir()
 */
public void excluir() {

}

/**
 *@see lojaSGLC.Persistivel#cosultar()
 */
public void cosultar() {

}

/**
 *@see lojaSGLC.Persistivel#calculoValorDoItem()
 */
public void calculoValorDoItem() {

}

}

O que vc esta querendo?? que a gente implemente os metodos para vc?

obs: utilizas as tags [code] para postar o codigo aqui no forum

flw

o que vc precisa fazer é … na classe ItemDaNota … vc precisa ter 2 métodos… getPrecoUnitario() … getQuantidade() …
seria bom implementar tb um método @Transiente getPrecoTotal() … retornaria getPrecoUnitario() * getQuantidade() …

com seu calculo fica bem facil, para o valor total…

sempre que houver um setItensDaNota(List<ItemDaNota> itensDaNota)
vc faz um FOR pelos itens, e calcula o valor total, e ja seta ele … ai nesse caso vc tem q tomar cuidado pra naum fazer… getItensDaNota().add(ItemDaNotaFilsta) pois nesse caso o valor total não sera recalculado…

vc pode trazer essa responsabilidade para dentro da sua classe… colocando o addItemDaNota(ItemDaNota item) e sempre
que for adcionado vc adciona o valor ao calculo… e coloca o removeItemDaNota(ItemDaNota item) e sempre que for removido
vc subtrai o valor do valor total…

ou pode sempre que for invocado… getValorTotal() … fazer um for pela lista, e calcular esse valor… ^^

Olá.
Quero agradecer Lavieri, muito obrigado pela ajuda.
Ficou parado o meu projeto de conclusão de curso pois sofri um acidente de moto e escapei da morte mas graças a Deus estou vivo, por esse motivo não agradeci antes e ficou parado o meu post aqui no forum.
Agora vou aos poucos dar continuidade neste projeto, sem ele eu não vou concluir meu curso básico em java, fora que estou perdendo aulas com o professor, mas fazer o que a vida tem que continuar.
Vamos lá:

O que é @Transiente?

Olá Pessoal.
Devido a minha falta de prática com o assunto eu ainda estou com dificuldade para implementar as minhas classes, vou explicar a parte do meu projeto para que alguém me ajude.

Eu tenho umas classes chamadas Fornecedor, Produto, ItemDaNota e NotaFiscal. Preciso implementar da seguinte forma, a classe “Produtos” terá que cadastrar os mesmos antes de mais nada, a classe “Fornecedor” também deve gerar seu cadastro, ao iniciar uma entrada pela classe “NotaFiscal” ela vai necessitar das informações do OBJETO FORNECEDOR e usar a classe “ItemDaNota” que vai necessitar dos OBJETOS PRODUTO para compor os itens da nota, só que a classe “ItemDaNota” deve ter um cálculo simples de qtd * valor unit para gerar um valor total por item e logo na classe “NotaFical” terá um métodos para somar todos esses totais por item para compor o total da nota… O meu problema é que não consigo fazer isso por questão de ter pouca prática e me atrapalha muito na hora de pensar no desenvolvimento e imaginar a tela do programa ou a tabela do banco de dados.
Parece ser muito simples tudo isso para quem já conhece do assunto, mas para quem nunca fez, como meu caso, fica uma missão quase impossível.

Por favor me ajudem parceiros… :expressionless:
Segue as classes abaixo para quem puder ajudar.

Fornecedor

package lojaSGLC;

public class Fornecedor extends Pessoa {
	private Integer idFornecedor;
	private Integer cnpj;
	
	public Integer getIdFornecedor() {
		return idFornecedor;
	}
	public void setIdFornecedor(Integer idFornecedor) {
		this.idFornecedor = idFornecedor;
	}
	public void setCnpj(Integer cnpj) {	 
	}
	public Integer getCnpj() {
		return cnpj;
	}
}

Produto

package lojaSGLC;

import java.util.ArrayList;

public class Produto implements Persistivel { 
	private Integer idProduto;
	private String nome;
	private String descricao;
	private Integer quantidade;
	private ArrayList cor;
	private Float valorCustoMedio;
	private Float valorUltimaEntrada;
	private ItemDaNota[] itemDaNota;
	private ItemOrdemProducao[] itemOrdemProducao;
	 
	public void custoMedio() {
	}
	public void setIdProduto(Integer idProduto) {
	}
	public Integer getIdProduto() {
		return null;
	} 
	public void setNome(String nome) {
	}
	public String getNome() {
		return null;
	}
	public void setDescricao(String descricao) {
	}
	public String getDescricao() {
		return null;
	}
	public void setQuantidade(Integer quantidade) {
	}
	public Integer getQuantidade() {
		return null;
	}
	public void setCor(ArrayList cor) {
	}
	public ArrayList getCor() {
		return null;
	}
	public void setValorCustoMedio(Float valorCustoMedio) {
	}
	public Float getValorCustoMedio() {
		return null;
	}
	public void setValorUltimaEntrada(Float valorUltimaEntrada) {
	}
	public Float getValorUltimaEntrada() {
		return null;
	} 
	/**
	 *@see lojaSGLC.Persistivel#incluir()
	 */
	public void incluir() {
	}
	/**
	 *@see lojaSGLC.Persistivel#alterar()
	 */
	public void alterar() {
	}
	/**
	 *@see lojaSGLC.Persistivel#excluir()
	 */
	public void excluir() {
	}
	/**
	 *@see lojaSGLC.Persistivel#cosultar()
	 */
	public void cosultar() {
	}
	/**
	 *@see lojaSGLC.Persistivel#calculoValorDoItem()
	 */
	public void calculoValorDoItem() {
	}
}

ItemDaNota

package lojaSGLC;

public class ItemDaNota {
 	private Integer numItem;
	private Integer quantidade;
	private Float precoUnitario;
//	private NotaFiscal notaFiscal;	 
	private Produto produto;
	private Float valorTotalDoItem;
	
	public Integer getNumItem() {
		return numItem;
	}
	public void setNumItem(Integer numItem) {
		this.numItem = numItem;
	}
	public Integer getQuantidade() {
		return quantidade;
	}
	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}
	public Float getPrecoUnitario() {
		return precoUnitario;
	}
	public void setPrecoUnitario(Float precoUnitario) {
		this.precoUnitario = precoUnitario;
	}
	public Float getValorTotalDoItem() {
		return precoUnitario * quantidade;
	}
	public void setValorTotalDoItem(Float valorTotalDoItem) {
		this.valorTotalDoItem = valorTotalDoItem;
	}
////	public NotaFiscal getNotaFiscal() {
//		return notaFiscal;
//	}
//
//	public void setNotaFiscal(NotaFiscal notaFiscal) {
//		this.notaFiscal = notaFiscal;
//	}
	public Produto getProduto() {
		return produto;
	}
	public void setProduto(Produto produto) {
		this.produto = produto;
	}
}

NotaFiscal

package lojaSGLC;

import java.util.Date;
import java.util.List;

public class NotaFiscal implements Persistivel {
	private Integer idNotaFiscal;
	private Date data;
	private Float valorTotal;
	private Fornecedor fornecedor;
	private List<ItemDaNota> itensDaNota;

	public Integer getIdNotaFiscal() {
		return idNotaFiscal;
	}
	/**
	 * Este metodo inclui o item da nota na lista de itens (
	 * <code>itensDaNota</code>) e recalcula o valor total da nota. Atribui um 
	 * número de item ao item incluido (sequencial). 
	 * 
	 * 
	 * @param item
	 */
	public void addItem(ItemDaNota item) {	
	}
	public void setIdNotaFiscal(Integer idNotaFiscal) {
		this.idNotaFiscal = idNotaFiscal;
	}
	public Date getData() {
		return data;
	}
	public void setData(Date data) {
		this.data = data;
	}
	public Float getValorTotal() {
		return valorTotal;
	}
	public void setValorTotal(Float valorTotal) {
		this.valorTotal = valorTotal;
	}
	public Fornecedor getFornecedor() {
		return fornecedor;
	}
	public void setFornecedor(Fornecedor fornecedor) {
		this.fornecedor = fornecedor;
	}
	public List<ItemDaNota> getItensDaNota() {
		return itensDaNota;
	}
	public void setItensDaNota(List<ItemDaNota> itensDaNota) {
		this.itensDaNota = itensDaNota;
	}
	/**
	 *@see lojaSGLC.Persistivel#incluir()
	 */
	public void incluir() {
	}
	/**
	 *@see lojaSGLC.Persistivel#alterar()
	 */
	public void alterar() {
	}
	/**
	 *@see lojaSGLC.Persistivel#excluir()
	 */
	public void excluir() {
	}
	/**
	 *@see lojaSGLC.Persistivel#cosultar()
	 */
	public void cosultar() {
	}
	/**
	 *@see lojaSGLC.Persistivel#calculoValorDoItem()
	 */
	public void calculoValorDoItem() {
	}
}

Um abraço.
NobregaDavi

Olá Pessoal
Obrigado novamente Lavieri.

Coloquei o calculo simples no setValorTotalDoItem dentro da classe ItemDaNota, está certo? Eu estou em dúvidas onde colocar os códigos.

public void setValorTotalDoItem(Float v) {
valorTotalDoItem = v;
v = quantidade * precoUnitario;

package lojaSGLC;
/**
 * @author  Davi
 */
 class ItemDaNota {
	private Integer numItem;
	private Integer quantidade;
	private Float precoUnitario;
	private Float valorTotalDoItem;
	
	public Integer getNumItem() {
		return numItem;
	}
	public void setNumItem(Integer numItem) {
		this.numItem = numItem;
	}
	public Integer getQuantidade() {
		return quantidade;
	}
	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}
	public Float getPrecoUnitario() {
		return precoUnitario;
	}
	public void setPrecoUnitario(Float precoUnitario) {
		this.precoUnitario = precoUnitario;
	}
	/**
	 * @return
	 * @uml.property  name="valorTotalDoItem"
	 */
	public Float getValorTotalDoItem() {
		return valorTotalDoItem;
	}
	/**
	 *  Calcula o valor total de cada item usando o atributo "quantidade" * "precoUnitario". 
	 * @param valorTotalDoItem
	 * @uml.property  name="valorTotalDoItem"
	 */
	public void setValorTotalDoItem(Float v) {
		valorTotalDoItem = v;
		v = quantidade * precoUnitario;
//		this.valorTotalDoItem = valorTotalDoItem;
	}
}

Onde devo colocar o FOR, dentro da classe NotaFiscal? Assim, FOR cada “numItem” some todos os “ValorTotalDoItem” e quando “ValorTotalDoItem” for NULL finaliza a soma e coloque o resultado em “valorTotal” (da Nota Fiscal).
Vocês podem me fornecer um exemplo de código deste FOR?

Estou pensando em como vou fazer na classe NotaFiscal para que o “numItem” da classe ItemDaNota atribua valores numéricos sequenciais a partir de 1 a 30, mas não é só lançar esta sequencia, se caso acabar os itens da nota tem que parar a sequencia na quantidade exata, eu me imagino na tela do programa, iniciei a Nota Fiscal para fazer um lançamento e cada Nota Fiscal vai ter 1 item, 3 itens ou 10 itens.

Olá.

Fiz uma classe testdrive p/ a NotaFiscal e ficou assim o código:

package lojaSGLC;
class NotaFiscalTestDrive {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		NotaFiscal nf = new NotaFiscal();
		nf.setIdNotaFiscal(454545);
//		nf.setData(30/03/2009);
//		nf.setValorTotal(valorTotal)
	
		ItemDaNota[] itemNF = new ItemDaNota[20];
		
		int y = 1;
		int x = 0;
		while ( x < 20){
			itemNF[x] = new ItemDaNota();
			itemNF[x].setNumItem(y);
			itemNF[x].setQuantidade(15);
			itemNF[x].setPrecoUnitario(10.50);
			itemNF[x].setValorTotalDoItem();
			y = y + 1;
			x = x + 1;
	}
		if (x > 0){
			
		}
	}

}

Ele consegue atribuir o valor sequencial p/ o item e faz o cálculo básico chamando o método setValorTotalDoItem, o que vocês acham?
Agora preciso da dica de vocês de como fazer o calculo para somar todos setValorTotalDoItem e atribuir essa soma para setValorTotal (da classe NotaFiscal).

Olá.

Será que alguém pode indicar pelo menos um bom local para pesquisar?

Obrigado.
nobregadavi