Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Gravar valor numérico na Grid - comportamento "estranho" Boa tarde... Tenho um formulário de digitação de solicitações, esse foi criado com o formulário mestre detalhe, do Studio. Com base no micro erp, fiz algumas adaptações para que ao digitar nos campos: volumes, peso e valor, tivesse a formatação com ponto e virgula. O comportamento estranho está acontecendo na grid, onde ao salvar pela primeira vez ele grava o número "com a formata...
RF
Gravar valor numérico na Grid - comportamento "estranho"  
Boa tarde...

Tenho um formulário de digitação de solicitações, esse foi criado com o formulário mestre detalhe, do Studio.
Com base no micro erp, fiz algumas adaptações para que ao digitar nos campos: volumes, peso e valor, tivesse a formatação com ponto e virgula.
O comportamento estranho está acontecendo na grid, onde ao salvar pela primeira vez ele grava o número "com a formatação" (aparece com xx,xx - mas até esse momento tudo bem, no exemplo do cicro erp isso também acontece, dá pra conviver, rsss).
Ao clicar na grid e trazer para os TEntry, os valores, a coisa fica estranha, ele perde a formatação e ao salvar novamente para a Grid, o sistema "elimina" o ponto e grava um número maior.
Em anexo há um exemplo passo-a-passo desse comportamento.

Nesse exemplo o campo peso informado (45,55), quando vai para a grid passa para 4555, e esse ciclo se repete para os demais campos.

Onde deve ser corrigido esse problema?

Segue abaixo o código completo do formulário:

  1. <?php
  2. /**
  3.  * solicitacao_de_carga_form Master/Detail
  4.  * @author  <your name here>
  5.  */
  6. class solicitacao_de_carga_form 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_solicitacao_de_carga');
  20.         $this->form->setFormTitle('solicitacao_de_carga');
  21.         
  22.         // master fields
  23.         $id = new TEntry('id');
  24.         $status_carga = new TEntry('status_carga');
  25.         $data_cadastro = new TEntry('data_cadastro');
  26.         $unidade_id = new TEntry('unidade_id');
  27.         $cliente_id = new TEntry('cliente_id');
  28.         $servico = new TEntry('servico');
  29.         $loja_id = new TEntry('loja_id');
  30.         $remetente_cnpj = new TEntry('remetente_cnpj');
  31.         $remetente_ie = new TEntry('remetente_ie');
  32.         $remetente_rz_social = new TEntry('remetente_rz_social');
  33.         $remetente_nome_fantasia = new TEntry('remetente_nome_fantasia');
  34.         $remetente_cep = new TEntry('remetente_cep');
  35.         $remetente_uf = new TEntry('remetente_uf');
  36.         $remetente_cidade = new TEntry('remetente_cidade');
  37.         $remetente_endereco = new TEntry('remetente_endereco');
  38.         $remetente_numero = new TEntry('remetente_numero');
  39.         $remetente_bairro = new TEntry('remetente_bairro');
  40.         $remetente_complemento = new TEntry('remetente_complemento');
  41.         $remetente_telefone = new TEntry('remetente_telefone');
  42.         $remetente_email = new TEntry('remetente_email');
  43.         $destinatario_cnpj = new TEntry('destinatario_cnpj');
  44.         $destinatario_ie = new TEntry('destinatario_ie');
  45.         $destinatario_rz_social = new TEntry('destinatario_rz_social');
  46.         $destinatario_cep = new TEntry('destinatario_cep');
  47.         $destinatario_uf = new TEntry('destinatario_uf');
  48.         $destinatario_cidade = new TEntry('destinatario_cidade');
  49.         $destinatario_endereco = new TEntry('destinatario_endereco');
  50.         $destinatario_numero = new TEntry('destinatario_numero');
  51.         $destinatario_id = new TEntry('destinatario_id');
  52.         $destinatario_bairro = new TEntry('destinatario_bairro');
  53.         $destinatario_completo = new TEntry('destinatario_completo');
  54.         $destinatario_telefone = new TEntry('destinatario_telefone');
  55.         $valor_rs_total = new TEntry('valor_rs_total');
  56.         $volume_total = new TEntry('volume_total');
  57.         $peso_total = new TEntry('peso_total');
  58.         $cubagem_total = new TEntry('cubagem_total');
  59.         $peso_cubado_total = new TEntry('peso_cubado_total');
  60.         $tipo_de_documento = new TEntry('tipo_de_documento');
  61.         // detail fields
  62.         $detail_id = new THidden('detail_id');
  63.         $detail_nota_fiscal = new TEntry('detail_nota_fiscal');
  64.         $detail_serie_nota_fiscal = new TEntry('detail_serie_nota_fiscal');
  65.         $detail_danfe = new TEntry('detail_danfe');
  66.         $detail_emissao = new TDate('detail_emissao');
  67.         $detail_valor          = new TNumeric('detail_valor''2'',''.' );//new TEntry('detail_valor');
  68.         $detail_pedido         = new TEntry('detail_pedido');
  69.         $detail_entrega        = new TEntry('detail_entrega');
  70.         $detail_carga          = new TEntry('detail_carga');
  71.         $detail_volumes        = new TNumeric('detail_volumes''0'',''.' ); //new TEntry('detail_volumes');
  72.         $detail_peso_informado = new TNumeric('detail_peso_informado''2'',''.' );// new TEntry('detail_peso_informado');
  73.         $detail_peso_medido    = new TNumeric('detail_peso_medido''2'',''.' );//TEntry('detail_peso_medido');
  74.         $detail_comprimento    = new TNumeric('detail_comprimento''2'',''.' );//TEntry('detail_comprimento');
  75.         $detail_largura        = new TNumeric('detail_largura''2'',''.' );//TEntry('detail_largura');
  76.         $detail_altura         = new TNumeric('detail_altura''2'',''.' );//TEntry('detail_altura');
  77.         $detail_cubagem        = new TNumeric('detail_cubagem''2'',''.' );//TEntry('detail_cubagem');
  78.         if (!empty($id))
  79.         {
  80.             $id->setEditable(FALSE);
  81.         }
  82.         
  83.         // master fields
  84.         $this->form->addFields( [new TLabel('Número')], [$id] );
  85.         $this->form->addFields( [new TLabel('Status')], [$status_carga] );
  86.         $this->form->addFields( [new TLabel('Data Cadastro')], [$data_cadastro] );
  87.         $this->form->addFields( [new TLabel('Unidade atual')], [$unidade_id] );
  88.         $this->form->addFields( [new TLabel('Cliente')], [$cliente_id] );
  89.         $this->form->addFields( [new TLabel('Tipo de serviço')], [$servico] );
  90.         $this->form->addFields( [new TLabel('Cliente embarcador')], [$loja_id] );
  91.         $this->form->addFields( [new TLabel('Remetente Cnpj')], [$remetente_cnpj] );
  92.         $this->form->addFields( [new TLabel('Remetente Ie')], [$remetente_ie] );
  93.         $this->form->addFields( [new TLabel('Remetente Rz Social')], [$remetente_rz_social] );
  94.         $this->form->addFields( [new TLabel('Remetente Nome Fantasia')], [$remetente_nome_fantasia] );
  95.         $this->form->addFields( [new TLabel('Remetente Cep')], [$remetente_cep] );
  96.         $this->form->addFields( [new TLabel('Remetente Uf')], [$remetente_uf] );
  97.         $this->form->addFields( [new TLabel('Remetente Cidade')], [$remetente_cidade] );
  98.         $this->form->addFields( [new TLabel('Remetente Endereco')], [$remetente_endereco] );
  99.         $this->form->addFields( [new TLabel('Remetente Numero')], [$remetente_numero] );
  100.         $this->form->addFields( [new TLabel('Remetente Bairro')], [$remetente_bairro] );
  101.         $this->form->addFields( [new TLabel('Remetente Complemento')], [$remetente_complemento] );
  102.         $this->form->addFields( [new TLabel('Remetente Telefone')], [$remetente_telefone] );
  103.         $this->form->addFields( [new TLabel('Remetente Email')], [$remetente_email] );
  104.         $this->form->addFields( [new TLabel('Destinatario Cnpj')], [$destinatario_cnpj] );
  105.         $this->form->addFields( [new TLabel('Destinatario Ie')], [$destinatario_ie] );
  106.         $this->form->addFields( [new TLabel('Destinatario Rz Social')], [$destinatario_rz_social] );
  107.         $this->form->addFields( [new TLabel('Destinatario Cep')], [$destinatario_cep] );
  108.         $this->form->addFields( [new TLabel('Destinatario Uf')], [$destinatario_uf] );
  109.         $this->form->addFields( [new TLabel('Destinatario Cidade')], [$destinatario_cidade] );
  110.         $this->form->addFields( [new TLabel('Destinatario Endereco')], [$destinatario_endereco] );
  111.         $this->form->addFields( [new TLabel('Destinatario Numero')], [$destinatario_numero] );
  112.         $this->form->addFields( [new TLabel('Destinatario Id')], [$destinatario_id] );
  113.         $this->form->addFields( [new TLabel('Destinatario Bairro')], [$destinatario_bairro] );
  114.         $this->form->addFields( [new TLabel('Destinatario Completo')], [$destinatario_completo] );
  115.         $this->form->addFields( [new TLabel('Destinatario Telefone')], [$destinatario_telefone] );
  116.         $this->form->addFields( [new TLabel('Valor Rs Total')], [$valor_rs_total] );
  117.         $this->form->addFields( [new TLabel('Volume Total')], [$volume_total] );
  118.         $this->form->addFields( [new TLabel('Peso Total')], [$peso_total] );
  119.         $this->form->addFields( [new TLabel('Cubagem Total')], [$cubagem_total] );
  120.         $this->form->addFields( [new TLabel('Peso Cubado Total')], [$peso_cubado_total] );
  121.         $this->form->addFields( [new TLabel('Tipo De Documento')], [$tipo_de_documento] );
  122.         
  123.         // detail fields
  124.         $this->form->addContent( ['<h4>Details</h4><hr>'] );
  125.         $this->form->addFields( [$detail_id] );
  126.         
  127.         $this->form->addFields( [new TLabel('Nota Fiscal')], [$detail_nota_fiscal] );
  128.         $this->form->addFields( [new TLabel('Serie Nota Fiscal')], [$detail_serie_nota_fiscal] );
  129.         $this->form->addFields( [new TLabel('Danfe')], [$detail_danfe] );
  130.         $this->form->addFields( [new TLabel('Emissao')], [$detail_emissao] );
  131.         $this->form->addFields( [new TLabel('Valor')], [$detail_valor] );
  132.         $this->form->addFields( [new TLabel('Pedido')], [$detail_pedido] );
  133.         $this->form->addFields( [new TLabel('Entrega')], [$detail_entrega] );
  134.         $this->form->addFields( [new TLabel('Carga')], [$detail_carga] );
  135.         $this->form->addFields( [new TLabel('Volumes')], [$detail_volumes] );
  136.         $this->form->addFields( [new TLabel('Peso Informado')], [$detail_peso_informado] );
  137.         $this->form->addFields( [new TLabel('Peso Medido')], [$detail_peso_medido] );
  138.         $this->form->addFields( [new TLabel('Comprimento')], [$detail_comprimento] );
  139.         $this->form->addFields( [new TLabel('Largura')], [$detail_largura] );
  140.         $this->form->addFields( [new TLabel('Altura')], [$detail_altura] );
  141.         $this->form->addFields( [new TLabel('Cubagem')], [$detail_cubagem] );
  142.         $add TButton::create('add', [$this'onSaveDetail'], 'Register''fa:save');
  143.         $this->form->addFields( [], [$add] )->style 'background: whitesmoke; padding: 5px; margin: 1px;';
  144.         
  145.         $this->detail_list = new BootstrapDatagridWrapper(new TQuickGrid);
  146.         $this->detail_list->style "min-width: 700px; width:100%;margin-bottom: 10px";
  147.         $this->detail_list->setId('solicitacao_de_carga_list');
  148.         
  149.         // items
  150.         $col_nota_fiscal       $this->detail_list->addQuickColumn('Documento''nota_fiscal''left'100);
  151.         $col_serie_nota_fiscal $this->detail_list->addQuickColumn('Serie''serie_nota_fiscal''left'100);
  152.         //$col_danfe             = $this->detail_list->addQuickColumn('Danfe', 'danfe', 'left', 100);
  153.         //$col_emissao           = $this->detail_list->addQuickColumn('Emissão', 'emissao', 'left', 100);
  154.         $col_volumes           $this->detail_list->addQuickColumn('Volumes''volumes''left'100);
  155.         $col_peso_informado    $this->detail_list->addQuickColumn('Peso Inf.''peso_informado''left'100);        
  156.         $col_peso_medido       $this->detail_list->addQuickColumn('Peso Med.''peso_medido''left'100);
  157.         $col_valor             $this->detail_list->addQuickColumn('Valor''valor''left'100);
  158.         //$col_pedido            = $this->detail_list->addQuickColumn('Pedido', 'pedido', 'left', 100);
  159.         //$col_entrega           = $this->detail_list->addQuickColumn('Entrega', 'entrega', 'left', 100);
  160.         //$col_carga             = $this->detail_list->addQuickColumn('Carga', 'carga', 'left', 100);
  161.         //$col_comprimento       = $this->detail_list->addQuickColumn('Comprimento', 'comprimento', 'left', 100);
  162.         //$col_largura           = $this->detail_list->addQuickColumn('Largura', 'largura', 'left', 100);
  163.         //$col_altura            = $this->detail_list->addQuickColumn('Altura', 'altura', 'left', 100);
  164.         //$col_cubagem           = $this->detail_list->addQuickColumn('Cubagem', 'cubagem', 'left', 100);
  165.         $col_volumes->setTotalFunction( function($values) { 
  166.             return array_sum((array) $values);
  167.         }); 
  168.         $col_peso_informado->setTotalFunction( function($values) { 
  169.             return array_sum((array) $values);
  170.         }); 
  171.         $col_peso_medido->setTotalFunction( function($values) { 
  172.             return array_sum((array) $values);
  173.         }); 
  174.         $col_valor->setTotalFunction( function($values) { 
  175.             return array_sum((array) $values);
  176.         }); 
  177.         
  178.         //$this->item_pedido_list->createModel();
  179.         
  180.         $col_valor->setTransformer(function($value$object$row) {
  181.             if (!$value)
  182.             {
  183.                 $value 0;
  184.             }
  185.             return number_format($value2","".");
  186.         });
  187.         // detail actions
  188.         $this->detail_list->addQuickAction'Edit',   new TDataGridAction([$this'onEditDetail']),   'id''fa:edit blue');
  189.         $this->detail_list->addQuickAction'Delete', new TDataGridAction([$this'onDeleteDetail']), 'id''fa:trash red');
  190.         $this->detail_list->createModel();
  191.         
  192.         $panel = new TPanelGroup;
  193.         $panel->add($this->detail_list);
  194.         $panel->getBody()->style 'overflow-x:auto';
  195.         $this->form->addContent( [$panel] );
  196.         $btn $this->form->addAction_t('Save'),  new TAction([$this'onSave']), 'fa:save');
  197.         $btn->class 'btn btn-sm btn-primary';
  198.         $this->form->addAction_t('Clear'), new TAction([$this'onClear']), 'fa:eraser red');
  199.         
  200.         // create the page container
  201.         $container = new TVBox;
  202.         $container->style 'width: 90%';
  203.         $container->add(new TXMLBreadCrumb('menu.xml','lista_de_solicitacoes'));
  204.         $container->add($this->form);
  205.         parent::add($container);
  206.     }
  207.     
  208.     
  209.     /**
  210.      * Clear form
  211.      * @param $param URL parameters
  212.      */
  213.     public function onClear($param)
  214.     {
  215.         $this->form->clear(TRUE);
  216.         TSession::setValue(__CLASS__.'_items', array());
  217.         $this->onReload$param );
  218.     }
  219.     
  220.     /**
  221.      * Save an item from form to session list
  222.      * @param $param URL parameters
  223.      */
  224.     public function onSaveDetail$param )
  225.     {
  226.         try
  227.         {
  228.             TTransaction::open('banco');
  229.             $data $this->form->getData();
  230.             
  231.             /** validation sample
  232.             if (empty($data->fieldX))
  233.             {
  234.                 throw new Exception('The field fieldX is required');
  235.             }
  236.             **/
  237.             
  238.             $items TSession::getValue(__CLASS__.'_items');
  239.             $key = empty($data->detail_id) ? 'X'.mt_rand(10000000001999999999) : $data->detail_id;
  240.             
  241.             $items$key ] = array();
  242.             $items$key ]['id'] = $key;
  243.             $items$key ]['nota_fiscal'] = $data->detail_nota_fiscal;
  244.             $items$key ]['serie_nota_fiscal'] = $data->detail_serie_nota_fiscal;
  245.             $items$key ]['danfe'] = $data->detail_danfe;
  246.             $items$key ]['emissao'] = $data->detail_emissao;
  247.             $items$key ]['valor'] = $data->detail_valor;
  248.             $items$key ]['pedido'] = $data->detail_pedido;
  249.             $items$key ]['entrega'] = $data->detail_entrega;
  250.             $items$key ]['carga'] = $data->detail_carga;
  251.             $items$key ]['volumes'] = $data->detail_volumes;
  252.             $items$key ]['peso_informado'] = $data->detail_peso_informado;
  253.             $items$key ]['peso_medido'] = $data->detail_peso_medido;
  254.             $items$key ]['comprimento'] = $data->detail_comprimento;
  255.             $items$key ]['largura'] = $data->detail_largura;
  256.             $items$key ]['altura'] = $data->detail_altura;
  257.             $items$key ]['cubagem'] = $data->detail_cubagem;
  258.             
  259.             TSession::setValue(__CLASS__.'_items'$items);
  260.             
  261.             // clear detail form fields
  262.             $data->detail_id '';
  263.             $data->detail_nota_fiscal '';
  264.             $data->detail_serie_nota_fiscal '';
  265.             $data->detail_danfe '';
  266.             $data->detail_emissao '';
  267.             $data->detail_valor '';
  268.             $data->detail_pedido '';
  269.             $data->detail_entrega '';
  270.             $data->detail_carga '';
  271.             $data->detail_volumes '';
  272.             $data->detail_peso_informado '';
  273.             $data->detail_peso_medido '';
  274.             $data->detail_comprimento '';
  275.             $data->detail_largura '';
  276.             $data->detail_altura '';
  277.             $data->detail_cubagem '';
  278.             
  279.             TTransaction::close();
  280.             $this->form->setData($data);
  281.             
  282.             $this->onReload$param ); // reload the items
  283.         }
  284.         catch (Exception $e)
  285.         {
  286.             $this->form->setData$this->form->getData());
  287.             new TMessage('error'$e->getMessage());
  288.         }
  289.     }
  290.     
  291.     /**
  292.      * Load an item from session list to detail form
  293.      * @param $param URL parameters
  294.      */
  295.     public static function onEditDetail$param )
  296.     {
  297.         // read session items
  298.         $items TSession::getValue(__CLASS__.'_items');
  299.         
  300.         // get the session item
  301.         $item $items$param['key'] ];
  302.         
  303.         $data = new stdClass;
  304.         $data->detail_id $item['id'];
  305.         $data->detail_nota_fiscal $item['nota_fiscal'];
  306.         $data->detail_serie_nota_fiscal $item['serie_nota_fiscal'];
  307.         $data->detail_danfe $item['danfe'];
  308.         $data->detail_emissao $item['emissao'];
  309.         $data->detail_valor $item['valor'];
  310.         $data->detail_pedido $item['pedido'];
  311.         $data->detail_entrega $item['entrega'];
  312.         $data->detail_carga $item['carga'];
  313.         $data->detail_volumes $item['volumes'];
  314.         $data->detail_peso_informado $item['peso_informado'];
  315.         $data->detail_peso_medido $item['peso_medido'];
  316.         $data->detail_comprimento $item['comprimento'];
  317.         $data->detail_largura $item['largura'];
  318.         $data->detail_altura $item['altura'];
  319.         $data->detail_cubagem $item['cubagem'];
  320.         
  321.         // fill detail fields
  322.         TForm::sendData'form_solicitacao_de_carga'$data );
  323.     }
  324.     
  325.     /**
  326.      * Delete an item from session list
  327.      * @param $param URL parameters
  328.      */
  329.     public static function onDeleteDetail$param )
  330.     {
  331.         // reset items
  332.         $data = new stdClass;
  333.             $data->detail_nota_fiscal '';
  334.             $data->detail_serie_nota_fiscal '';
  335.             $data->detail_danfe '';
  336.             $data->detail_emissao '';
  337.             $data->detail_valor '';
  338.             $data->detail_pedido '';
  339.             $data->detail_entrega '';
  340.             $data->detail_carga '';
  341.             $data->detail_volumes '';
  342.             $data->detail_peso_informado '';
  343.             $data->detail_peso_medido '';
  344.             $data->detail_comprimento '';
  345.             $data->detail_largura '';
  346.             $data->detail_altura '';
  347.             $data->detail_cubagem '';
  348.         
  349.         // clear form data
  350.         TForm::sendData('form_solicitacao_de_carga'$data );
  351.         
  352.         // read session items
  353.         $items TSession::getValue(__CLASS__.'_items');
  354.         
  355.         // get detail id
  356.         $detail_id $param['key'];
  357.         
  358.         // delete the item from session
  359.         unset($items$detail_id ] );
  360.         
  361.         // rewrite session items
  362.         TSession::setValue(__CLASS__.'_items'$items);
  363.         
  364.         // delete item from screen
  365.         TScript::create("ttable_remove_row_by_id('solicitacao_de_carga_list', '{$detail_id}')");
  366.     }
  367.     
  368.     /**
  369.      * Load the items list from session
  370.      * @param $param URL parameters
  371.      */
  372.     public function onReload($param)
  373.     {
  374.         // read session items
  375.         $items TSession::getValue(__CLASS__.'_items');
  376.         
  377.         $this->detail_list->clear(); // clear detail list
  378.         
  379.         if ($items)
  380.         {
  381.             foreach ($items as $list_item)
  382.             {
  383.                 $item = (object) $list_item;
  384.                 
  385.                 $row $this->detail_list->addItem$item );
  386.                 $row->id $list_item['id'];
  387.             }
  388.         }
  389.         
  390.         $this->loaded TRUE;
  391.     }
  392.     
  393.     /**
  394.      * Load Master/Detail data from database to form/session
  395.      */
  396.     public function onEdit($param)
  397.     {
  398.         try
  399.         {
  400.             TTransaction::open('banco');
  401.             
  402.             if (isset($param['key']))
  403.             {
  404.                 $key $param['key'];
  405.                 
  406.                 $object = new solicitacao_de_carga($key);
  407.                 $items  notas_fiscais_carga::where('solicitacao_de_carga_id''='$key)->load();
  408.                 
  409.                 $session_items = array();
  410.                 foreach( $items as $item )
  411.                 {
  412.                     $item_key $item->id;
  413.                     $session_items[$item_key] = $item->toArray();
  414.                     $session_items[$item_key]['id'] = $item->id;
  415.                     $session_items[$item_key]['nota_fiscal'] = $item->nota_fiscal;
  416.                     $session_items[$item_key]['serie_nota_fiscal'] = $item->serie_nota_fiscal;
  417.                     $session_items[$item_key]['danfe'] = $item->danfe;
  418.                     $session_items[$item_key]['emissao'] = $item->emissao;
  419.                     $session_items[$item_key]['valor'] = $item->valor;
  420.                     $session_items[$item_key]['pedido'] = $item->pedido;
  421.                     $session_items[$item_key]['entrega'] = $item->entrega;
  422.                     $session_items[$item_key]['carga'] = $item->carga;
  423.                     $session_items[$item_key]['volumes'] = $item->volumes;
  424.                     $session_items[$item_key]['peso_informado'] = $item->peso_informado;
  425.                     $session_items[$item_key]['peso_medido'] = $item->peso_medido;
  426.                     $session_items[$item_key]['comprimento'] = $item->comprimento;
  427.                     $session_items[$item_key]['largura'] = $item->largura;
  428.                     $session_items[$item_key]['altura'] = $item->altura;
  429.                     $session_items[$item_key]['cubagem'] = $item->cubagem;
  430.                 }
  431.                 TSession::setValue(__CLASS__.'_items'$session_items);
  432.                 
  433.                 $this->form->setData($object); // fill the form with the active record data
  434.                 $this->onReload$param ); // reload items list
  435.                 TTransaction::close(); // close transaction
  436.             }
  437.             else
  438.             {
  439.                 $this->form->clear(TRUE);
  440.                 TSession::setValue(__CLASS__.'_items'null);
  441.                 $this->onReload$param );
  442.             }
  443.         }
  444.         catch (Exception $e// in case of exception
  445.         {
  446.             new TMessage('error'$e->getMessage());
  447.             TTransaction::rollback();
  448.         }
  449.     }
  450.     
  451.     /**
  452.      * Save the Master/Detail data from form/session to database
  453.      */
  454.     public function onSave()
  455.     {
  456.         try
  457.         {
  458.             // open a transaction with database
  459.             TTransaction::open('banco');
  460.             
  461.             $data $this->form->getData();
  462.             $master = new solicitacao_de_carga;
  463.             $master->fromArray( (array) $data);
  464.             $this->form->validate(); // form validation
  465.             
  466.             $master->store(); // save master object
  467.             // delete details
  468.             $old_items notas_fiscais_carga::where('solicitacao_de_carga_id''='$master->id)->load();
  469.             
  470.             $keep_items = array();
  471.             
  472.             // get session items
  473.             $items TSession::getValue(__CLASS__.'_items');
  474.             
  475.             if( $items )
  476.             {
  477.                 foreach( $items as $item )
  478.                 {
  479.                     if (substr($item['id'],0,1) == 'X' // new record
  480.                     {
  481.                         $detail = new notas_fiscais_carga;
  482.                     }
  483.                     else
  484.                     {
  485.                         $detail notas_fiscais_carga::find($item['id']);
  486.                     }
  487.                     $detail->nota_fiscal  $item['nota_fiscal'];
  488.                     $detail->serie_nota_fiscal  $item['serie_nota_fiscal'];
  489.                     $detail->danfe  $item['danfe'];
  490.                     $detail->emissao  $item['emissao'];
  491.                     $detail->valor  $item['valor'];
  492.                     $detail->pedido  $item['pedido'];
  493.                     $detail->entrega  $item['entrega'];
  494.                     $detail->carga  $item['carga'];
  495.                     $detail->volumes  $item['volumes'];
  496.                     $detail->peso_informado  $item['peso_informado'];
  497.                     $detail->peso_medido  $item['peso_medido'];
  498.                     $detail->comprimento  $item['comprimento'];
  499.                     $detail->largura  $item['largura'];
  500.                     $detail->altura  $item['altura'];
  501.                     $detail->cubagem  $item['cubagem'];
  502.                     $detail->solicitacao_de_carga_id $master->id;
  503.                     $detail->store();
  504.                     
  505.                     $keep_items[] = $detail->id;
  506.                 }
  507.             }
  508.             
  509.             if ($old_items)
  510.             {
  511.                 foreach ($old_items as $old_item)
  512.                 {
  513.                     if (!in_array$old_item->id$keep_items))
  514.                     {
  515.                         $old_item->delete();
  516.                     }
  517.                 }
  518.             }
  519.             TTransaction::close(); // close the transaction
  520.             
  521.             // reload form and session items
  522.             $this->onEdit(array('key'=>$master->id));
  523.             
  524.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  525.         }
  526.         catch (Exception $e// in case of exception
  527.         {
  528.             new TMessage('error'$e->getMessage());
  529.             $this->form->setData$this->form->getData() ); // keep form data
  530.             TTransaction::rollback();
  531.         }
  532.     }
  533.     
  534.     /**
  535.      * Show the page
  536.      */
  537.     public function show()
  538.     {
  539.         // check if the datagrid is already loaded
  540.         if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onReload') )
  541.         {
  542.             $this->onReloadfunc_get_arg(0) );
  543.         }
  544.         parent::show();
  545.     }
  546. }

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 (3)


NR

Como a função onEditDetail é estática a máscara do campo definida no construtor não é utilizada.

Faça o ajuste manual antes de enviar as informações:
  1. <?php
  2. // funcao onEditDetail
  3. $data->detail_peso_informado number_format($item['peso_informado'],2,',','.');
  4. ?>
AR

Comigo acontece algo semelhante,
Quando insiro ítem do detalhe, os campos do mestre com formatação numérica perdem a formatação.
.
RJ

O problema com o TNumeric formatado para o padrão Brasil continua acontecendo no onDetailAdd no Adianti FrameWork 7.4.1