Open felipeArnold opened 6 months ago
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_packs SET
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!
Testei SEM sucesso na versão: "filament/filament": "^3.2", com: "laravel/framework": "^11.9", na hora de salvar, ele tenta salva tudo errado:
SQLSTATE[HY000]: General error: 1366 Incorrect decimal value: '69,000' for column 'min_deposit' at row 1 (Connection: mysql, SQL: update `settings` set `min_deposit` = 69,000, `settings`.`updated_at` = 2024-10-10 11:44:13 where `id` = 1)
uso:
Money::make('min_deposit')
->label('Depósito Mínimo')
EDIT >>>> Encontrei a causa de não funcionar, eu estava com um submit customizado, e estava acessando $this->data diretamente, mas o correto é usar o getState, pois ele vai fazer com que dehydrateStateUsing seja chamado ( que é onde acontece a formatação ), vou deixar a resposta pq alguêm mais pode está cometendo o mesmo erro
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.
How to reproduce the bug
Imagem 1:
Imagem 2:
Imagem 3:
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