RF
Gravar o Status de lançado
Boa tarde...
Poderiam me ajudar, eu tenho um formulário onde quero gravar no campo Status o valor de "Lançado".
Esse campo não pode ser editável, ou seja, esse Status só pode ser gravado quando clicado no botão salvar.
Abaixo segue o código completo:
Poderiam me ajudar, eu tenho um formulário onde quero gravar no campo Status o valor de "Lançado".
Esse campo não pode ser editável, ou seja, esse Status só pode ser gravado quando clicado no botão salvar.
Abaixo segue o código completo:
- <?php
- /**
- * ordem_de_coleta Master/Detail
- * @author <your name here>
- */
- class ordem_de_coleta extends TPage
- {
- protected $form; // form
- protected $detail_list;
- /**
- * Page constructor
- */
- public function __construct()
- {
- parent::__construct();
- // creates the form
- $this->form = new BootstrapFormBuilder('form_ordem_coleta');
- $this->form->setFormTitle('Ordem de coleta');
- $this->form->setFieldSizes('100%');
- // master fields
- $id = new TEntry('id');
- $status = new TEntry('status');//TDBCombo('status', 'banco', 'status', 'descricao', 'descricao');
- $data_coleta = new TDate('data_coleta');
- //$cliente = new TDBCombo ('cliente', 'banco', 'cliente', 'id', 'razao_social');
- $cliente = new TDBUniqueSearch('cliente', 'banco', 'cliente', 'id', 'razao_social');
- $loja_id = new TDBCombo ('loja_id', 'banco', 'loja','id','nome_fantasia');//TEntry('loja_id');
- //$loja_id = new TDBUniqueSearch('loja_id', 'banco', 'loja', 'id', 'nome_fantasia');
- $cnpj_loja = new TEntry('cnpj_loja');
- $rsocial_loja = new TEntry('rsocial_loja');
- $cep_loja = new TEntry('cep_loja');
- $endereco_loja = new TEntry('endereco_loja');
- $numero_loja = new TEntry('numero_loja');
- $bairro_loja = new TEntry('bairro_loja');
- $uf_loja = new TEntry('uf_loja');//TDBCombo('uf_loja', 'banco', 'uf', 'id', 'descricao');
- $cidade_loja = new TEntry('cidade_loja');//TDBCombo('cidade_loja', 'banco', 'cidade', 'id', 'descricao');
- $contato_loja = new TEntry('contato_loja');
- $telefone_loja = new TEntry('telefone_loja');
- $intervalo_inicial = new TEntry('intervalo_inicial');
- $intervalo_final = new TEntry('intervalo_final');
- $hora_com_inicial = new TEntry('hora_com_inicial');
- $hora_com_fim = new TEntry('hora_com_fim');
- $sexta_inicial = new TEntry('sexta_inicial');
- $sexta_fim = new TEntry('sexta_fim');
- $tipo_veic = new TDBCombo('tipo_veic', 'banco', 'veiculos', 'tipo_rodado', 'tipo_rodado');//TEntry('tipo_veic');
- $obs_geral = new TText('obs_geral');
- //$destinatario_id = new TDBCombo('destinatario_id', 'banco', 'destinatario', 'id', 'nome_rzsocizl');//new TEntry('destinatario_id');
- $destinatario_id = new TDBUniqueSearch('destinatario_id', 'banco', 'destinatario', 'id', 'nome_rzsocizl');
- $uf_destino = new TEntry('uf_destino');
- $destinatario_nome = new TEntry('destinatario_nome');
- $contato_destinatario = new TEntry('contato_destinatario');
- $cnpj_destinatario = new TEntry('cnpj_destinatario');
- $cep_destinatario = new TEntry('cep_destinatario');
- $endereco_destinatario = new TEntry('endereco_destinatario');
- $numero_destinatario = new TEntry('numero_destinatario');
- $complemento_destinatario = new TEntry('complemento_destinatario');
- $bairro_destinatario = new TEntry('bairro_destinatario');
- $municipio_destinatario = new TEntry('municipio_destinatario');
- $telefone_destinatario = new TEntry('telefone_destinatario');
- // detail fields
- $detail_id = new THidden('detail_id');
- $detail_numero = new TEntry('detail_numero');
- $detail_serie = new TEntry('detail_serie');
- $detail_total_volumes = new TEntry('detail_total_volumes');
- $detail_total_peso = new TEntry('detail_total_peso');
- $detail_vlr_nota_fiscal = new TEntry('detail_vlr_nota_fiscal');
- $detail_especie_embalagem = new TDBCombo('detail_especie_embalagem', 'banco', 'especie_embalagem', 'id', 'descricao');
- $detail_grupo_natureza = new TDBCombo('detail_grupo_natureza', 'banco', 'grupo_natureza', 'id', 'descricao');
- if (!empty($id))
- {
- $id->setEditable(FALSE);
- }
- // definição de mascara
- $data_coleta->setMask('dd/mm/yyyy');
- $detail_vlr_nota_fiscal->setNumericMask(2,',', '.', true);
- // Mscara para os campos de hora
- $intervalo_inicial ->setMask('99:99');
- $intervalo_final ->setMask('99:99');
- $hora_com_inicial ->setMask('99:99');
- $hora_com_fim ->setMask('99:99');
- $sexta_inicial ->setMask('99:99');
- $sexta_fim ->setMask('99:99');
- // Busca as informações e preenche os campos da loja
- $loja_id ->setChangeAction(new TAction([$this,'buscaDadosLoja']));
- // Busca as informações e preenche os campos do destinatário
- $destinatario_id ->setChangeAction(new TAction([$this,'buscaDadosDestinatario']));
- // master fields
- $row = $this->form->addFields( [ new TLabel('Número da coleta'), $id ],
- [ new TLabel('Status'), $status ],
- [ new TLabel('Data da coleta'), $data_coleta ] );
- $row->layout = ['col-sm-4', 'col-sm-4','col-sm-4' ];
- // Campos do solicitante
- $this->form->addContent( ['<h4>Dados do solicitante</h4><hr>'] );
- $row = $this->form->addFields( [ new TLabel('Cliente'), $cliente ],
- [ new TLabel('Loja'), $loja_id ] );
- $row->layout = ['col-sm-6', 'col-sm-6' ];
- $row = $this->form->addFields( [ new TLabel('CNPJ da loja'), $cnpj_loja ],
- [ new TLabel('Razão Social'), $rsocial_loja ] );
- $row->layout = ['col-sm-6', 'col-sm-6' ];
- $row = $this->form->addFields( [ new TLabel('CEP'), $cep_loja ],
- [ new TLabel('UF'), $uf_loja ],
- [ new TLabel('Cidade'), $cidade_loja ] );
- $row->layout = ['col-sm-3', 'col-sm-3','col-sm-6' ];
- $row = $this->form->addFields( [ new TLabel('Endereço'), $endereco_loja ],
- [ new TLabel('Número'), $numero_loja ],
- [ new TLabel('Bairro'), $bairro_loja ] );
- $row->layout = ['col-sm-6', 'col-sm-2','col-sm-4' ];
- $row = $this->form->addFields( [ new TLabel('Contato'), $contato_loja ],
- [ new TLabel('Telefone'), $telefone_loja ] );
- $row->layout = ['col-sm-6', 'col-sm-6' ];
- // Campos dos destintário
- $this->form->addContent( ['<h4>Dados do destinatário</h4><hr>'] );
- $row = $this->form->addFields( [ new TLabel('Razão Social'), $destinatario_id ],
- [ new TLabel('CNPJ'), $cnpj_destinatario ],
- [ new TLabel('Nome Fantasia'), $destinatario_nome ] );
- $row->layout = ['col-sm-6', 'col-sm-2','col-sm-4' ];
- $row = $this->form->addFields( [ new TLabel('CEP'), $cep_destinatario ],
- [ new TLabel('UF'), $uf_destino ],
- [ new TLabel('Cidade'), $municipio_destinatario ] );
- $row->layout = ['col-sm-3', 'col-sm-3','col-sm-6' ];
- $row = $this->form->addFields( [ new TLabel('Endereço'), $endereco_destinatario ],
- [ new TLabel('Número'), $numero_destinatario ],
- [ new TLabel('Bairro'), $bairro_destinatario ] );
- $row->layout = ['col-sm-6', 'col-sm-2','col-sm-4' ];
- $row = $this->form->addFields( [ new TLabel('Complemento'), $complemento_destinatario ],
- [ new TLabel('Contato'), $contato_destinatario ],
- [ new TLabel('Telefone'), $telefone_destinatario ] );
- $row->layout = ['col-sm-4', 'col-sm-4','col-sm-4'];
- // Horários de Coleta
- $this->form->addContent( ['<h4>Hora para coleta</h4><hr>'] );
- $row = $this->form->addFields( [ new TLabel('Hora inicial'), $intervalo_inicial ],
- [ new TLabel('Hora final'), $intervalo_final ] );
- $row->layout = ['col-sm-6', 'col-sm-6' ];
- $this->form->addContent( ['<h4>Intervalo de almoço</h4><hr>'] );
- $row = $this->form->addFields( [ new TLabel('Hora inicial'), $hora_com_inicial ],
- [ new TLabel('Hora final'), $hora_com_fim ] );
- $row->layout = ['col-sm-6', 'col-sm-6' ];
- $this->form->addContent( ['<h4>Intervalo de Sexta-Feira</h4><hr>'] );
- $row = $this->form->addFields( [ new TLabel('Hora inicial'), $sexta_inicial],
- [ new TLabel('Hora final'), $sexta_fim ] );
- $row->layout = ['col-sm-6', 'col-sm-6' ];
- $this->form->addContent( ['<h4>Veículo e observações gerais</h4><hr>'] );
- $row = $this->form->addFields( [ new TLabel('Tipo de veículo'), $tipo_veic ],
- [ new TLabel('Obs Geral'), $obs_geral ] );
- $row->layout = ['col-sm-6', 'col-sm-6' ];
- // Validações
- $loja_id ->addValidation('Loja', new TRequiredValidator);
- $destinatario_id ->addValidation('Destinatário', new TRequiredValidator);
- // detail fields
- $this->form->addContent( ['<h4>Dados da nota fiscal</h4><hr>'] );
- $this->form->addFields( [$detail_id] );
- $row = $this->form->addFields( [ new TLabel('NF-e'), $detail_numero ],
- [ new TLabel('Série'), $detail_serie ] );
- $row->layout = ['col-sm-8', 'col-sm-4' ];
- $row = $this->form->addFields( [ new TLabel('Total de volumes'), $detail_total_volumes ],
- [ new TLabel('Peso total'), $detail_total_peso ],
- [ new TLabel('Valor da nota'), $detail_vlr_nota_fiscal ] );
- $row->layout = ['col-sm-4', 'col-sm-4','col-sm-4' ];
- $row = $this->form->addFields( [ new TLabel('Especie embalagem'), $detail_especie_embalagem ],
- [ new TLabel('Grupo natureza'), $detail_grupo_natureza ] );
- $row->layout = ['col-sm-6', 'col-sm-6' ];
- $add = TButton::create('add', [$this, 'onSaveDetail'], 'Register', 'fa:save');
- $this->form->addFields( [], [$add] )->style = 'background: whitesmoke; padding: 5px; margin: 1px;';
- $this->detail_list = new BootstrapDatagridWrapper(new TQuickGrid);
- $this->detail_list->style = "min-width: 700px; width:100%;margin-bottom: 10px";
- $this->detail_list->setId('ordem_coleta_list');
- // items
- $this->detail_list->addQuickColumn('NF-e', 'numero', 'left', 100);
- $this->detail_list->addQuickColumn('Série', 'serie', 'left', 100);
- $this->detail_list->addQuickColumn('Volumes', 'total_volumes', 'left', 100);
- $this->detail_list->addQuickColumn('Peso', 'total_peso', 'left', 100);
- $this->detail_list->addQuickColumn('Valor', 'vlr_nota_fiscal', 'left', 100);
- $this->detail_list->addQuickColumn('Embalagem', 'especie_embalagem', 'left', 100);
- $this->detail_list->addQuickColumn('Natureza', 'grupo_natureza', 'left', 100);
- // detail actions
- $this->detail_list->addQuickAction( 'Edit', new TDataGridAction([$this, 'onEditDetail']), 'id', 'fa:edit blue');
- $this->detail_list->addQuickAction( 'Delete', new TDataGridAction([$this, 'onDeleteDetail']), 'id', 'fa:trash red');
- $this->detail_list->createModel();
- $panel = new TPanelGroup;
- $panel->add($this->detail_list);
- $panel->getBody()->style = 'overflow-x:auto';
- $this->form->addContent( [$panel] );
- $btn = $this->form->addAction( _t('Save'), new TAction([$this, 'onSave']), 'fa:save');
- $btn->class = 'btn btn-sm btn-primary';
- $this->form->addAction(('Nova') , new TAction([$this, 'onClear']), 'fa:eraser red');
- $this->form->addAction( _t('Back') , new TAction(array('lista_de_odem_coleta','onReload')), 'fa:arrow-circle-o-left blue' );
- $this->form->addAction(('Imprimir'), new TAction([$this, 'onGenerate']), 'fa:eraser red');
- // create the page container
- $container = new TVBox;
- $container->style = 'width: 90%';
- $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
- parent::add($container);
- }
- /**
- * Clear form
- * @param $param URL parameters
- */
- public function onClear($param)
- {
- $this->form->clear(TRUE);
- TSession::setValue(__CLASS__.'_items', array());
- $this->onReload( $param );
- }
- /**
- * Busca os dados da loja
- */
- static function buscaDadosLoja( $params )
- {
- if( !empty($params['loja_id']) )
- {
- try
- {
- TTransaction::open('banco');
- // MODEL
- $loja = new loja($params['loja_id']);
- $campos_model = new StdClass;
- $campos_model->cnpj_loja = $loja->cnpj; // campo do form = model->campo na model
- $campos_model->rsocial_loja = $loja->razao_social;
- $campos_model->uf_loja = $loja->uf;
- $campos_model->cidade_loja = $loja->cidade;
- $campos_model->cep_loja = $loja->cep;
- $campos_model->endereco_loja= $loja->endereco;
- $campos_model->numero_loja = $loja->numero;
- $campos_model->bairro_loja = $loja->bairro;
- $campos_model->contato_loja = $loja->contato;
- $campos_model->telefone_loja= $loja->telefone;
- TForm::sendData('form_ordem_coleta', $campos_model);
- TTransaction::close();
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- }
- /**
- * Busca os dados do destinatário
- */
- static function buscaDadosDestinatario( $params )
- {
- if( !empty($params['loja_id']) )
- {
- try
- {
- TTransaction::open('banco');
- // MODEL
- $loja = new destinatario($params['destinatario_id']);
- $campos_model = new StdClass;
- $campos_model->cnpj_destinatario = $loja->cnpj_cpf; // campo do form = model->campo na model
- $campos_model->destinatario_nome = $loja->nome_rzsocizl;
- $campos_model->uf_destino = $loja->uf;
- $campos_model->municipio_destinatario = $loja->cidade;
- $campos_model->cep_destinatario = $loja->cep;
- $campos_model->endereco_destinatario = $loja->endereco;
- $campos_model->numero_destinatario = $loja->numero;
- $campos_model->bairro_destinatario = $loja->bairro;
- $campos_model->contato_destinatario = $loja->contato;
- $campos_model->telefone_destinatario = $loja->telefone;
- TForm::sendData('form_ordem_coleta', $campos_model);
- TTransaction::close();
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- }
- //Impressão de Ordem de coleta
- public function onGenerate($param)
- {
- //Pega os dados do formulário
- $data = $this->form->getData();
- $this->form->setData($data);
- //Vai no modelo de relatório - se tive que mudar coloca o nome aqui
- $designer = new TPDFDesigner;
- $designer->fromXml('app/reports/ordem_de_coleta.pdf.xml');
- $designer->generate();
- //Fonte das letras
- $designer->SetFont('Arial','B',12);
- //passa para o formulário todos os campos
- $designer->writeAtAnchor('id' ,$data->id);
- $designer->writeAtAnchor('id2',$data->id); //Repete para a segunda parte
- $designer->writeAtAnchor('rsocial_loja',utf8_decode($data->rsocial_loja));
- $designer->save('app/output/ordem_de_coleta.pdf');
- parent::openFile('app/output/ordem_de_coleta.pdf');
- }
- /**
- * Save an item from form to session list
- * @param $param URL parameters
- */
- public function onSaveDetail( $param )
- {
- try
- {
- TTransaction::open('banco');
- $data = $this->form->getData();
- /** validation sample
- if (empty($data->fieldX))
- {
- throw new Exception('The field fieldX is required');
- }
- **/
- $items = TSession::getValue(__CLASS__.'_items');
- $key = empty($data->detail_id) ? 'X'.mt_rand(1000000000, 1999999999) : $data->detail_id;
- $items[ $key ] = array();
- $items[ $key ]['id'] = $key;
- $items[ $key ]['numero'] = $data->detail_numero;
- $items[ $key ]['serie'] = $data->detail_serie;
- $items[ $key ]['total_volumes'] = $data->detail_total_volumes;
- $items[ $key ]['total_peso'] = $data->detail_total_peso;
- $items[ $key ]['vlr_nota_fiscal'] = $data->detail_vlr_nota_fiscal;
- $items[ $key ]['especie_embalagem'] = $data->detail_especie_embalagem;
- $items[ $key ]['grupo_natureza'] = $data->detail_grupo_natureza;
- TSession::setValue(__CLASS__.'_items', $items);
- // clear detail form fields
- $data->detail_id = '';
- $data->detail_numero = '';
- $data->detail_serie = '';
- $data->detail_total_volumes = '';
- $data->detail_total_peso = '';
- $data->detail_vlr_nota_fiscal = '';
- $data->detail_especie_embalagem = '';
- $data->detail_grupo_natureza = '';
- TTransaction::close();
- $this->form->setData($data);
- $this->onReload( $param ); // reload the items
- }
- catch (Exception $e)
- {
- $this->form->setData( $this->form->getData());
- new TMessage('error', $e->getMessage());
- }
- }
- /**
- * Load an item from session list to detail form
- * @param $param URL parameters
- */
- public static function onEditDetail( $param )
- {
- // read session items
- $items = TSession::getValue(__CLASS__.'_items');
- // get the session item
- $item = $items[ $param['key'] ];
- $data = new stdClass;
- $data->detail_id = $item['id'];
- $data->detail_numero = $item['numero'];
- $data->detail_serie = $item['serie'];
- $data->detail_total_volumes = $item['total_volumes'];
- $data->detail_total_peso = $item['total_peso'];
- $data->detail_vlr_nota_fiscal = $item['vlr_nota_fiscal'];
- $data->detail_especie_embalagem = $item['especie_embalagem'];
- $data->detail_grupo_natureza = $item['grupo_natureza'];
- // fill detail fields
- TForm::sendData( 'form_ordem_coleta', $data );
- }
- /**
- * Delete an item from session list
- * @param $param URL parameters
- */
- public static function onDeleteDetail( $param )
- {
- // reset items
- $data = new stdClass;
- $data->detail_numero = '';
- $data->detail_serie = '';
- $data->detail_total_volumes = '';
- $data->detail_total_peso = '';
- $data->detail_vlr_nota_fiscal = '';
- $data->detail_especie_embalagem = '';
- $data->detail_grupo_natureza = '';
- // clear form data
- TForm::sendData('form_ordem_coleta', $data );
- // read session items
- $items = TSession::getValue(__CLASS__.'_items');
- // get detail id
- $detail_id = $param['key'];
- // delete the item from session
- unset($items[ $detail_id ] );
- // rewrite session items
- TSession::setValue(__CLASS__.'_items', $items);
- // delete item from screen
- TScript::create("ttable_remove_row_by_id('ordem_coleta_list', '{$detail_id}')");
- }
- /**
- * Load the items list from session
- * @param $param URL parameters
- */
- public function onReload($param)
- {
- // read session items
- $items = TSession::getValue(__CLASS__.'_items');
- $this->detail_list->clear(); // clear detail list
- if ($items)
- {
- foreach ($items as $list_item)
- {
- $item = (object) $list_item;
- $row = $this->detail_list->addItem( $item );
- $row->id = $list_item['id'];
- }
- }
- $this->loaded = TRUE;
- }
- /**
- * Load Master/Detail data from database to form/session
- */
- public function onEdit($param)
- {
- try
- {
- TTransaction::open('banco');
- if (isset($param['key']))
- {
- $key = $param['key'];
- $object = new ordem_coleta($key);
- $items = nota_fiscal_coleta::where('ordem_coleta_id', '=', $key)->load();
- $session_items = array();
- foreach( $items as $item )
- {
- $item_key = $item->id;
- $session_items[$item_key] = $item->toArray();
- $session_items[$item_key]['id'] = $item->id;
- $session_items[$item_key]['numero'] = $item->numero;
- $session_items[$item_key]['serie'] = $item->serie;
- $session_items[$item_key]['total_volumes'] = $item->total_volumes;
- $session_items[$item_key]['total_peso'] = $item->total_peso;
- $session_items[$item_key]['vlr_nota_fiscal'] = $item->vlr_nota_fiscal;
- $session_items[$item_key]['especie_embalagem'] = $item->especie_embalagem;
- $session_items[$item_key]['grupo_natureza'] = $item->grupo_natureza;
- }
- TSession::setValue(__CLASS__.'_items', $session_items);
- $this->form->setData($object); // fill the form with the active record data
- $this->onReload( $param ); // reload items list
- TTransaction::close(); // close transaction
- }
- else
- {
- $this->form->clear(TRUE);
- TSession::setValue(__CLASS__.'_items', null);
- $this->onReload( $param );
- }
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- /**
- * Save the Master/Detail data from form/session to database
- */
- public function onSave()
- {
- try
- {
- // open a transaction with database
- TTransaction::open('banco');
- $data = $this->form->getData();
- $master = new ordem_coleta;
- $master->fromArray( (array) $data);
- $this->form->validate(); // form validation
- $master->store(); // save master object
- // delete details
- $old_items = nota_fiscal_coleta::where('ordem_coleta_id', '=', $master->id)->load();
- $keep_items = array();
- // get session items
- $items = TSession::getValue(__CLASS__.'_items');
- if( $items )
- {
- foreach( $items as $item )
- {
- if (substr($item['id'],0,1) == 'X' ) // new record
- {
- $detail = new nota_fiscal_coleta;
- }
- else
- {
- //$detail = nota_fiscal_coleta::find($item['id']);
- $detail = new nota_fiscal_coleta;
- $detail->id = $item['id'];
- }
- $detail->numero = $item['numero'];
- $detail->serie = $item['serie'];
- $detail->total_volumes = $item['total_volumes'];
- $detail->total_peso = $item['total_peso'];
- $detail->vlr_nota_fiscal = $item['vlr_nota_fiscal'];
- $detail->especie_embalagem = $item['especie_embalagem'];
- $detail->grupo_natureza = $item['grupo_natureza'];
- $detail->ordem_coleta_id = $master->id;
- $detail->store();
- $keep_items[] = $detail->id;
- }
- }
- if ($old_items)
- {
- foreach ($old_items as $old_item)
- {
- if (!in_array( $old_item->id, $keep_items))
- {
- $old_item->delete();
- }
- }
- }
- TTransaction::close(); // close the transaction
- // reload form and session items
- $this->onEdit(array('key'=>$master->id));
- new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- $this->form->setData( $this->form->getData() ); // keep form data
- TTransaction::rollback();
- }
- }
- /**
- * Show the page
- */
- public function show()
- {
- // check if the datagrid is already loaded
- if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onReload') )
- {
- $this->onReload( func_get_arg(0) );
- }
- parent::show();
- }
- }
Na função onSave, antes de chamar a store(), faça:
Boa noite....
Muito obrigado, funcionou perfeitamente.