Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Duvida na hora de mostrar minha venda.

Estou com uma duvida aqui, no meu html tenho uma tabela, e nessa tabela que to com duvida, estou fazendo da seguinte regra, tenho minha venda, e primeiro de tudo tenho uma tabela e dentro dessa tabela tenho um botão para inserir a venda e abre um dialog com os campos necessarios para realizar minha venda, como na minha venda ela não leva a fk de produto e nem de formaDePagamento e nem parcelas, porque está assim.

@Entity
@SuppressWarnings("serial")
public class Venda implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    private Double valorTotal;
    @ManyToOne
    @JoinColumn(name = "funcionario_codigo")
    private Funcionario funcionario = new Funcionario();
    @ManyToOne
    @JoinColumn(name = "cliente_codigo")
    private Cliente cliente = new Cliente();
    @ManyToMany
    private List<Produto> produtos = new ArrayList<Produto>();
    private LocalDate data = LocalDate.now(); 
    @ManyToMany(fetch = FetchType.LAZY)
    private List<FormaDePagamento> formaDePagamentos = new ArrayList<FormaDePagamento>();
    @OneToMany(mappedBy = "venda", fetch = FetchType.LAZY)
    private List<Parcela> parcelas = new ArrayList<Parcela>();
    private Double valorRestante = 0.0D;
    private Double valorJuros = 0.0D;
@Entity
@SuppressWarnings("serial")
public class Venda_produto implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    @ManyToOne
    @JoinColumn(name = "Venda_codigo", nullable = false)
    private Venda venda = new Venda();
    @ManyToOne
    @JoinColumn(name = "produtos_codigo", nullable = false)
    private Produto produto = new Produto();
    private Integer quantidade;
@Entity
@SuppressWarnings("serial")
public class Venda_formadepagamento implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    @ManyToOne
    @JoinColumn(name = "venda_codigo")
    private Venda venda = new Venda();
    @ManyToOne
    @JoinColumn(name = "formaDePagamentos_codigo")
    private FormaDePagamento formaDePagamento = new FormaDePagamento();
    private Double valorDado = 0.0D;
    private Double somaValorDado = 0.0D;
@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    private LocalDate dataVencimento;
    private Double valorParcela = 0.0D;
    private Double valorPago;
    @Enumerated(EnumType.STRING)
    private Status status;
    private Integer diasParcela = 0;
    @ManyToOne
    @JoinColumn(name = "venda_codigo")
    private Venda venda = new Venda();
    private Integer quantidade = 0;

Então eu queria nessa tabela mostrar o vendaDoProduto, mais ai fica faltando as parcelas as formadepagamentos, no caso vocês usam a classe venda para fazer o select mesmo?

8 respostas

Tendo o objeto Venda_Produto, você tem referência à sua Venda e portanto à lista de FormaDePagamento.

 for (Venda_Produto vp : vendas_produtos) {
  Venda v = vp.getVenda();
  List<FormaDePagamento> fps = venda.getFormasDePagamento();
}

Traduza isso na sua view para utilizar a expression language adequada e sucesso!

=)

solução!

Opa valeu Marcos mais eu resolvi de um outro jeito, coloquei o select mesmo da venda, e depois fiz outro select passando o id da venda para pegar meus produtos e a forma de pagamento e as parcelas, viu tenho uma duvida, nunca ultilizei uma tela de venda, agora eu to com essa duvida, olha minha venda tá ligada na parcela, no pagamento no produto e mais coisas. Estou usando a regra de todas minhas telas aparecer primeiro minha tabela cadastro as os itens e depois ter um botão para inserir um item abrindo um dialog, na minha venda não muda em nada, tenho minha venda cadastrada, porem nela fiz um botão de editar na frente na tabela, depois agora tava fazendo um de excluir, mais pensa comigo, não é bom excluir a venda né? Só o botão de editar para pegar os campos e mostrar os itens já é o necessario? Está correto se eu deixar sem um botão de exclusao para venda?

Excluir uma venda parece um mau negócio mesmo, mas depende do seu caso e modelo para o projeto.

Se vendas puderem ser excluídas no seu negócio, é bom que tenha um botão sim, mas tome cuidado para que os itens ligados a ela (Venda_Produto, FormaDePagamento, etc) sejam removidos em cascata (quando adequado).

Já que resolveu o problema, estou marcando sua resposta como solução do tópico, ok? =)

Sim sim entendi, fala sua opniao pessoal, você acha que adianta ter um botão de excluir ou só um para editar os campos para mostrar os itens da venda?

Sim sim entendi, fala sua opniao pessoal, você acha que adianta ter um botão de excluir ou só um para editar os campos para mostrar os itens da venda?

Eu acho que remover dados como uma venda pode ser ruim. A informação ainda pode ser útil em relatórios de negócios e outros tipos de agregação, então em uma aplicação que eu desenvolvesse eu nunca permitiria a remoção desta informação específica, pois pode vir a ser útil no futuro, mesmo que não seja hoje.

Uma opção é criar um código (flag) que oculte as vendas e seus dados relacionados ao invés de excluí-la.

Obrigado a todos, vlw pela atenção!