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

Comparando o banco de dados do Bling com o PHP


Frank K Hosaka

Pergunta

Aqui eu tento comparar os arquivos csv obtidos na Bling e comparar com o que tem no MySQL:

arquivo Modelos / Config.php
<?php

// ...

function aspas($bling)
{
    return str_replace('"','',$bling);
}

function dec($value)
{
    if($value==null)
    {
        return null;
    }
    return number_format($value,2,',','.');
}

function deca($num) 
{   
    $value=str_replace(".","",$num); 
    return str_replace(",",".",$value);
}


arquivo Controles / ControleBling.php
<?php

class ControleBling extends Controle 
{
    private $Conexao;

    public function __construct()
    {
        $this->Conexao=new Conexao;
    }

    public function diferenca()
    {
        $this->Conexao->exec("truncate table tbprodbling");
        $arquivos=['produtos1.csv','produtos2.csv','produtos3.csv','produtos4.csv','produtos5.csv'];
        foreach($arquivos as $arquivo)
        {
            $dados=file($arquivo);
            foreach($dados as $linha)
            {
                $campos=explode(';',$linha);
                if(aspas($campos[1])!=="Código")
                {
                    $codprod=intval(trim(aspas($campos[1])));
                    $un=aspas($campos[3]);
                    $prod=aspas($campos[2]);
                    $custo=deca(aspas($campos[11]));
                    $codbar=trim(aspas($campos[19]));
                    $cf=deca(aspas($campos[4]));
                    $venda=deca(aspas($campos[6]));
                    $this->Conexao->insert("tbprodbling (codprod,un,prod,custo,codbar,cf,venda) 
                        values ($codprod,'$un','$prod',$custo,'$codbar','$cf',$venda)");
                }
            }
        }
        $produto=$this->Conexao->select("* from tbprod where loc <> 'a24'");
        $prodBling=$this->Conexao->select("* from tbprodbling");
        echo "O número de registros no MySQL é ".count($produto).".<br>";
        echo "O número de registros na Bling é ".count($prodBling).".<br>";
        echo "<table><th><th class=text-left>MySQL<th class=text-left>Bling";
        foreach($produto as $pr)
        {
            $codprod=$pr->codprod;
            $bling = array_filter($prodBling, function ($produto) use ($codprod) {
                return $produto->codprod == $codprod;});
            $a=current($bling);
            if(is_null($a))
            {
                echo "<tr><td>Codigo<td><td>Incluir";
            }
            else
            {
                $un=($pr->un==$a->un) ? 1 : 0;
                $prod=($pr->prod==$a->prod) ? 1 : 0;
                $custo=($pr->custo==$a->custo) ? 1 : 0;
                $codbar=($pr->codbar==$a->codbar) ? 1 : 0;
                $cf=($pr->cf==$a->cf) ? 1 : 0;
                $venda=($pr->venda==$a->venda) ? 1 : 0;
                if($un.$prod.$custo.$codbar.$cf.$venda !== '111111')
                {
                    echo "<tr><td>**<td>**<td>**";
                    echo "<tr><td>Código<td>$pr->codprod<td>$a->codprod";
                    if($pr->prod!==$a->prod)
                    {
                        echo "<tr><td>Descriçao<td>$pr->prod<td>$a->prod";
                    }
                    if($pr->custo!==$a->custo)
                    {
                        echo "<tr><td>Custo<td>$pr->custo<td>$a->custo";
                    }
                    if($pr->codbar!=$a->codbar)
                    {
                        echo "<tr><td>Código de Barra<td>$pr->codbar<td>$a->codbar";
                    }
                    if($pr->cf!==$a->cf)
                    {
                        echo "<tr><td>NCM<td>$pr->cf<td>$a->cf";
                    }
                    if($pr->venda!==$a->venda)
                    {
                        echo "<tr><td>Venda<td>$pr->venda<td>$a->venda";
                    }
                }
            }
        }

    }
}  

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

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,1k
    • Posts
      652k
×
×
  • Criar Novo...