Ir para conteúdo
Devmunds

Como calcular pedágio por fração de 100 kg

Recommended Posts

Boa tarde pessoal, estou desenvolvendo um plugin para calculo de frete e preciso criar uma função que calcule o pedágio sobre cada fração de 100kg eu sei fazer isso utilizando if  e elseif porem isso torna o código muito extenso... alguém pode me ajudar com isso sem eu ter que ficar repetindo condição if elseif  ?

        //Esta função calcula o valor do pedadio fração de 100Kg
        public function dms_calc_pedagio(){
            $valorpedagio = 6.23;
            $dmskg = 101;
            if($dmskg <= 100){
              $getv = $valorpedagio * 1;
            }
            elseif ($dmskg > 100 && $dmskg <= 200) {
              $getv = $valorpedagio * 2;
            }
            elseif ($dmskg > 200 && $dmskg <= 300) {
              $getv = $valorpedagio * 3;
            }
            echo "Valor pedádio " . $getv;

        }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php

$valorpedagio = 6.23;

$dmskg = 101;

$peso = ceil($dmskg/100);

$getv = $valorpedagio * $peso;

echo "Valor pedádio " . $getv;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php

/**
 * Class calculateToll
 */
class calculateToll {

    /**
     * @var int
     */
    protected $fraction = 100;
    /**
     * @var float
     */
    protected $price = 6.23;
    /**
     * @var int
     */
    protected $fractionCalculate = 0;

    /**
     * calculateToll constructor.
     * @param int $fractionCalculate
     * @param float|null $priceDefault
     */
    public function __construct(int $fractionCalculate, float $priceDefault = null)
    {
        if(!is_null($priceDefault)){
            $this->setPrice($priceDefault);
        }
        $this->setFractionCalculate($fractionCalculate);
    }

    /**
     * @param float $price
     * @return $this
     */
    public function setPrice(float $price){
        $this->price = $price;
        return $this;
    }

    /**
     * @param float $fractionCalculate
     * @return $this
     */
    public function setFractionCalculate(float $fractionCalculate){
        $this->fractionCalculate = $fractionCalculate;
        return $this;
    }

    /**
     * @param int $fraction
     * @return $this
     */
    public function setFraction(int $fraction){
        $this->fraction = $fraction;
        return $this;
    }

    /**
     * @return string
     */
    public function display(){
        $weight = ceil($this->fractionCalculate/ $this->fraction);
        $calculateToll = $this->price * $weight;
        return $this->priceBR($calculateToll);
    }

    /**
     * @param $price
     * @return string
     */
    private function priceBR($price)
    {
        return number_format($price,2,'.',',');
    }

}

$calcular = new calculateToll(201);
echo "Valor do pedágio: ".$calcular->display();

Poderá mudar o valor de entrada por meio do método, o preço do pedágio e também a fração do calculo ao valor.

Deixei os seus valores via default nos atributos, podendo ser abstraído e trocado porque deixei eles protected.

Uma função privada para converter em formato BR o preço a ser mostrado via método display.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por k9studio
      Meus amigos,
      preciso de um help
      seguinte tenho um credito quero lançar em varias faturas eum foreach até o valor do credito
      tipo exemplo a baixo:
      $credito = 100;
      foreach($shows as $rows){
      fatura 1 Valor 20,00  -100 marca como pago
      fatura 2 Valor 20,00  -80  marca como pago
      fatura 3 Valor 20,00  -60  marca como pago
      fatura 4 Valor 20,00  -40  marca como pago
      fatura 5 Valor 30,00  -20  aqui deixa como não pago
      }
    • Por Jefferson andre
      Ola,
       
      Criei uma rotina que eh chamada dentro do html, esta rotina abre um banco de dados e pega os valores de algumas variaveis contendo caminhos para video aulas e entao fecha o banco de dados, ao retornar ao html eu quero usar estas variaveis para abrir videos que estarao sendo demonstrados em forma de links.
       
      A mesma situacao foi resolvida dentro do php com imagens para uma outra situacao mas nao consigo fazer isso para videos, se eu conseguir nao preciso puxar as variaveis para o html.
      <?php
      // fazendo uma conexão com o banco de dados
      include("conexao.php");
      //pesquisa
      $resultado = $arquivo->query("SELECT * FROM divulgacao WHERE ativo = 'S' AND tipo = 'IM'");
      if (false === $resultado) {
          echo mysqli_error();
      }
      $linha=mysqli_fetch_array($resultado);
      $caminho_divulgacao = $linha["caminho"];
       
      //echo "<font face='Arial'><span class='style14'>$caminho_divulgacao</span></font>";
      $exibir = "<img src=".$caminho_divulgacao." /><br />";
      echo $exibir ;
       
      mysqli_close($arquivo);
      ?>
       
      Alguma dica ?
    • Por ppanetony
      Olá!
      Estou tentando entender a real utilidade do design pattern builder.
      Tentei implementar, conforme a imagem e código abaixo.
      Não sei se está correta a implementação.
      Se não estiver, como eu deveria implementar?!
       

       
      class Product { public function Salvar() { echo 'Salvar'; } } interface Builder { public function buildPart(); } class ConcreteBuilder implements Builder { private $product; public function buildPart() { $this->product = new Product(); } public function getResult() : Product { return $this->product; } } class Director { public function construct(Builder $builder) { $builder->buildPart(); } } Para usar o padrão builder, conforme o código acima, eu faço o seguinte
       
      echo "\n\n"; $director = new Director(); $concreteBuilder = new ConcreteBuilder(); $director->construct($concreteBuilder); $product = $concreteBuilder->getResult(); $product->Salvar();  
      Mas, para que todo esses códigos, se eu poderia simplesmente ter o código abaixo que funcionara da mesma maneira?!
      $product22 = new Product(); $product22->Salvar(); Enfim... Qual utilidade real do Design Pattern Builder ?!?!
       
       
    • Por juliogabryell
      Boa tarde, utilizo um sistema de helpdesk open source  (GLPI), no windows server em um servidor local, queria saber se é possivel fazer um script onde mostrar os tecnicos online ou tecnicos logados, sistema bem parecido que tem tambem no outro sistema de helpdesk que é OcoMon, bem antigo, se alguém tiver uma base de como começar ou me auxiliar obrigado.
    • Por PatrickLutherdeck
      Pessoal to tentando instalar o FFMpeg no meu apache no Windows.
      //php.ini extension=php_ffmpeg.dll Coloquei o 'php_ffmpeg.dll' no 'php/axt'
      e os outros aquivos(exceto o de texto) no 'SysWOW64'
      Alguem sabe onde posso ter errado, dei PHPinfo e não imprimiu que carregou a extensao.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.