CA
Preciso alterar a função saveComposite na classe TRecord
Olá amigos, preciso da ajuda de vcs para alterar a função saveComposite na classe TRecord para verificar se um valor a ser gravado e do tipo "float" para substituir a "," virgula da casa decimal para "." ponto para gravação no banco de dados uma vez que estou usando a propriedade setNumericMask do TEntry.
Tentei fazer desta forma mas não consegui.
Se alguem puder me ajudar agradeceria muito.
public function saveComposite($composite_class, $foreign_key, $id, $objects)
{
$this->deleteComposite($composite_class, $foreign_key, $id);
if ($objects)
{
foreach ($objects as $object)
{
$class_vars = get_class_vars(get_class($object));
foreach ($class_vars as $name => $value)
{
if (settype($object->$value, "float"))
{
$objtratado = str_replace('.', '', $object->$value);
$objtratado = str_replace('.', '', $objtratado);
$objtratado = str_replace('.', '', $objtratado);
$objtratado = str_replace(',', '.', $objtratado);
$objtratado = number_format($objtratado, 3, ".", "");
$object->$name = $objtratado;
}
}
$object->$foreign_key = $id;
$object->store();
}
}
}
Tentei fazer desta forma mas não consegui.
Se alguem puder me ajudar agradeceria muito.
public function saveComposite($composite_class, $foreign_key, $id, $objects)
{
$this->deleteComposite($composite_class, $foreign_key, $id);
if ($objects)
{
foreach ($objects as $object)
{
$class_vars = get_class_vars(get_class($object));
foreach ($class_vars as $name => $value)
{
if (settype($object->$value, "float"))
{
$objtratado = str_replace('.', '', $object->$value);
$objtratado = str_replace('.', '', $objtratado);
$objtratado = str_replace('.', '', $objtratado);
$objtratado = str_replace(',', '.', $objtratado);
$objtratado = number_format($objtratado, 3, ".", "");
$object->$name = $objtratado;
}
}
$object->$foreign_key = $id;
$object->store();
}
}
}
Boa tarde.
Sou novato por aqui, mas, pelo que entendi, ao usar "setNumericMask(2, ',','.', TRUE)" ele faz isso automaticamente. Ou seja, mostra na tela algo como 1.150,00 mas ao gravar na base, o ultimo parametro da função (TRUE) instrui o Adianti a remover a virgula e salvar no padrão Americano (1150.00).
Espero ter ajudado.
Att,
Rubens