/**
  * method onSave()
  * Executed whenever the user clicks at the save button
  */
 function onSave()
 {
     $string = new StringsUtil();
     try {
         TTransaction::open('atividade');
         // open a transaction
         // get the form data into an active record Ticket
         $object = $this->form->getData('Ticket');
         $validador = new TUltiPgtoValidator();
         $validador->validate('Ultimo pagamento', '', array($object->valor_pagamento, $object->data_pagamento));
         !$object->data_cadastro ? $object->data_cadastro = date('Y-m-d') : ($object->data_cadastro = $string->formatDate($object->data_cadastro));
         $object->data_prevista ? $object->data_prevista = $string->formatDate($object->data_prevista) : null;
         if ($object->status_ticket_id == 5) {
             $object->data_inicio = $object->data_inicio_oculta;
         }
         $object->data_inicio ? $object->data_inicio = $string->formatDate($object->data_inicio) : null;
         $object->data_encerramento ? $object->data_encerramento = $string->formatDate($object->data_encerramento) : null;
         $object->data_cancelamento ? $object->data_cancelamento = $string->formatDate($object->data_cancelamento) : null;
         $object->data_aprovacao ? $object->data_aprovacao = $string->formatDate($object->data_aprovacao) : null;
         $object->data_ultimo_pgto ? $object->data_ultimo_pgto = $string->formatDate($object->data_ultimo_pgto) : null;
         $object->data_pagamento ? $object->data_ultimo_pgto = $string->formatDate($object->data_pagamento) : null;
         $object->orcamento_horas ? $object->orcamento_horas = $object->orcamento_horas . ':00:00' : null;
         $object->orcamento_valor_hora ? $object->orcamento_valor_hora = $string->desconverteReais($object->orcamento_valor_hora) : null;
         $object->valor_desconto ? $object->valor_desconto = $string->desconverteReais($object->valor_desconto) : null;
         $object->valor_total ? $object->valor_total = $string->desconverteReais($object->valor_total) : null;
         $object->valor_ultimo_pgto ? $object->valor_ultimo_pgto = $string->desconverteReais($object->valor_ultimo_pgto) : null;
         $object->valor_total_pago ? $object->valor_total_pago = $string->desconverteReais($object->valor_total_pago) : null;
         if ($object->valor_pagamento) {
             $object->valor_ultimo_pgto = $string->desconverteReais($object->valor_pagamento);
             $object->valor_total_pago += $string->desconverteReais($object->valor_pagamento);
         }
         $vars['tipo_origens'] = $object->tipo_origens;
         $vars['codigo_cadastro_origem'] = $object->codigo_cadastro_origem;
         $vars['solicitante_id'] = $object->solicitante_id;
         $this->onChangeOrigem($vars);
         $this->onChangeTipoOrigem($vars);
         $this->onSetarValoresCombo($vars);
         $this->form->validate();
         // form validation
         $object->store();
         // stores the object
         $saldo = $object->valor_total - $object->valor_total_pago;
         $object->valor_saldo = number_format($saldo, 2, ',', '.');
         $object->data_cadastro ? $object->data_cadastro = $string->formatDateBR($object->data_cadastro) : null;
         $object->data_prevista ? $object->data_prevista = $string->formatDateBR($object->data_prevista) : null;
         $object->data_inicio ? $object->data_inicio = $string->formatDateBR($object->data_inicio) : null;
         $object->data_encerramento ? $object->data_encerramento = $string->formatDateBR($object->data_encerramento) : null;
         $object->data_cancelamento ? $object->data_cancelamento = $string->formatDateBR($object->data_cancelamento) : null;
         $object->data_aprovacao ? $object->data_aprovacao = $string->formatDateBR($object->data_aprovacao) : null;
         $object->data_ultimo_pgto ? $object->data_ultimo_pgto = $string->formatDateBR($object->data_ultimo_pgto) : null;
         $object->orcamento_horas ? $object->orcamento_horas = strstr($object->orcamento_horas, ':', true) : null;
         $object->orcamento_valor_hora ? $object->orcamento_valor_hora = number_format($object->orcamento_valor_hora, 2, ',', '.') : null;
         $object->valor_desconto ? $object->valor_desconto = number_format($object->valor_desconto, 2, ',', '.') : null;
         $object->valor_total ? $object->valor_total = number_format($object->valor_total, 2, ',', '.') : null;
         $object->valor_ultimo_pgto ? $object->valor_ultimo_pgto = number_format($object->valor_ultimo_pgto, 2, ',', '.') : null;
         $object->valor_total_pago ? $object->valor_total_pago = number_format($object->valor_total_pago, 2, ',', '.') : null;
         $ticket = new Ticket($object->id);
         $dtrs = $ticket->getRequisitoDesenvolvimentos();
         foreach ($dtrs as $dtr) {
             $titulo = $dtr->titulo;
         }
         if (!$titulo) {
             if ($object->tipo_ticket_id == 4 or $object->tipo_ticket_id == 5 or $object->tipo_ticket_id == 6) {
                 TButton::enableField('form_Ticket', 'gerar_dr');
             }
         } else {
             TButton::enableField('form_Ticket', 'link_dtr');
         }
         TButton::disableField('form_Ticket', 'delete');
         if ($object->status_ticket_id == 2 and !$object->data_aprovacao and !$object->getAtividades() and !$object->data_ultimo_pgto) {
             TButton::enableField('form_Ticket', 'delete');
         }
         if ($object->status_ticket_id == 5) {
             TDate::disableField('form_Ticket', 'data_inicio');
             TDate::disableField('form_Ticket', 'data_encerramento');
             TDate::disableField('form_Ticket', 'data_cancelamento');
         }
         $this->form->setData($object);
         // keep form data
         TTransaction::close();
         // close the transaction
         // shows the success message
         new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
     } catch (Exception $e) {
         new TMessage('error', '<b>Error</b> ' . $e->getMessage());
         // shows the exception error message
         $this->form->setData($this->form->getData());
         // keep form data
         TTransaction::rollback();
         // undo all pending operations
     }
 }