[Bug]: Problema no component Money
felipeArnold opened this issue · 13 comments
What happened?
Ao utilizar o component Money o campo de valor salva correto, conforme a primeira e segunda imagem, porém ao editar e não mexer no campo e não alterando nada e salvar o valor é multiplicado vezes 10, conforme a 3 imagem, analisando o código verifiquei que está realmente fazendo a multiplicação do valor decimal vezes 10.
Estou utilizando uma coluna decimal:10,2 e no meu model estou adicionado aos casts que esse campo é um decimal:2.
Alguma alternativa para não ser feito modificação no código podendo afetar mais usuários?
Função que faz a alteração de valor.
floatval(
Str::of($state)
->replace('.', '')
->replace(',', '.')
->toString()
) * 10 :
null
How to reproduce the bug
Package Version
3.0.6
PHP Version
8.2.0
Laravel Version
11.4
Which operating systems does with happen with?
No response
Notes
No response
Mesma coisa aqui
Eu tô refatorando, mas ainda não tenho data de lançamento
Eu vi que já houve uma tentativa de corrigir, porém ainda sem efeito:
$this->dehydrateStateUsing( fn ($state): ?float => $state ? floatval( Str::of($state) ->replace('.', '') ->replace(',', '.') ->toString() ) : null );
O valor está sendo salvo assim:
update
travel_packsSET
price= 69000,
travel_packs.
updated_at= '2024-04-19 19:01:01' WHERE
id = 2
Porém o valor correto é R$ 690,00
O valor está sendo salvo assim:
update
travel_packsSET
price= 69000,
travel_packs.
updated_at= '2024-04-19 19:01:01' WHERE
id= 2
Porém o valor correto é R$ 690,00
Eu implementei uma mudança provisória no meu sistema, onde eu criei um service provider que substitui o método dehydrateMask
original do Money, por esse método:
`public function dehydrateMask(bool|Closure $condition = true): static
{
if ($condition) {
$this->dehydrateStateUsing(
fn($state): ?float => $state ?
(float)Str::of($state)
->replace('.', '')
->replace(',', '.')
->toString() :
null
);
} else {
$this->dehydrateStateUsing(null);
}
return $this;
}`
A grande diferença é que este método não está multiplicando por 10 o estado. Não sei exatamente qual era o objetivo do Leandro ao fazer essa multiplicação, mas por aqui está funcionando legal por enquanto.
Alguma novidade, meu caro leandrocfe?
@IsraelXabregas @michelbarutot @felipeArnold
Verifiquem essa versão por favor
https://github.com/leandrocfe/filament-ptbr-form-fields/releases/tag/3.1.0
@IsraelXabregas @michelbarutot @felipeArnold
Verifiquem essa versão por favor https://github.com/leandrocfe/filament-ptbr-form-fields/releases/tag/3.1.0
Boa tarde Leandro, testado e aprovado. Muito obrigado!