Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Método setTransformer() não encontrado Estou ainda com problemas no formulário que preciso formatar o valor como número. Com base no livro e em exemplos do tutor, tentei fazer a conversão, mas apresenta o erro: Exceção Método setTransformer() não encontrado File: appcontrolcoletasordem_de_coleta.class.php : 81 AdiantiWidgetFormTField->__call(setTransformer,) File: libadianticoreAdiantiCoreApplication.php ...
RF
Método setTransformer() não encontrado  
Estou ainda com problemas no formulário que preciso formatar o valor como número.
Com base no livro e em exemplos do tutor, tentei fazer a conversão, mas apresenta o erro:

Exceção
Método setTransformer() não encontrado

File: appcontrolcoletasordem_de_coleta.class.php : 81
AdiantiWidgetFormTField->__call(setTransformer,)
File: libadianticoreAdiantiCoreApplication.php : 60
ordem_de_coleta->__construct(ordem_de_coleta,onEdit,1,1)
File: engine.php : 23
AdiantiCoreAdiantiCoreApplication::run(1)
File: engine.php : 64
TApplication::run(1)


Alguém pode me apontar onde estou errando?

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

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (4)


MG

O método "setTransformer" só é aplicado a um objeto de TDataGridColumn, TEntry não tem este método. Deve usqr "setMask"
RF

Bom dia, galera eu na verdade estou querendo que na GRID apareça no formato "11,02", por exemplo, pequei como base informações aqui do forum, exemplos do tutor, e não consigo fazer esse ajuste. Poderiam me ajudar a fazer esse ajuste.
RB

Robson, tenta assim :

  1. <?php
  2. //na linha 81
  3. $detail_vlr_nota_fiscal->setTransformer(array($this'format_value'));
  4. // cria uma função 
  5. public function format_value($detail_vlr_nota_fiscal$object$row)
  6.     {
  7.         $number number_format($detail_vlr_nota_fiscal2',''.');
  8.         if ($detail_vlr_nota_fiscal 0)
  9.         {
  10.             return "<span style='color:blue'>$number</span>";
  11.         }
  12.     }
  13. ?>
RF

Boa tarde...
Obrigado aos que ajudaram, consegui entender o porque desse erro, refazendo e comparando com exemplos aqui do forum, na verdade eu alterei essa linha de:

$this->detail_list->addQuickColumn('Valor', 'vlr_nota_fiscal', 'left', 100);
Para:
$detail_vlr_nota_fiscal = $this->detail_list->addQuickColumn('Valor', 'vlr_nota_fiscal', 'left', 100);
E acrescentei o código do Pablo:

$detail_vlr_nota_fiscal->setTotalFunction( function($values) {
return array_sum((array) $values);
});

$detail_vlr_nota_fiscal->setTransformer(function($value, $object, $row) {
if (!$value)
{
$value = 0;
}
return "R$ " . number_format($value, 2, ",", ".");
});

Obrigado a todos pela paciência e atenção.
Eu não conheço php, estou estudando direto dos livros do Pablo. Valeu...