package br.com.ec.domain.dto;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Produto;
public class RankingProdutoPorLojaDTO
implements Comparable<RankingProdutoPorLojaDTO
> {
private Produto produto
;
private Loja loja
;
private Long quantidadeVendas
;
private Long quantidadeEstoque
;
private Integer quantidadeMinimaTransferir =
1;
private Long quantidadeSugeridaParaTransferir
;
public RankingProdutoPorLojaDTO
() {}
public RankingProdutoPorLojaDTO
(Loja loja,
Long quantidadeVendas,
Long quantidadeEstoque
) {
this.
loja = loja
;
this.
quantidadeVendas = quantidadeVendas
;
this.
quantidadeEstoque = quantidadeEstoque
;
}
public Produto getProduto
() {
return produto
;
}
public void setProduto
(Produto produto
) {
this.
produto = produto
;
}
public Loja getLoja
() {
return loja
;
}
public void setLoja
(Loja loja
) {
this.
loja = loja
;
}
public Long getQuantidadeVendas
() {
return quantidadeVendas
;
}
public void setQuantidadeVendas
(Long quantidadeVendas
) {
this.
quantidadeVendas = quantidadeVendas
;
}
public Long getQuantidadeEstoque
() {
return quantidadeEstoque
;
}
public void setQuantidadeEstoque
(Long quantidadeEstoque
) {
this.
quantidadeEstoque = quantidadeEstoque
;
}
public Integer getQuantidadeMinimaTransferir
() {
return quantidadeMinimaTransferir
;
}
public void setQuantidadeMinimaTransferir
(Integer quantidadeMinimaTransferir
) {
this.
quantidadeMinimaTransferir = quantidadeMinimaTransferir
;
}
public Long getQuantidadeSugeridaParaTransferir
() {
return quantidadeSugeridaParaTransferir
;
}
public void setQuantidadeSugeridaParaTransferir
(Long quantidadeSugeridaParaTransferir
) {
this.
quantidadeSugeridaParaTransferir = quantidadeSugeridaParaTransferir
;
}
public Integer quantidadeParaComprar
(Integer quantidadeVendas,
Integer quantidadeEstoque
) {
return (getQuantidadeMinimaTransferir
() * quantidadeVendas
) - quantidadeEstoque
;
}
public Integer quantidadeParaComprar
(Integer quantidadeParaComprar,
Integer quantidadeVendas,
Integer quantidadeEstoque
) {
return VerificadorUtil.
naoEstaNulo(quantidadeParaComprar
)?
(quantidadeParaComprar
* quantidadeVendas
) - quantidadeEstoque : quantidadeParaComprar
(quantidadeVendas, quantidadeEstoque
);
}
public Long quantidadeParaTransferir
() {
if (VerificadorUtil.
estaNulo(quantidadeVendas
)) {
quantidadeVendas =
new Long(0);
}
if (VerificadorUtil.
estaNulo(quantidadeEstoque
)) {
quantidadeEstoque =
new Long(0);
}
return (quantidadeEstoque - quantidadeVendas
) * getQuantidadeMinimaTransferir
() * -
1;
}
@
Override
public int compareTo
(RankingProdutoPorLojaDTO rankingProdutoDTO
) {
return this.
getLoja().
getDescricao().
compareTo(rankingProdutoDTO.
getLoja().
getDescricao());
}
}