Boa noite srs, tem o código abaixo e esta funcionando normal e carregando o Qrcode no HTML na soma.
Porém gostaria de alterar e que fosse da seguinte forma:
Se "totalServico" for menor que "totalProdutos" e diferente de zero então carregue o Qr Code com esse valor
Se não o valor for "0,00" carregue o valor "totalProdutos". Essa finalidade é para ter uma opção de desconto.
<?php
use Piggly\Pix\StaticPayload;
class Os_model extends CI_Model
{
public function getProdutos($id = null)
{
$this->db->select('produtos_os.*, produtos.*');
$this->db->from('produtos_os');
$this->db->join('produtos', 'produtos.idProdutos = produtos_os.produtos_id');
$this->db->where('os_id', $id);
return $this->db->get()->result();
}
public function getServicos($id = null)
{
$this->db->select('servicos_os.*, servicos.nome, servicos.preco as precoVenda');
$this->db->from('servicos_os');
$this->db->join('servicos', 'servicos.idServicos = servicos_os.servicos_id');
$this->db->where('os_id', $id);
return $this->db->get()->result();
}
public function valorTotalOS($id = null)
{
$totalServico = 0;
$totalProdutos = 0;
if ($servicos = $this->getServicos($id)) {
foreach ($servicos as $s) {
$totalServico = $totalServico + $s->preco;
}
}
if ($produtos = $this->getProdutos($id)) {
foreach ($produtos as $p) {
$totalProdutos = $totalProdutos + $p->subTotal;
}
}
return ['totalServico' => $totalServico, 'totalProdutos' => $totalProdutos];
}
public function getQrCode($id, $pixKey, $emitente)
{
if (empty($id) || empty($pixKey) || empty($emitente)) {
return;
}
$result = $this->valorTotalOS($id);
$amount = round(floatval($result['totalServico'] + $result['totalProdutos']), 2);
if ($amount <= 0) {
return;
}
$pix = (new StaticPayload())
->applyValidCharacters()
->applyUppercase()
->setPixKey(getPixKeyType($pixKey), $pixKey)
->setMerchantName($emitente->nome, true)
->setMerchantCity($emitente->cidade, true)
->setAmount($amount)
->setTid($id)
->setDescription(sprintf("%s OS %s", $emitente->nome, $id), true);
return $pix->getQRCode();
}
}