Ir para conteúdo
Fórum Script Brasil
  • 0

PHP 8.4: a função fputcsv( )


Frank K Hosaka

Pergunta

Ontem, eu pedi para a Hostinger usar o PHP 8.4, pois eu não vi nenhum problema aqui no Notebook.

Hoje eu aprendi que o Notebook é uma coisa, mas o Hostinger é coisa totalmente diferente.

Aqui no Notebook, o seguinte comando gera um arquivo CSV:

fputcsv($arquivo, $dados[0]);

Mas o PHP 8.4 do Hostinger é diferente, ele reclama que o comando está depreciado e que preciso colocar os parâmetros do $escape, assim:
 

fputcsv($arquivo, $dados[0],',','"','\\');

Eu consegui os parâmetros graças ao Copilot. O meu programa orçamento não gera e nem tem credencial para emitir uma NFC-e, o máximo que eu consegui fazer é montar um pedido nos moldes da Bling, depois vou na Bling, importo o pedido, e em seguida emito a NFC-e. O mais comum é o Cupom Fiscal, mas em São Paulo, você precisa do SAT para autenticar o cupom. Já o NFC-e é a antiga NF Série D, na versão eletrônica, e ele não precisa do SAT para ser autenticado e a Bling não tem uma versão para emitir o Cupom Fiscal.

A Bling tem rotina para gerar pedido, mas achei oportuno fazer um Orçamento em PHP para facilitar na hora de usar o tablet ou celular:
 

<?php
class Orcamento
 {
    function apagarBling($pedido) 
    {
        (new Conn)->update("tbpedido set bling=null where ped=$pedido");
        return $this->inicio($pedido);
    }

    function bling($pedido) 
    {
        $pBling=$_GET['pBling'];
        $verificar=(new Conn)->select("count(bling) as contagem from tbpedido where bling=$pBling")[0]->contagem;
        if($verificar)
        {
	        echo "<h1>Pedido Bling $pBling já foi criado. <a href=?Orcamento.inicio>Voltar</a></h1>";
  	        exit;
        }
        (new Conn)->update("tbpedido set bling=$pBling where ped=$pedido");
      	$contato="Consumidor Final";
        $itens=(new Conn)->select("* from tbhistped where ped=$pedido");
        $previa=(new Conn)->select("sum(subtotal) as soma from tbhistped
            where subtotal < 0 and ped=$pedido")[0]->soma;
        $desconto=$previa ? abs($previa) : 0;
        $total=(new Conn)->select("total from tbpedido where ped=$pedido")[0]->total;
      	$data=date('d/m/Y',strtotime((new Conn)->select("dia from tbpedido 
            where ped = $pedido")[0]->dia));
        $dados = array(
            array("Número pedido","Nome Comprador","Data","CPF/CNPJ Comprador","Endereço Comprador",
                  "Bairro Comprador","Número Comprador","Complemento Comprador","CEP Comprador","Cidade Comprador",
                  "UF Comprador","Telefone Comprador","Celular Comprador","E-mail Comprador","Produto",
                  "SKU","Un","Quantidade","Valor Unitário","Valor Total",
                  "Total Pedido","Valor Frete Pedido","Valor Desconto Pedido","Outras despesas","Nome Entrega",
                  "Endereço Entrega","Número Entrega","Complemento Entrega","Cidade Entrega","UF Entrega",
                  "CEP Entrega","Bairro Entrega","Transportadora","Serviço","Tipo Frete",
                  "Observações","Qtd Parcela","Data Prevista","Vendedor","Forma Pagamento",
                  "ID Forma Pagamento"));
        foreach($itens as $item) 
        {
            if($item->subtotal>0) 
            {
                $dados[]=array($pBling,$contato,$data,null,null,
                    null,null,null,null,null,
                    null,null,null,null,null,
                    $item->codprod,$item->un,$item->qt,$item->unitario,$item->subtotal,
                    $total,null,$desconto,null,null,
                    null,null,null,null,null,
                    null,null,null,null,null,
                    null,1,$data,null,1,
                    0);
            }
        }
        $arquivo = fopen("$pBling.csv", "w");
        fputcsv($arquivo, $dados[0],',','"','\\');
        foreach ($dados as $linha) {
            if ($linha != $dados[0]) 
            {
                fputcsv($arquivo, $linha,',','"','\\');
            }
        }
        fclose($arquivo);
      	if (file_exists("$pBling.csv")) 
        {
        	header('Content-Description: File Transfer');
    		header('Content-Type: application/octet-stream');
    		header('Content-Disposition: attachment; filename=' . basename("$pBling.csv"));
    		header('Content-Length: ' . filesize("$pBling.csv"));
    		readfile("$pBling.csv");
          	unlink("$pBling.csv");
		}
    }

    function confirmar() 
    {
        $ped=$_POST['ped'];
	    if(!empty($_POST['dinheiro'])) 
        {
		    $dinheiro=str_replace(',','.',$_POST['dinheiro']);
		    $troco=str_replace(',','.',$_POST['troco']);
        } else {
            $dinheiro=0;
            $troco=0;
        }
	    if(isset($_POST['cartao'])){$cartao=1;} else {$cartao=0;}
	    if(isset($_POST['pix'])){$pix=1;} else {$pix=0;}
	    if(!empty($_POST['parcial'])) {
	        if($dinheiro!==0) 
            {
                echo "<script>location.replace('orcamento.php')></script>";exit;
            }
	        $dinheiro=$_POST['parcial'];
            $troco=0;
        }
	    $horavenda=date('Y-m-d H:i');
	    (new Conn)->update("tbpedido set horavenda='$horavenda',dinheiro=$dinheiro,
		        troco=$troco,cartao=$cartao,pix=$pix where ped=$ped");
        return $this->inicio();
    }
    
    function corrigir($ped) 
    {
    	(new Conn)->update("tbpedido set horavenda=null,horavenda=null,dinheiro=null,
		    troco=null,cartao=0,pix=0 where ped=$ped");
        return $this->inicio();
    }
    
    function excluir($id)
    {
        $ped=$_GET['pedido'];
        (new Conn)->delete("tbhistped where id=$id");
        $novoTotal=(new Conn)->select("sum(subtotal) as soma from tbhistped where ped=$ped")[0]->soma;
        if($novoTotal==null) 
        {
            $novoTotal='null';
        }
        (new Conn)->update("tbpedido set total=$novoTotal where ped=$ped");
        return $this->inicio($ped);
    }

    function historicoOrc($hist) 
    {
        $where="";
        if($hist) 
        {
            $ped=$_SESSION['referencia']+$hist;
            $where="where ped <= $ped";
        }
        $pedidos=(new Conn)->select("* from tbpedido left join tbpessoa on 
            tbpedido.codp = tbpessoa.codp $where order by ped desc limit 20");
        $_SESSION['referencia']=$pedidos[0]->ped;
        return view('orcamentoHist',['pedidos'=>$pedidos]);
    }


    function inicio($pedido = null) 
    {
        $prod=(new Conn)->select("* from tbprod order by prod");
        $maquina=strpos($_SERVER['HTTP_USER_AGENT'],"Windows");
        $hoje=date('Y-m-d');
        $where="";
        if($pedido) 
        {
            $where="where ped=$pedido";
            $vr['codprod']=(isset($_SESSION['codprod'])) ? $_SESSION['codprod'] : null;
            if($vr['codprod'])
            {
                $codprod=$vr['codprod'];
                $produto=(new Conn)->select("* from tbprod where codprod=$codprod")[0];
                $vr['prod']=$produto->prod;
                $vr['un']=$produto->un;
                $custo=$produto->custo;
                $margem=$produto->marg;
                $vr['preço']=pvenda($custo,$margem);
            } else {
                 unset($_SESSION['codprod']);
                $vr=['ped'=>'','diaped'=>$hoje,'totalped'=>'','codp'=>'','pessoa'=>'',
                'end'=>'','cnpj'=>'','tel'=>'','nota'=>'','codprod'=>'','un'=>'',
                'prod'=>null,'preço'=>'','horavenda'=>'','bling'=>''];
            }
        }
        $ped=(new Conn)->select("* from tbpedido $where order by ped desc")[0];
        $vr['ped']=$ped->ped;
        $_SESSION['ped']=$ped->ped;
        $vr['diaped']=$ped->dia;
        $vr['horavenda']=$ped->horavenda;
        $vendido=($ped->horavenda) ? true : false;
        $vr['totalped']=$ped->total;
        $vr['bling']=$ped->bling;
        $vr['codp']=$ped->codp;
        if(isset($_SESSION['codp']))
        {
            $vr['codp']=$_SESSION['codp'];
            unset($_SESSION['codp']);
        }
        if($vr['codp']) {
            $pessoa=(new Conn)->select("* from tbpessoa where codp=". $vr['codp'])[0];
            $vr['pessoa']=$pessoa->pessoa;
            $vr['end']=$pessoa->end;
            $vr['cnpj']=$pessoa->cnpj;
            $vr['tel']=$pessoa->tel;
            $vr['nota']=$pessoa->nota;
        }
        $histped=(new Conn)->select("tbhistped.id,tbhistped.ped, tbhistped.codprod, 
            tbhistped.qt as qt, tbhistped.unitario as unitario, tbhistped.subtotal,
            tbprod.prod as prod, tbprod.un as un 
            from tbhistped inner join tbprod on tbhistped.codprod = tbprod.codprod
            and tbhistped.ped = $ped->ped order by tbhistped.id");
        return view('orcamentoView',['vr'=>$vr,'histped'=>$histped,'prod'=>$prod,
            'maquina'=>$maquina,'vendido'=>$vendido]);
    }

    function menu()
    {
        unset($_SESSION['codprod']);
        unset($_SESSION['codp']);
        unset($_SESSION['pessoa']);
        return $this->inicio();
    }

    function novo() {
        $pedido=(new Conn)->select("* from tbpedido order by ped desc")[0];
        $ped=$pedido->ped;
        $total=$pedido->total;
        if($total!==null)
        {
            $ped++;
            $dia=date('Y-m-d');
            (new Conn)->insert("tbpedido (dia,ped) values ('$dia',$ped)");
        }
        return header("location:?Orcamento.inicio.$ped");
    }

    function pedido($pedido) {
        $_SESSION['ped']=$pedido;
        return $this->inicio($pedido);
    }

    function pessoa($pedido) 
    {
        $_SESSION['end']="?Orcamento.pessoaSelecionada.$pedido";
        if(isset($_GET['codp'])){
            $codp=$_GET['codp'];
            return header("location:?pessoa.inicio.$codp");
        }
        return header("location:?Pessoa.inicio");
    }

    function pessoaSelecionada($pedido)
    {
        $codp=$_SESSION['codp'];
        (new Conn)->update("tbpedido set codp = $codp where ped=$pedido");
        return $this->inicio($pedido);
    }

    function produto() 
    {   
        $pedido=$_SESSION['ped'];
        $_SESSION['end']="?Orcamento.inicio.$pedido";
        $produto=str_replace(" ","%",$_POST['produto']);
        $tamanho=strlen($produto);
        $posicao=strpos($produto,":");
        if($posicao==0) 
        {
            if($produto!=="")
            {
                $_SESSION['criterio']="where prod like '%$produto%' order by prod";
            }
            return header("location:?Produto.inicio");
        }
        $_SESSION['codprod']=substr($produto,$posicao+1,$tamanho-$posicao);
        return $this->inicio($_SESSION['ped']);
    }

    function qt() 
    {
        $qt=deca($_POST['qt']);
        $codprod=$_SESSION['codprod'];
        unset($_SESSION['codprod']);
        if($qt==0 || $qt=='')
        {
            return $this->inicio();
        }
        $produto=(new Conn)->select("* from tbprod where codprod=$codprod")[0];
        $ped=$_SESSION['ped'];
        $un=$produto->un;
        $custo=$produto->custo;
        $margem=$produto->marg;
        $unitario=pvenda($custo,$margem);
        $subtotal=$qt*$unitario;
        (new Conn)->insert("tbhistped (ped,codprod,un,unitario,subtotal,qt)
            values ($ped,$codprod,'$un',$unitario,$subtotal,$qt)");
        $novoTotal=(new Conn)->select("sum(subtotal) as soma from tbhistped where ped=$ped")[0]->soma;
        (new Conn)->update("tbpedido set total=$novoTotal where ped=$ped");
        return $this->inicio($ped);
    }
}

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...