Lançado Adianti Framework 7.6!
Clique aqui para saber mais
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: ...
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:

  1. <?php
  2. /**
  3.  * ordem_de_coleta Master/Detail
  4.  * @author  <your name here>
  5.  */
  6. class ordem_de_coleta extends TPage
  7. {
  8.     protected $form// form
  9.     protected $detail_list;
  10.     
  11.     /**
  12.      * Page constructor
  13.      */
  14.     public function __construct()
  15.     {
  16.         parent::__construct();
  17.         
  18.         // creates the form
  19.         $this->form = new BootstrapFormBuilder('form_ordem_coleta');
  20.         $this->form->setFormTitle('Ordem de coleta');
  21.         $this->form->setFieldSizes('100%');
  22.         
  23.         // master fields
  24.         $id                      = new TEntry('id');
  25.         $status                  = new TEntry('status');//TDBCombo('status', 'banco', 'status', 'descricao', 'descricao');
  26.         $data_coleta             = new TDate('data_coleta');
  27.         //$cliente                 = new TDBCombo       ('cliente', 'banco', 'cliente', 'id', 'razao_social');
  28.         $cliente                 = new TDBUniqueSearch('cliente''banco''cliente''id''razao_social');
  29.         $loja_id                 = new TDBCombo     ('loja_id''banco''loja','id','nome_fantasia');//TEntry('loja_id');
  30.         //$loja_id                 = new TDBUniqueSearch('loja_id', 'banco', 'loja', 'id', 'nome_fantasia');
  31.         $cnpj_loja               = new TEntry('cnpj_loja');
  32.         $rsocial_loja            = new TEntry('rsocial_loja');
  33.         $cep_loja                = new TEntry('cep_loja');
  34.         $endereco_loja           = new TEntry('endereco_loja');
  35.         $numero_loja             = new TEntry('numero_loja');
  36.         $bairro_loja             = new TEntry('bairro_loja');
  37.         $uf_loja                 = new TEntry('uf_loja');//TDBCombo('uf_loja', 'banco', 'uf', 'id', 'descricao');
  38.         $cidade_loja             = new TEntry('cidade_loja');//TDBCombo('cidade_loja', 'banco', 'cidade', 'id', 'descricao');
  39.         $contato_loja            = new TEntry('contato_loja');
  40.         $telefone_loja           = new TEntry('telefone_loja');
  41.         $intervalo_inicial       = new TEntry('intervalo_inicial');
  42.         $intervalo_final         = new TEntry('intervalo_final');
  43.         $hora_com_inicial        = new TEntry('hora_com_inicial');
  44.         $hora_com_fim            = new TEntry('hora_com_fim');
  45.         $sexta_inicial           = new TEntry('sexta_inicial');
  46.         $sexta_fim               = new TEntry('sexta_fim');
  47.         $tipo_veic               = new TDBCombo('tipo_veic''banco''veiculos''tipo_rodado''tipo_rodado');//TEntry('tipo_veic');
  48.         $obs_geral               = new TText('obs_geral');
  49.         //$destinatario_id          = new TDBCombo('destinatario_id', 'banco',      'destinatario', 'id', 'nome_rzsocizl');//new TEntry('destinatario_id');
  50.         $destinatario_id          = new TDBUniqueSearch('destinatario_id''banco''destinatario''id''nome_rzsocizl');
  51.         $uf_destino               = new TEntry('uf_destino');
  52.         $destinatario_nome        = new TEntry('destinatario_nome');
  53.         $contato_destinatario     = new TEntry('contato_destinatario');
  54.         $cnpj_destinatario        = new TEntry('cnpj_destinatario');
  55.         $cep_destinatario         = new TEntry('cep_destinatario');
  56.         $endereco_destinatario    = new TEntry('endereco_destinatario');
  57.         $numero_destinatario      = new TEntry('numero_destinatario');
  58.         $complemento_destinatario = new TEntry('complemento_destinatario');
  59.         $bairro_destinatario      = new TEntry('bairro_destinatario');
  60.         $municipio_destinatario   = new TEntry('municipio_destinatario');
  61.         $telefone_destinatario    = new TEntry('telefone_destinatario');
  62.         // detail fields
  63.         $detail_id                = new THidden('detail_id');
  64.         $detail_numero            = new TEntry('detail_numero');
  65.         $detail_serie             = new TEntry('detail_serie');
  66.         $detail_total_volumes     = new TEntry('detail_total_volumes');
  67.         $detail_total_peso        = new TEntry('detail_total_peso');
  68.         $detail_vlr_nota_fiscal   = new TEntry('detail_vlr_nota_fiscal');
  69.         $detail_especie_embalagem = new TDBCombo('detail_especie_embalagem''banco''especie_embalagem''id''descricao');
  70.         $detail_grupo_natureza    = new TDBCombo('detail_grupo_natureza''banco''grupo_natureza''id''descricao');
  71.         if (!empty($id))
  72.         {
  73.             $id->setEditable(FALSE);
  74.         }
  75.         
  76.         // definição de mascara
  77.         $data_coleta->setMask('dd/mm/yyyy');
  78.         $detail_vlr_nota_fiscal->setNumericMask(2,',''.'true);
  79.                 
  80.         // Mscara para os campos de hora
  81.         $intervalo_inicial ->setMask('99:99');
  82.         $intervalo_final   ->setMask('99:99');
  83.         $hora_com_inicial  ->setMask('99:99');
  84.         $hora_com_fim      ->setMask('99:99');
  85.         $sexta_inicial     ->setMask('99:99');
  86.         $sexta_fim         ->setMask('99:99');
  87.         
  88.         // Busca as informações e preenche os campos da loja
  89.         $loja_id         ->setChangeAction(new TAction([$this,'buscaDadosLoja']));
  90.         // Busca as informações e preenche os campos do destinatário
  91.         $destinatario_id ->setChangeAction(new TAction([$this,'buscaDadosDestinatario']));
  92.         
  93.         // master fields
  94.         $row $this->form->addFields( [ new TLabel('Número da coleta'),        $id ],
  95.                                        [ new TLabel('Status'),                  $status ], 
  96.                                        [ new TLabel('Data da coleta'),          $data_coleta ] );
  97.         $row->layout = ['col-sm-4''col-sm-4','col-sm-4' ];
  98.         // Campos do solicitante
  99.         $this->form->addContent( ['<h4>Dados do solicitante</h4><hr>'] );
  100.         $row $this->form->addFields( [ new TLabel('Cliente'),                $cliente ],
  101.                                        [ new TLabel('Loja'),                   $loja_id ] );
  102.         $row->layout = ['col-sm-6''col-sm-6' ];
  103.         $row $this->form->addFields( [ new TLabel('CNPJ da loja'),                $cnpj_loja ],
  104.                                        [ new TLabel('Razão Social'),                $rsocial_loja ] );
  105.         $row->layout = ['col-sm-6''col-sm-6' ];
  106.         $row $this->form->addFields( [ new TLabel('CEP'),                 $cep_loja ],
  107.                                        [ new TLabel('UF'),                  $uf_loja ], 
  108.                                        [ new TLabel('Cidade'),              $cidade_loja ] );
  109.         $row->layout = ['col-sm-3''col-sm-3','col-sm-6' ];
  110.         $row $this->form->addFields( [ new TLabel('Endereço'),                 $endereco_loja ],
  111.                                        [ new TLabel('Número'),                   $numero_loja ], 
  112.                                        [ new TLabel('Bairro'),                   $bairro_loja ] );
  113.         $row->layout = ['col-sm-6''col-sm-2','col-sm-4' ];
  114.         $row $this->form->addFields( [ new TLabel('Contato'),                 $contato_loja ],
  115.                                        [ new TLabel('Telefone'),                $telefone_loja ] );
  116.         $row->layout = ['col-sm-6''col-sm-6' ];
  117.         // Campos dos destintário          
  118.         $this->form->addContent( ['<h4>Dados do destinatário</h4><hr>'] );
  119.         $row $this->form->addFields( [ new TLabel('Razão Social'),                $destinatario_id ],
  120.                                        [ new TLabel('CNPJ'),                        $cnpj_destinatario ],
  121.                                        [ new TLabel('Nome Fantasia'),               $destinatario_nome ] );
  122.         $row->layout = ['col-sm-6''col-sm-2','col-sm-4' ];
  123.         $row $this->form->addFields( [ new TLabel('CEP'),                 $cep_destinatario ],
  124.                                        [ new TLabel('UF'),                  $uf_destino ], 
  125.                                        [ new TLabel('Cidade'),              $municipio_destinatario ] );
  126.         $row->layout = ['col-sm-3''col-sm-3','col-sm-6' ];
  127.         $row $this->form->addFields( [ new TLabel('Endereço'),                 $endereco_destinatario ],
  128.                                        [ new TLabel('Número'),                   $numero_destinatario ], 
  129.                                        [ new TLabel('Bairro'),                   $bairro_destinatario ] );
  130.         $row->layout = ['col-sm-6''col-sm-2','col-sm-4' ];
  131.         $row $this->form->addFields( [ new TLabel('Complemento'),             $complemento_destinatario ],
  132.                                        [ new TLabel('Contato'),                 $contato_destinatario ],
  133.                                        [ new TLabel('Telefone'),                $telefone_destinatario ] );
  134.         $row->layout = ['col-sm-4''col-sm-4','col-sm-4'];
  135.         // Horários de Coleta
  136.         $this->form->addContent( ['<h4>Hora para coleta</h4><hr>'] );
  137.         $row $this->form->addFields( [ new TLabel('Hora inicial'),              $intervalo_inicial ],
  138.                                        [ new TLabel('Hora final'),                $intervalo_final ] );
  139.         $row->layout = ['col-sm-6''col-sm-6' ];
  140.         $this->form->addContent( ['<h4>Intervalo de almoço</h4><hr>'] );
  141.         $row $this->form->addFields( [ new TLabel('Hora inicial'),             $hora_com_inicial ],
  142.                                        [ new TLabel('Hora final'),               $hora_com_fim ] );
  143.         $row->layout = ['col-sm-6''col-sm-6' ];
  144.         $this->form->addContent( ['<h4>Intervalo de Sexta-Feira</h4><hr>'] );
  145.         $row $this->form->addFields( [ new TLabel('Hora inicial'),          $sexta_inicial],
  146.                                        [ new TLabel('Hora final'),            $sexta_fim ] );
  147.         $row->layout = ['col-sm-6''col-sm-6' ];
  148.         $this->form->addContent( ['<h4>Veículo e observações gerais</h4><hr>'] );
  149.         $row $this->form->addFields( [ new TLabel('Tipo de veículo'),          $tipo_veic ],
  150.                                        [ new TLabel('Obs Geral'),                $obs_geral ] );
  151.         $row->layout = ['col-sm-6''col-sm-6' ];
  152.         
  153.         
  154.         // Validações
  155.         $loja_id          ->addValidation('Loja', new TRequiredValidator);
  156.         $destinatario_id  ->addValidation('Destinatário', new TRequiredValidator);
  157.         
  158.         // detail fields
  159.         $this->form->addContent( ['<h4>Dados da nota fiscal</h4><hr>'] );
  160.         $this->form->addFields( [$detail_id] );
  161.         
  162.         $row $this->form->addFields( [ new TLabel('NF-e'),                    $detail_numero ],
  163.                                        [ new TLabel('Série'),                   $detail_serie ] );
  164.         $row->layout = ['col-sm-8''col-sm-4' ];
  165.         $row $this->form->addFields( [ new TLabel('Total de volumes'),        $detail_total_volumes ],
  166.                                        [ new TLabel('Peso total'),              $detail_total_peso ], 
  167.                                        [ new TLabel('Valor da nota'),           $detail_vlr_nota_fiscal ] );
  168.         $row->layout = ['col-sm-4''col-sm-4','col-sm-4' ];
  169.         $row $this->form->addFields( [ new TLabel('Especie embalagem'),       $detail_especie_embalagem ],
  170.                                        [ new TLabel('Grupo natureza'),          $detail_grupo_natureza ] );
  171.         $row->layout = ['col-sm-6''col-sm-6' ];
  172.        
  173.         $add TButton::create('add', [$this'onSaveDetail'], 'Register''fa:save');
  174.         $this->form->addFields( [], [$add] )->style 'background: whitesmoke; padding: 5px; margin: 1px;';
  175.         
  176.         $this->detail_list = new BootstrapDatagridWrapper(new TQuickGrid);
  177.         $this->detail_list->style "min-width: 700px; width:100%;margin-bottom: 10px";
  178.         $this->detail_list->setId('ordem_coleta_list');
  179.         
  180.         // items
  181.         $this->detail_list->addQuickColumn('NF-e''numero''left'100);
  182.         $this->detail_list->addQuickColumn('Série''serie''left'100);
  183.         $this->detail_list->addQuickColumn('Volumes''total_volumes''left'100);
  184.         $this->detail_list->addQuickColumn('Peso''total_peso''left'100);
  185.         $this->detail_list->addQuickColumn('Valor''vlr_nota_fiscal''left'100);
  186.         $this->detail_list->addQuickColumn('Embalagem''especie_embalagem''left'100);
  187.         $this->detail_list->addQuickColumn('Natureza''grupo_natureza''left'100);
  188.         // detail actions
  189.         $this->detail_list->addQuickAction'Edit',   new TDataGridAction([$this'onEditDetail']),   'id''fa:edit blue');
  190.         $this->detail_list->addQuickAction'Delete', new TDataGridAction([$this'onDeleteDetail']), 'id''fa:trash red');
  191.         $this->detail_list->createModel();
  192.         
  193.         $panel = new TPanelGroup;
  194.         $panel->add($this->detail_list);
  195.         $panel->getBody()->style 'overflow-x:auto';
  196.         $this->form->addContent( [$panel] );
  197.         $btn $this->form->addAction_t('Save'),  new TAction([$this'onSave']), 'fa:save');
  198.         $btn->class 'btn btn-sm btn-primary';
  199.         $this->form->addAction(('Nova')    , new TAction([$this'onClear']), 'fa:eraser red');
  200.         $this->form->addAction_t('Back') , new TAction(array('lista_de_odem_coleta','onReload')),  'fa:arrow-circle-o-left blue' );      
  201.         $this->form->addAction(('Imprimir'), new TAction([$this'onGenerate']), 'fa:eraser red');
  202.         
  203.        
  204.         
  205.         // create the page container
  206.         $container = new TVBox;
  207.         $container->style 'width: 90%';
  208.         $container->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  209.         $container->add($this->form);
  210.         parent::add($container);
  211.     }
  212.     
  213.     
  214.     /**
  215.      * Clear form
  216.      * @param $param URL parameters
  217.      */
  218.     public function onClear($param)
  219.     {
  220.         $this->form->clear(TRUE);
  221.         TSession::setValue(__CLASS__.'_items', array());
  222.         $this->onReload$param );
  223.     }
  224.     
  225.     /**
  226.      * Busca os dados da loja
  227.      */
  228.     static function buscaDadosLoja$params )
  229.     {
  230.         if( !empty($params['loja_id']) )
  231.         {
  232.             try
  233.             {
  234.                 TTransaction::open('banco');
  235.                              // MODEL
  236.                 $loja      = new loja($params['loja_id']);
  237.                 $campos_model = new StdClass;
  238.                 $campos_model->cnpj_loja    $loja->cnpj// campo do form  = model->campo na model
  239.                 $campos_model->rsocial_loja $loja->razao_social;
  240.                 $campos_model->uf_loja      $loja->uf;
  241.                 $campos_model->cidade_loja  $loja->cidade;
  242.                 $campos_model->cep_loja     $loja->cep;
  243.                 $campos_model->endereco_loja$loja->endereco;
  244.                 $campos_model->numero_loja  $loja->numero;
  245.                 $campos_model->bairro_loja  $loja->bairro;
  246.                 $campos_model->contato_loja $loja->contato;
  247.                 $campos_model->telefone_loja$loja->telefone;
  248.                 
  249.        
  250.                 TForm::sendData('form_ordem_coleta'$campos_model);
  251.                 TTransaction::close();
  252.             }
  253.             catch (Exception $e// in case of exception
  254.             {
  255.                 new TMessage('error'$e->getMessage());
  256.                 TTransaction::rollback();
  257.             }
  258.         }
  259.     }
  260.     
  261.     /**
  262.      * Busca os dados do destinatário  
  263.         
  264.      */
  265.     static function buscaDadosDestinatario$params )
  266.     {
  267.         if( !empty($params['loja_id']) )
  268.         {
  269.             try
  270.             {
  271.                 TTransaction::open('banco');
  272.                              // MODEL
  273.                 $loja         = new destinatario($params['destinatario_id']);
  274.                 $campos_model = new StdClass;
  275.                 $campos_model->cnpj_destinatario       $loja->cnpj_cpf// campo do form  = model->campo na model
  276.                 $campos_model->destinatario_nome       $loja->nome_rzsocizl;
  277.                 $campos_model->uf_destino              $loja->uf;
  278.                 $campos_model->municipio_destinatario  $loja->cidade;
  279.                 $campos_model->cep_destinatario        $loja->cep;
  280.                 $campos_model->endereco_destinatario   $loja->endereco;
  281.                 $campos_model->numero_destinatario     $loja->numero;
  282.                 $campos_model->bairro_destinatario     $loja->bairro;
  283.                 $campos_model->contato_destinatario    $loja->contato;
  284.                 $campos_model->telefone_destinatario   $loja->telefone;
  285.                 
  286.        
  287.                 TForm::sendData('form_ordem_coleta'$campos_model);
  288.                 TTransaction::close();
  289.             }
  290.             catch (Exception $e// in case of exception
  291.             {
  292.                 new TMessage('error'$e->getMessage());
  293.                 TTransaction::rollback();
  294.             }
  295.         }
  296.     }
  297.     
  298.     
  299.     //Impressão de Ordem de coleta
  300.     public function onGenerate($param)
  301.     {
  302.         //Pega os dados do formulário
  303.         $data $this->form->getData();
  304.         $this->form->setData($data);
  305.         //Vai no modelo de relatório - se tive que mudar coloca o nome aqui
  306.         $designer = new TPDFDesigner;
  307.         $designer->fromXml('app/reports/ordem_de_coleta.pdf.xml');  
  308.         $designer->generate();
  309.         //Fonte das letras
  310.         $designer->SetFont('Arial','B',12);
  311.         //passa para o formulário todos os campos 
  312.         $designer->writeAtAnchor('id' ,$data->id);
  313.         $designer->writeAtAnchor('id2',$data->id); //Repete para a segunda parte
  314.         $designer->writeAtAnchor('rsocial_loja',utf8_decode($data->rsocial_loja));
  315.         
  316.         $designer->save('app/output/ordem_de_coleta.pdf');
  317.         parent::openFile('app/output/ordem_de_coleta.pdf');
  318.     }
  319.     
  320.     
  321.     /**
  322.      * Save an item from form to session list
  323.      * @param $param URL parameters
  324.      */
  325.     public function onSaveDetail$param )
  326.     {
  327.         try
  328.         {
  329.             TTransaction::open('banco');
  330.             $data $this->form->getData();
  331.             
  332.             /** validation sample
  333.             if (empty($data->fieldX))
  334.             {
  335.                 throw new Exception('The field fieldX is required');
  336.             }
  337.             **/
  338.             
  339.             $items TSession::getValue(__CLASS__.'_items');
  340.             $key = empty($data->detail_id) ? 'X'.mt_rand(10000000001999999999) : $data->detail_id;
  341.             
  342.             $items$key ] = array();
  343.             $items$key ]['id'] = $key;
  344.             $items$key ]['numero'] = $data->detail_numero;
  345.             $items$key ]['serie'] = $data->detail_serie;
  346.             $items$key ]['total_volumes'] = $data->detail_total_volumes;
  347.             $items$key ]['total_peso'] = $data->detail_total_peso;
  348.             $items$key ]['vlr_nota_fiscal'] = $data->detail_vlr_nota_fiscal;
  349.             $items$key ]['especie_embalagem'] = $data->detail_especie_embalagem;
  350.             $items$key ]['grupo_natureza'] = $data->detail_grupo_natureza;
  351.             
  352.             TSession::setValue(__CLASS__.'_items'$items);
  353.             
  354.             // clear detail form fields
  355.             $data->detail_id '';
  356.             $data->detail_numero '';
  357.             $data->detail_serie '';
  358.             $data->detail_total_volumes '';
  359.             $data->detail_total_peso '';
  360.             $data->detail_vlr_nota_fiscal '';
  361.             $data->detail_especie_embalagem '';
  362.             $data->detail_grupo_natureza '';
  363.             
  364.             TTransaction::close();
  365.             $this->form->setData($data);
  366.             
  367.             $this->onReload$param ); // reload the items
  368.         }
  369.         catch (Exception $e)
  370.         {
  371.             $this->form->setData$this->form->getData());
  372.             new TMessage('error'$e->getMessage());
  373.         }
  374.     }
  375.     
  376.     /**
  377.      * Load an item from session list to detail form
  378.      * @param $param URL parameters
  379.      */
  380.     public static function onEditDetail$param )
  381.     {
  382.         // read session items
  383.         $items TSession::getValue(__CLASS__.'_items');
  384.         
  385.         // get the session item
  386.         $item $items$param['key'] ];
  387.         
  388.         $data = new stdClass;
  389.         $data->detail_id $item['id'];
  390.         $data->detail_numero $item['numero'];
  391.         $data->detail_serie $item['serie'];
  392.         $data->detail_total_volumes $item['total_volumes'];
  393.         $data->detail_total_peso $item['total_peso'];
  394.         $data->detail_vlr_nota_fiscal $item['vlr_nota_fiscal'];
  395.         $data->detail_especie_embalagem $item['especie_embalagem'];
  396.         $data->detail_grupo_natureza $item['grupo_natureza'];
  397.         
  398.         // fill detail fields
  399.         TForm::sendData'form_ordem_coleta'$data );
  400.     }
  401.     
  402.     /**
  403.      * Delete an item from session list
  404.      * @param $param URL parameters
  405.      */
  406.     public static function onDeleteDetail$param )
  407.     {
  408.         // reset items
  409.         $data = new stdClass;
  410.             $data->detail_numero '';
  411.             $data->detail_serie '';
  412.             $data->detail_total_volumes '';
  413.             $data->detail_total_peso '';
  414.             $data->detail_vlr_nota_fiscal '';
  415.             $data->detail_especie_embalagem '';
  416.             $data->detail_grupo_natureza '';
  417.         
  418.         // clear form data
  419.         TForm::sendData('form_ordem_coleta'$data );
  420.         
  421.         // read session items
  422.         $items TSession::getValue(__CLASS__.'_items');
  423.         
  424.         // get detail id
  425.         $detail_id $param['key'];
  426.         
  427.         // delete the item from session
  428.         unset($items$detail_id ] );
  429.         
  430.         // rewrite session items
  431.         TSession::setValue(__CLASS__.'_items'$items);
  432.         
  433.         // delete item from screen
  434.         TScript::create("ttable_remove_row_by_id('ordem_coleta_list', '{$detail_id}')");
  435.     }
  436.     
  437.     /**
  438.      * Load the items list from session
  439.      * @param $param URL parameters
  440.      */
  441.     public function onReload($param)
  442.     {
  443.         // read session items
  444.         $items TSession::getValue(__CLASS__.'_items');
  445.         
  446.         $this->detail_list->clear(); // clear detail list
  447.         
  448.         if ($items)
  449.         {
  450.             foreach ($items as $list_item)
  451.             {
  452.                 $item = (object) $list_item;
  453.                 
  454.                 $row $this->detail_list->addItem$item );
  455.                 $row->id $list_item['id'];
  456.             }
  457.         }
  458.         
  459.         $this->loaded TRUE;
  460.     }
  461.     
  462.     /**
  463.      * Load Master/Detail data from database to form/session
  464.      */
  465.     public function onEdit($param)
  466.     {
  467.         try
  468.         {
  469.             TTransaction::open('banco');
  470.             
  471.             if (isset($param['key']))
  472.             {
  473.                 $key $param['key'];
  474.                 
  475.                 $object = new ordem_coleta($key);
  476.                 $items  nota_fiscal_coleta::where('ordem_coleta_id''='$key)->load();
  477.                 
  478.                 $session_items = array();
  479.                 foreach( $items as $item )
  480.                 {
  481.                     $item_key $item->id;
  482.                     $session_items[$item_key] = $item->toArray();
  483.                     $session_items[$item_key]['id'] = $item->id;
  484.                     $session_items[$item_key]['numero'] = $item->numero;
  485.                     $session_items[$item_key]['serie'] = $item->serie;
  486.                     $session_items[$item_key]['total_volumes'] = $item->total_volumes;
  487.                     $session_items[$item_key]['total_peso'] = $item->total_peso;
  488.                     $session_items[$item_key]['vlr_nota_fiscal'] = $item->vlr_nota_fiscal;
  489.                     $session_items[$item_key]['especie_embalagem'] = $item->especie_embalagem;
  490.                     $session_items[$item_key]['grupo_natureza'] = $item->grupo_natureza;
  491.                 }
  492.                 TSession::setValue(__CLASS__.'_items'$session_items);
  493.                 
  494.                 $this->form->setData($object); // fill the form with the active record data
  495.                 $this->onReload$param ); // reload items list
  496.                 TTransaction::close(); // close transaction
  497.             }
  498.             else
  499.             {
  500.                 $this->form->clear(TRUE);
  501.                 TSession::setValue(__CLASS__.'_items'null);
  502.                 $this->onReload$param );
  503.             }
  504.         }
  505.         catch (Exception $e// in case of exception
  506.         {
  507.             new TMessage('error'$e->getMessage());
  508.             TTransaction::rollback();
  509.         }
  510.     }
  511.     
  512.     /**
  513.      * Save the Master/Detail data from form/session to database
  514.      */
  515.     public function onSave()
  516.     {
  517.         try
  518.         {
  519.             // open a transaction with database
  520.             TTransaction::open('banco');
  521.             
  522.             $data $this->form->getData();
  523.             $master = new ordem_coleta;
  524.             $master->fromArray( (array) $data);
  525.             $this->form->validate(); // form validation
  526.             
  527.             $master->store(); // save master object
  528.             // delete details
  529.             $old_items nota_fiscal_coleta::where('ordem_coleta_id''='$master->id)->load();
  530.             
  531.             $keep_items = array();
  532.             
  533.             // get session items
  534.             $items TSession::getValue(__CLASS__.'_items');
  535.             
  536.             if( $items )
  537.             {
  538.                 foreach( $items as $item )
  539.                 {
  540.                     if (substr($item['id'],0,1) == 'X' // new record
  541.                     {
  542.                         $detail = new nota_fiscal_coleta;
  543.                     }
  544.                     else
  545.                     {
  546.                         //$detail = nota_fiscal_coleta::find($item['id']);
  547.                         $detail = new nota_fiscal_coleta;
  548.                         $detail->id $item['id'];
  549.                     }
  550.                     $detail->numero  $item['numero'];
  551.                     $detail->serie  $item['serie'];
  552.                     $detail->total_volumes  $item['total_volumes'];
  553.                     $detail->total_peso  $item['total_peso'];
  554.                     $detail->vlr_nota_fiscal  $item['vlr_nota_fiscal'];
  555.                     $detail->especie_embalagem  $item['especie_embalagem'];
  556.                     $detail->grupo_natureza  $item['grupo_natureza'];
  557.                     $detail->ordem_coleta_id $master->id;
  558.                     $detail->store();
  559.                     
  560.                     $keep_items[] = $detail->id;
  561.                 }
  562.             }
  563.             
  564.             if ($old_items)
  565.             {
  566.                 foreach ($old_items as $old_item)
  567.                 {
  568.                     if (!in_array$old_item->id$keep_items))
  569.                     {
  570.                         $old_item->delete();
  571.                     }
  572.                 }
  573.             }
  574.             TTransaction::close(); // close the transaction
  575.             
  576.             // reload form and session items
  577.             $this->onEdit(array('key'=>$master->id));
  578.             
  579.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  580.         }
  581.         catch (Exception $e// in case of exception
  582.         {
  583.             new TMessage('error'$e->getMessage());
  584.             $this->form->setData$this->form->getData() ); // keep form data
  585.             TTransaction::rollback();
  586.         }
  587.     }
  588.     
  589.     /**
  590.      * Show the page
  591.      */
  592.     public function show()
  593.     {
  594.         // check if the datagrid is already loaded
  595.         if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onReload') )
  596.         {
  597.             $this->onReloadfunc_get_arg(0) );
  598.         }
  599.         parent::show();
  600.     }
  601. }

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (2)


NR

Na função onSave, antes de chamar a store(), faça:
  1. <?php
  2. $master->status 'Lançado';
  3. ?>
RF

Boa noite....

Muito obrigado, funcionou perfeitamente.