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

JavaScript: copiar e ocultar


Frank K Hosaka

Pergunta

A Bling tem um serviço que pega os dados atuais do MySQL através de arquivos CSV e atualiza o cadastro de produtos. O problema é que isso acaba saindo caro porque cada atualização acaba aumentando o espaço ocupado no armazenamento de dados. A minha saída foi atualizar os produtos na Bling na unha. Ou seja, eu não mando um arquivo csv, eu pego o CSV da Bling e depois eu comparo com o MySQL.

Quando são poucos registros para atualizar, é fácil selecionar, copiar e colar. Mas hoje eu tive que enfrentar um monte de atualização, e pedi socorro para o Copilot, perguntei se ele sabia se o JavaScript é capaz de transferir os dados que foram clicados para a área de transferência, isso reduziu 50% o meu serviço de edição:

arquivo resources > views > lbling-diferenca.blade.php
<div>
    <script>
        function copiar(elemento) {
            conteudo=elemento.innerText || elemento.textContent
            navigator.clipboard.writeText(conteudo)
            elemento.parentElement.style.display="none"
        }
    </script>
    <div class="font-semibold flex">
        <div class=w-[100px]>Código</div>
        <div class=w-[100px]>Campo</div>
        <div class=w-[100px]>MySQL</div>
        <div class=w-[100px]>Bling</div>
    </div>
    <div class=flex>
        <div class=w-[100px]></div>
        <div class=w-[100px]>Produtos</div>
        <div class=w-[100px]>{{ $contaProduto }}</div>
        <div class=w-[100px]>{{ $contaProdBling }}</div>
    </div>
    @foreach($dif as $d)
        @foreach($d as $v)
            @if(array_keys($v)[0]=="Codigo") 
                @php $codigo=array_values($v)[0]; @endphp
            @else
                @if(array_keys($v)[0]!=="Descricao") 
                    <div class="flex">
                        <div class=w-[100px]>{{$codigo}}</div>
                        <div class=w-[100px]>{{array_keys($v)[0]}}</div>
                        <div class=w-[100px] onclick=copiar(this)>
                            <pre class="font-sans"><?=array_values($v)[0]?></pre>
                        </div>
                        <div class=w-[100px]>
                            <pre class="font-sans"><?=array_values($v)[1]?></pre>
                        </div>
                    </div>
                @else
                    <div class=flex>
                        <div class=w-[100px]>{{$codigo}}</div>
                        <div class=w-[100px]>{{array_keys($v)[0]}}</div>
                        <div class=w-[100px] onclick=copiar(this)>
                            <pre class="font-sans"><?=array_values($v)[0]?></pre>
                        </div>
                    </div>
                    <div class=flex>
                        <div class=w-[200px]></div>
                        <div class=w-[100px] onclick=copiar(this)>
                            <pre class="font-sans"><?=array_values($v)[1]?></pre>
                        </div>
                    </div>
                @endif
            @endif
        @endforeach
    @endforeach
</div>

arquivo app > Livewire > LblingDiferenca.php
<?php
namespace App\Livewire;
use App\Models\tbprod;
use App\Models\tbprodbling;
use Illuminate\Support\Facades\DB;
use Livewire\Attributes\Layout;
use Livewire\Component;

#[Layout('components.layouts.app',['titulo'=>'Diferença na Bling'])]
class LblingDiferenca extends Component {

    public $contaProdBling, $contaProduto, $dif=[];

    function mount() {
        DB::table('tbprodbling')->truncate();
        $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]));
                    tbprodbling::create(['codprod'=>$codprod,'un'=>$un,
                        'prod'=>$prod,'custo'=>$custo,'codbar'=>$codbar,
                        'cf'=>$cf,'venda'=>$venda]);
                }
            }
        }
        $produto=tbprod::where('loc','<>','a24')->get();
        $prodBling=tbprodbling::all();
        $this->contaProduto=count($produto);
        $this->contaProdBling=count($prodBling);
        if($this->contaProdBling>$this->contaProduto) {
            $prod=$produto->pluck('codprod');
            $pBling=$prodBling->pluck('codprod');
            $difs=$pBling->diff($prod);
            foreach($difs as $d) {
                echo "problema no codprod $d na Bling <br>";
            }
            dd('parada total');
        }
        foreach($produto as $key=>$pr) {
                $codprod=$pr->codprod;
                $previa=tbprodBling::where('codprod',$codprod)->get();
                if(count($previa)==0) {
                    $this->dif[$key][]=['Codigo'=>$codprod];
                    $this->dif[$key][]=['Incluir'=>$codprod,'Incluir2'=>'Incluir'];
                } else {
                    $a=tbprodBling::where('codprod',$codprod)->first();
                    $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') {
                        $this->dif[$key][]=['Codigo'=>$pr->codprod,'Codigo2'=>$a->codprod];
                        if($pr->prod!==$a->prod) {
                            $this->dif[$key][]=['Descricao'=>$pr->prod,'Descricao2'=>$a->prod];
                        }
                        if($pr->custo!==$a->custo) {
                            if($pr->custo || $a->custo<>0) {
                                $this->dif[$key][]=['Custo'=>$pr->custo,'Custo2'=>$a->custo];
                            }
                        }
                        if($pr->codbar!=$a->codbar) {
                            $this->dif[$key][]=['Codigo de Barra'=>$pr->codbar,'Codigo de Barra2'=>$a->codbar];
                        }
                        if($pr->cf!==$a->cf) {
                            if($pr->cf || $a->cf) {
                                $this->dif[$key][]=['NCM'=>$pr->cf,'NCM2'=>$a->cf];
                            }   
                        }
                        if($pr->venda!==$a->venda) {
                            $this->dif[$key][]=['Venda'=>$pr->venda,'Venda2'=>$a->venda];
                        }
                        if($pr->un!==$a->un) {
                            $this->dif[$key][]=['Un'=>$pr->un,'Un2'=>$a->un];
                        }
                    }
                }
        }

    }
}

 

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