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

Classe: diferença entre tabelas


Frank K Hosaka

Pergunta

A Bling fornece o cadastro de produtos através de arquivos .csv. Eu pego os arquivos, monto uma tabela de produtos da Bling, comparo com a minha tabela no MySQL, em seguida uso o marca texto na última célula (não consegui marcar toda linha) para lembrar o que eu já consertei no cadastro de produtos hospedado na Bling:

<?php // bling.php

class Bling 
{
    function diferenca()
    {
        return view('blingDiferenca');
    }

    function diferenca2()
    {
        (new Conn)->exec("truncate table tbprodbling");
        $arquivos=$_FILES['arquivos'];
        foreach($arquivos['tmp_name'] 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]));
                    (new Conn)->insert("tbprodbling (codprod,un,prod,custo,codbar,cf,venda) 
                        values ($codprod,'$un','$prod',$custo,'$codbar','$cf',$venda)");
                }
            }
        }
        $produto=(new Conn)->select("* from tbprod where loc <> 'a24'");
        $contaProduto=count($produto);
        $prodBling=(new Conn)->select("* from tbprodbling");
        $contaProdBling=count($prodBling);
        $dif=[];
        foreach($produto as $key=>$pr) 
        {
            $codprod=$pr->codprod;
            $previa=(new Conn)->select("* from tbprodbling 
                where codprod=$codprod");
            if(count($previa)==0) 
            {
                $dif[$key][]=['Codigo'=>$codprod];
                $dif[$key][]=['Incluir'=>$codprod,'Incluir2'=>'Incluir'];

            } else {
                $a=json_decode(json_encode($previa))[0];
                $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') 
                {
                    $dif[$key][]=['Codigo'=>$pr->codprod,'Codigo2'=>$a->codprod];
                    if($pr->prod!==$a->prod) 
                    {
                        $dif[$key][]=['Descricao'=>$pr->prod,'Descricao2'=>$a->prod];
                    }
                    if($pr->custo!==$a->custo) 
                    {
                        $dif[$key][]=['Custo'=>$pr->custo,'Custo2'=>$a->custo];
                    }
                    if($pr->codbar!=$a->codbar) 
                    {
                        $dif[$key][]=['Codigo de Barra'=>$pr->codbar,'Codigo de Barra2'=>$a->codbar];
                    }
                    if($pr->cf!==$a->cf) 
                    {
                        $dif[$key][]=['NCM'=>$pr->cf,'NCM2'=>$a->cf];
                    }
                    if($pr->venda!==$a->venda) 
                    {
                        $dif[$key][]=['Venda'=>$pr->venda,'Venda2'=>$a->venda];
                    }
                    if($pr->un!==$a->un) 
                    {
                        $dif[$key][]=['Un'=>$pr->un,'Un2'=>$a->un];
                    }
        
                }
            }
        }
        return view('blingDiferenca2',['dif'=>$dif,'contaProduto'=>$contaProduto,
            'contaProdBling'=>$contaProdBling]);
    }
}


<?php require  'menuView.php'; ?><!-- blingDiferenca.php -->
<script>btmenu.innerHTML='Diferença Bling';document.title='Diferença Bling'</script>
<form method=post class="w-50 m-auto" enctype="multipart/form-data" action=?Bling.diferenca2>
    <label for=arquivo>Escolha o arquivo XML</label>
    <input type=file name=arquivos[] multiple required>
    <input type=submit>
</form>

<?php require  'menuView.php'; ?><!-- blingDiferenca2.php -->
<script>btmenu.innerHTML='Diferença Bling';document.title='Diferença Bling'</script>
<table class='table table-sm'>
<tr class=fw-semibold><td>Código<td>Campo<td>MySQL<td>Bling
<tr><td><td>Produtos<td><?=$contaProduto?><td><?=$contaProdBling?>
<?php foreach($dif as $d):
    foreach($d as $v):?>
    <?php   if(array_keys($v)[0]=="Codigo"):
            $codigo=array_values($v)[0];
            else: ?>
    <tr>
        <td><?=$codigo?>
        <td><?=array_keys($v)[0]?>
        <td><?=array_values($v)[0]?>
        <td onclick="this.style.backgroundColor='lightgray'"><?=array_values($v)[1]?>
    <?php 
            endif;
    endforeach;
endforeach; ?>
</table>

 

Captura de tela 2024-09-05 234133.png

Editado por Frank K Hosaka
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,4k
×
×
  • Criar Novo...