GM
Cadastro de Item apresentando erro, seria versão do php?
Olá, ao usar o Mini_ERP e tentar cadastrar um orçamento ou venda, é apresentado este erro:
No modal de erro aparece:
A linha em questão contém:
acredito que seja talvez a versão, mas não quero mudar a versão do que já estou usando.
alguma dica?
Warning: Undefined variable $data in C:\webserver\htdocs\erp\app\control\crm\OrcamentoForm.php on line 237
Warning: Attempt to read property "id" on null in C:\webserver\htdocs\erp\app\control\crm\OrcamentoForm.php on line 237
No modal de erro aparece:
ERRO: Unsupported operand types: string - string
A linha em questão contém:
public function onSave($param = null)
{
try
{
TTransaction::open(self::$database); // open a transaction
/**
// Enable Debug logger for SQL operations inside the transaction
TTransaction::setLogger(new TLoggerSTD); // standard output
TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
**/
$messageAction = null;
$this->form->validate(); // validate form data
$object = new Orcamento(); // create an empty object
// LINHA COM O ERRO AQUI - INICIO
if(!$data->id) // LINHA 237
{
$object->system_unit_id = TSession::getValue('userunitid');
}
// LINHA COM O ERRO AQUI - FIM
$data = $this->form->getData(); // get form data as array
$object->fromArray( (array) $data); // load the object with data
$object->store(); // save the object
$messageAction = new TAction(['OrcamentoList', 'onShow']);
if(!empty($param['target_container']))
{
$messageAction->setParameter('target_container', $param['target_container']);
}
$orcamento_item_orcamento_items = $this->storeItems('OrcamentoItem', 'orcamento_id', $object, 'orcamento_item_orcamento', function($masterObject, $detailObject){
$masterObject->valor_total += ($detailObject->quantidade * ($detailObject->valor - $detailObject->desconto));
});
$object->store();
// get the generated {PRIMARY_KEY}
$data->id = $object->id;
$this->form->setData($data); // fill form data
TTransaction::close(); // close the transaction
/**
// To define an action to be executed on the message close event:
$messageAction = new TAction(['className', 'methodName']);
**/
new TMessage('info', AdiantiCoreTranslator::translate('Record saved'), $messageAction);
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage()); // shows the exception error message
$this->form->setData( $this->form->getData() ); // keep form data
TTransaction::rollback(); // undo all pending operations
}
}
acredito que seja talvez a versão, mas não quero mudar a versão do que já estou usando.
alguma dica?
O erro diz que você está tentando usar a variável data antes dela ser declarada. Logo abaixo do erro tem o comando a seguir:
Coloque esse comando acima da linha com erro:
Sim, mas fazendo conforme você informa ele mostra o erro que informei lá em cima no modal:
o tipo de dados destes campos está igual 'int' com mesmo tamanho no dicionário.
Este é o código completo:
erro:
link: https://gpsoft.com.br/doc/erro.png