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

A consistência contábil do estoque


Frank K Hosaka

Pergunta

Foi em 1999 é que eu inventei o estoque como a última compra. Coloquei essa ideia no MS Access, em 2020 no PHP e agora cheguei no Livewire, eu chamei a rotina de baixa de estoque. A ideia é bem simples, o problema é como adaptar num programa de computador. Ou seja, eu fiz tudo na base da improvisação, a maior prova é que eu sempre encontro divergência na hora de rodar a rotina.

Hoje eu aprendi um novo método no Eloquent chamado keyBy. Ao invés de ajuntar duas tabelas, eu fiz uma consulta numa tabela e outra consulta em outra tabela, e em seguida ajuntei o resultado, tendo como denominador o campo lançamento. A primeira diferença que eu encontrei foi lá em 2023. Naquela época, o fornecedor trocou uma mercadoria por outra. Ao invés de fazer um lançamento para a mercadoria que entrou e outro lançamento para a mercadoria que saiu, eu fiz tudo num só lançamento, e agora eu amargo o problema da inconsistência contábil no estoque. Naquela época, eu achei a ideia ótima, mas hoje eu volto a aprender que a gambiarra não compensa.

 

app > Livewire > EstoqueDiferenca.php
<?php 
namespace App\Livewire;
use App\Models\tbdiario;
use App\Models\tbhistprod;
use Illuminate\Support\Facades\DB;
use Livewire\Attributes\Layout;
use Livewire\Component;

#[Layout('components.layouts.app',['titulo'=>'Teste'])]
class Teste extends Component {

    public $entrada,$saida;

    function mount() {
        $contabil = tbdiario::where('contac',123)->orderBy('lcto')->get()->keyBy('lcto');
        $estoque = tbhistprod::select('lcto', DB::raw('SUM(custototal) as saida'))
            ->groupBy('lcto')->orderBy('lcto')->get()->keyBy('lcto');
        $this->saida=collect();
        foreach($contabil as $lcto => $conta) {
            $saiu=$estoque[$lcto]->saida ?? 0;
            $this->saida->push(['lcto'=>$lcto,'valor'=>$conta->valor,'saida'=>$saiu]);
        }
        $contabil = tbdiario::where('contad',123)->orderBy('lcto')->get()->keyBy('lcto');
        $this->entrada=collect();
        foreach($contabil as $lcto => $conta) {
            $entrou=$estoque[$lcto]->saida ?? 0;
            $this->entrada->push(['lcto'=>$lcto,'valor'=>$conta->valor,'entrada'=>$entrou]);
        }
    }
}

resources > views > estoque-diferenca.blade.php
<div>
    <div class=flex>
                <div class="w-[100px] text-right">Lcto</div>
                <div class="w-[100px] text-right">Contábil</div>
                <div class="w-[100px] text-right">Estoque</div>
                <div class="w-[100px] text-right">Divergência</div>
    </div>
    <div class="w-[300px] ml-40">Diferença na Saída do Estoque</div>
    @foreach($saida as $a)
        @if($a['valor']+$a['saida'])
            <div class="flex odd:bg-gray-200">
                <div class="w-[100px] text-right">{{$a['lcto']}}</div>
                <div class="w-[100px] text-right">{{dec($a['valor'])}}</div>
                <div class="w-[100px] text-right">{{dec($a['saida'])}}</div>
                <div class="w-[100px] text-right">{{dec($a['valor']+$a['saida'])}}</div>
            </div>
        @endif
    @endforeach
    <div class="w-[300px] ml-40">Diferença na Entrada do Estoque</div>
    @foreach($entrada as $a)
        @if($a['valor']-$a['entrada'])
            <div class="flex odd:bg-gray-200">
                <div class="w-[100px] text-right">{{$a['lcto']}}</div>
                <div class="w-[100px] text-right">{{dec($a['valor'])}}</div>
                <div class="w-[100px] text-right">{{dec($a['entrada'])}}</div>
                <div class="w-[100px] text-right">{{dec($a['valor']-$a['entrada'])}}</div>
            </div>
        @endif
    @endforeach
</div>

 

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