public void Calcular(GDASession sessao, IContainerCalculo container, IProdutoCalculo produto) { produto.InicializarParaCalculo(sessao, container); decimal valorTabela = produto.DadosProduto.ValorTabela(false); decimal valorCliente = produto.DadosProduto.ValorTabela(true); int tipoCalculoProduto = (int)produto.DadosProduto.DadosGrupoSubgrupo.TipoCalculo(); if (valorTabela < valorCliente) { produto.ValorDescontoCliente = 0; produto.ValorAcrescimoCliente = CalculaValorTotal(sessao, produto, tipoCalculoProduto, valorCliente - valorTabela); } else if (valorTabela > valorCliente) { produto.ValorAcrescimoCliente = 0; produto.ValorDescontoCliente = CalculaValorTotal(sessao, produto, tipoCalculoProduto, valorTabela - valorCliente); } else { produto.ValorAcrescimoCliente = 0; produto.ValorDescontoCliente = 0; } }
public decimal?CalcularValor(GDASession sessao, IContainerCalculo container, IProdutoCalculo produto, decimal baseCalculo) { produto.InicializarParaCalculo(sessao, container); var compra = produto is ProdutosCompra; var nf = produto is ProdutosNf; var alturaBenef = this.NormalizarAlturaLarguraBeneficiamento( produto.AlturaBenef, container, (int)produto.DadosProduto.DadosGrupoSubgrupo.TipoCalculo(nf, compra)); var larguraBenef = this.NormalizarAlturaLarguraBeneficiamento( produto.LarguraBenef, container, (int)produto.DadosProduto.DadosGrupoSubgrupo.TipoCalculo(nf, compra)); return(CalcularValor( sessao, produto, baseCalculo, compra, nf, alturaBenef, larguraBenef )); }
public void Calcular(GDASession sessao, IContainerCalculo container, IProdutoCalculo produto) { produto.InicializarParaCalculo(sessao, container); produto.TotalBruto = produto.Total - DescontoValorBruto(produto); CalcularValorUnitarioBruto(sessao, produto); }
/// <summary> /// Método utilizado para calcular o valor total e o total de m² de um produto. /// </summary> public void Calcular(GDASession sessao, IContainerCalculo container, IProdutoCalculo produto, ArredondarAluminio arredondarAluminio, bool calcularMultiploDe5, bool nf, bool compra, int numeroBeneficiamentos, bool usarChapaVidro = true, bool valorBruto = false, bool primeiroCalculo = false) { produto.InicializarParaCalculo(sessao, container); var alturaBeneficiamento = this.NormalizarAlturaLarguraBeneficiamento( produto.AlturaBenef, container, (int)produto.DadosProduto.DadosGrupoSubgrupo.TipoCalculo(nf, compra)); var larguraBeneficiamento = this.NormalizarAlturaLarguraBeneficiamento( produto.LarguraBenef, container, (int)produto.DadosProduto.DadosGrupoSubgrupo.TipoCalculo(nf, compra)); var estrategia = ValorTotalStrategyFactory.Instance.RecuperaEstrategia(produto, nf, compra); var acrescimo = 0.00M; try { DescontoAcrescimo.Instance.RemoverDescontoQtde(sessao, container, produto); acrescimo = produto.ValorAcrescimo; produto.ValorAcrescimo = 0.00M; estrategia.Calcular( sessao, produto, arredondarAluminio, calcularMultiploDe5, compra, nf, numeroBeneficiamentos, alturaBeneficiamento, larguraBeneficiamento, usarChapaVidro, valorBruto ); } finally { produto.ValorAcrescimo = acrescimo; DescontoAcrescimo.Instance.AplicarDescontoQtde(sessao, container, produto); } this.IncluirDescontoPorQuantidade(produto); }
private static void CalculaValor(IContainerCalculo container, IProdutoCalculo produto) { var calcularMultiploDe5 = true; if (container is Pedido) { produto.InicializarParaCalculo(null, container); calcularMultiploDe5 = produto.DadosProduto.DadosGrupoSubgrupo.TipoCalculo() == TipoCalculoGrupoProd.M2 && !container.IsPedidoProducaoCorte; } Helper.Calculos.ValorTotal.Instance.Calcular( null, container, produto, Helper.Calculos.Estrategia.ValorTotal.Enum.ArredondarAluminio.ArredondarApenasCalculo, calcularMultiploDe5, produto.Beneficiamentos.CountAreaMinima); }
public float CalcularM2Calculo(GDASession sessao, IContainerCalculo container, IProdutoCalculo produto, bool usarChapa, bool calcularMultiploDe5, int numeroBeneficiamentos, int qtdeAmbiente = 1, int?larguraUsar = null) { produto.InicializarParaCalculo(sessao, container); bool possuiChapaVidro = usarChapa && produto.IdProduto > 0 && produto.DadosProduto.DadosChapaVidro.ProdutoPossuiChapaVidro(); int altura = (int)produto.Altura; int largura = larguraUsar ?? produto.Largura; AjustarDadosChapaVidro(produto, ref possuiChapaVidro, ref altura, ref largura); float m2 = Calcular(produto, calcularMultiploDe5, altura, largura, produto.Qtde); m2 = Math.Max(m2, CalcularAreaMinimaProduto(produto, numeroBeneficiamentos, produto.Qtde)); /* Chamado 77857. */ m2 *= qtdeAmbiente; return(AplicarM2MinimoChapaVidro(produto, possuiChapaVidro, m2)); }
public decimal?RecalcularValor(GDASession sessao, IContainerCalculo container, IProdutoCalculo produto, bool valorBruto = false) { produto.InicializarParaCalculo(sessao, container); if (produto.Container?.IdObra > 0 && PedidoConfig.DadosPedido.UsarControleNovoObra) { return(null); } var compra = produto is ProdutosCompra; var nf = produto is ProdutosNf; var alturaBenef = this.NormalizarAlturaLarguraBeneficiamento( produto.AlturaBenef, container, (int)produto.DadosProduto.DadosGrupoSubgrupo.TipoCalculo(nf, compra)); var larguraBenef = this.NormalizarAlturaLarguraBeneficiamento( produto.LarguraBenef, container, (int)produto.DadosProduto.DadosGrupoSubgrupo.TipoCalculo(nf, compra)); AtualizaValorUnitario(produto, valorBruto); decimal total = CalcularTotal(sessao, produto, valorBruto); total = IncluirDescontoAcrescimoComissaoNoTotal(sessao, produto, valorBruto, total); return(CalcularValor( sessao, produto, total, compra, nf, alturaBenef, larguraBenef )); }
/// <summary> /// Cálculo de arredondamento de m². /// </summary> public float Calcular(GDASession sessao, IContainerCalculo container, IProdutoCalculo produto, bool calcularMultiploDe5) { produto.InicializarParaCalculo(sessao, container); return(Calcular(produto, calcularMultiploDe5, (int)produto.Altura, produto.Largura, produto.Qtde)); }
protected void AtualizaDadosProdutosCalculo(IProdutoCalculo produtoCalculo, GDASession sessao, IContainerCalculo container) { produtoCalculo.InicializarParaCalculo(sessao, container); }