RF
Pegar o último número do documento e adicionar mais um
Bom dia...
Tenho o seguinte cenário: Em um formulário de coleta, a numeração não obedece a sequência de auto numeração com base na id, há um campo (numero_coleta) que deve ser preenchido com o valor da última numeração + 1, ou seja, preciso no botão onSave o valor do último número de coleta, somar +1 e gravar no campo numero da coleta.
Alguém poderia me ajudar a fazer esse código, ler o último registro e somar +1.
Tenho o seguinte cenário: Em um formulário de coleta, a numeração não obedece a sequência de auto numeração com base na id, há um campo (numero_coleta) que deve ser preenchido com o valor da última numeração + 1, ou seja, preciso no botão onSave o valor do último número de coleta, somar +1 e gravar no campo numero da coleta.
Alguém poderia me ajudar a fazer esse código, ler o último registro e somar +1.
Bom dia Robson,
Você precisa fazer isso no Adianti ou pode fazer pelo banco através de um gatilho?
Olá Rod Limão!
Na verdade é dentro do código, não pelo banco, a ideia é ler o último número da solicitação e depois incrementar +1, estou fazendo isso porque a solicitação tem também o campo série, sendo assim, na mudança da série a numeração volta para 1, mas não quero mexer na ID, ou seja, ela (a id) sempre segue a sequência.
Consegui explicar melhor
Você já tem uma tabela de controle: numero + serie? Bom,... eu não vej outra maneira a não ser fazer uma pesquisa no banco.
Espero poder ter ajudado.
Boa tarde Rod Limão, perfeito, muito obrigado, vou pegar essa ideia e o código que você colocou (como base).
Depois de pronto posto o código aqui, e se tiver mais alguma duvida eu aviso... Obrigado!!!
Bom dia, Rod Limão.
Obrigado pela atenção, e com base no que conversamos por aqui, consegui fazer o que desejava, segue abaixo o código.
Coloquei no botão onSave, no começo do código, acho que pode ajudar outras pessoas.
Só me desculpem pelo código não ser muito bonito, eu sou iniciante em PHP e no Adianti.
try
{
// Pega a informação dos campos
$data = $this->form->getData();
// Pega a informação do campo Status
$grava = $data->status;
// Pega a informação do campo serie
$nS = $data->serie_coleta;
// Se já estiver Lançado ou cancelado não deixa gravar
if ($grava == 2) { //"Emitido"
new TMessage('info', "Não se pode alterar uma Solicitação já Emitida, um documento em branco será apresentada para digitação.");
// Limpa os campos para digitaão de nova coleta
$this->form->clear(true);
TSession::setValue('nfe_solicitacao_solicitacao_items', null);
$this->onReload();
} else if ($grava == 3) { //"Cancelado"
new TMessage('info', "Solicitação já Cancelada, um documento em branco será apresentada para digitação.");
// Limpa os campos para digitaão de nova coleta
$this->form->clear(true);
TSession::setValue('nfe_solicitacao_solicitacao_items', null);
$this->onReload();
} else { //"Lançado"
try
{
if ($grava != 1) {
TTransaction::open('transpalog');
$num = 0;
$conn = TTransaction::get();
$sql = "SELECT numero_coleta FROM solicitacao WHERE serie_coleta = '".$nS."' ORDER BY numero_coleta DESC LIMIT 1";
$result = $conn->query($sql);
$objects = $result->fetchAll(PDO::FETCH_CLASS, "stdClass");
if($objects)
{
foreach($objects as $object)
{
$num = $object->numero_coleta;
$num++;
$object = new stdClass();
$object->numero_coleta = $num;
TForm::sendData(self::$formName, $object);
}
}
TTransaction::close();
}
}
catch (Exception $e)
{
new TMessage('error', $e->getMessage());
//new TMessage('error', ('Preencha corretamente a solicitação para salvar!'));
}