Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Como alterar uma coluna do data grid? Olá, em um dos meus formulários, quando o usuario escolhe pizza, abre uma outra aba para escolher os tamanhos e valores, porém recentemente criei uma função de ditar somente o valor do tamanho indicado, porém não faço a minima ideia de como mudar somente ele. Conforme indicado a baixo pela imagem, quero inserir o valor indicado do passo 2 no valor do passo 4, porém não faço a minima ide...
SD
Como alterar uma coluna do data grid?  
Olá, em um dos meus formulários, quando o usuario escolhe pizza, abre uma outra aba para escolher os tamanhos e valores, porém recentemente criei uma função de ditar somente o valor do tamanho indicado, porém não faço a minima ideia de como mudar somente ele. Conforme indicado a baixo pela imagem, quero inserir o valor indicado do passo 2 no valor do passo 4, porém não faço a minima ideia, o meu form esta assim:

  1. <?php
  2. /**
  3.  * 
  4.  */
  5. class TabProdutoFinalForm extends TPage
  6. {
  7.     protected $form// form
  8.     private $gridTamanhos;
  9.     use Adianti\Base\AdiantiStandardListTrait;    
  10.     
  11.     public function __construct$param )
  12.     {
  13.         parent::__construct();
  14.         TPage::include_js("lib/rotinas_js/" get_class($this) . ".js");
  15.         $this->setDatabase('basePrincipal');
  16.         $this->setActiveRecord('TabProdutoFinal');// Será usado no relacionamento da grade
  17.         
  18.         // creates the form
  19.         $this->form = new TSillioBootstrapFormBuilder('form_TabProdutoFinal''TabProdutoFinalList');
  20.         $this->form->setFormTitle('Produto (Manutenção)');
  21.         $this->form->setFieldSizes('100%');
  22.         // create the form fields
  23.         $prf_codigo = new TEntry('prf_codigo');
  24.         $prf_codigo->setMask('#');
  25.         $prf_codigo->setID('codigoproduto');
  26.         $prf_descricao = new TEntry('prf_descricao');
  27.         $prf_descricao->setID('descricaoproduto');        
  28.         $prf_descricao_completa = new TText('prf_descricao_completa');
  29.         $prf_valor = new TSillioMoney('prf_valor');
  30.         $prf_dt_cadastro = new TSillioDate('prf_dt_cadastro');
  31.         $prf_dt_cadastro->setValuedate('d/m/Y') );
  32.         $prf_dt_cadastro->setEditable(false);
  33.         $prf_dthr_alteracao = new TSillioDate('prf_dthr_alteracao');
  34.         $prf_dthr_alteracao->setEditable(false);
  35.         $prf_obs = new TText('prf_obs');
  36.         $prf_referencia = new TEntry('prf_referencia');
  37.         $produto_uid = new THidden('produto_uid');
  38.         $empresa_uid = new THidden('empresa_uid');
  39.         $grupo_uid = new TSillioMultiSearch('grupo_uid''TabGrupos''grupo_uuid''gru_descricao');
  40.         $prf_unidade_uuid = new TSillioMultiSearch('prf_unidade_uuid''TabUnidadeMedida''uni_uuid''uni_sigla'nullfalse);
  41.         $prf_situacao = new TRadioGroup('prf_situacao');
  42.         $prf_situacao->setLayout('horizontal');
  43.         $prf_situacao->addItems( [ 'A' => 'Ativo''I' => 'Inativo' ]);
  44.         $prf_situacao->setValue('A');
  45.         $grupo_uid->setChangeAction( new TAction( array($this'onChangeGrupo')) );
  46.    
  47.         // add the fields
  48.         $this->form->addFields(
  49.             [''$empresa_uid],
  50.             [''$produto_uid]
  51.         );
  52.         $this->form->addReqFields(
  53.             ['Código'$prf_codigo ],
  54.             ['Descrição do Produto'$prf_descricao ],
  55.             [ 'Unidade Medida'$prf_unidade_uuid ],
  56.             ['Valor R$'$prf_valor ],
  57.             ['Situação',$prf_situacao]
  58.         )->layout = ['col-sm-2''col-sm-4','col-sm-2','col-sm-2','col-sm-2','col-sm-2'];
  59.         $this->form->addFields(
  60.             [ new TLabel('Detalhes do Produto'), $prf_descricao_completa ],
  61.             [ new TLabel('Observações'), $prf_obs ]
  62.         )->layout = ['col-sm-6''col-sm-6'];
  63.         
  64.         $this->form->addFields(
  65.             [ new TLabel('Grupo'), $grupo_uid ],
  66.             [ new TLabel('Referência'), $prf_referencia ],
  67.             [ new TLabel('Data Cadastro'), $prf_dt_cadastro ],
  68.             [ new TLabel('Data Alteração'), $prf_dthr_alteracao ]
  69.         )->layout = ['col-sm-4','col-sm-3','col-sm-2','col-sm-2'];
  70.         $grupo_uid->addValidation("Grupo", new TRequiredValidator);
  71.         // Grid
  72.         $this->gridTamanhos = new BootstrapDatagridWrapper(new TDataGrid);
  73.         $this->gridTamanhos->setHeight(30);
  74.         $this->gridTamanhos->setId('gridTamanhos');        
  75.         //colunas
  76.         $col_id =  new TDataGridColumn('ptm_uid',  '',  'center');
  77.         $col_id2 =  new TDataGridColumn('ptm_uid',  '',  'center');
  78.         $col_id->setTransformer( function ($value) {
  79.             return '<span onClick="removerTamanho(\'' $value '\')"><i class="fa fa-trash red"</i></span>';
  80.         }); 
  81.          $col_id2->setTransformer( function ($value) {
  82.             return '<span onClick="editarTamanho(\''$value'\')"><i class="far fa-edit blue"</i></span>';
  83.         });  
  84.         $this->gridTamanhos->addColumn($col_id );
  85.         $this->gridTamanhos->addColumn($col_id2 );
  86.         $this->gridTamanhos->addColumn( new TDataGridColumn('tab_tamanho->tam_descricao',  'Tamanho',  'left',   '30%') );
  87.         $this->gridTamanhos->addColumn( new TDataGridColumn('tab_tamanho->tam_sigla',  'Sigla',  'left',   '30%') );
  88.         $col_valor =  new TDataGridColumn('ptm_valor''Valor R$''left',   '30%');
  89.         $col_valor->setTransformer( function ($value) {
  90.             return number_format($value2',''.');
  91.         });
  92.         $this->gridTamanhos->addColumn($col_valor);
  93.         $this->gridTamanhos->width '100%';
  94.         $div = new TElement('div');
  95.         $div->id 'containerTamanho';
  96.         $div->style 'display: none; padding-top: 10px';
  97.         $this->gridTamanhos->createModel();
  98.         $panel = new TPanelGroup('Opções de tamanho:');
  99.         $btnAdd = new TElement('button');
  100.         $btnAdd->type 'button';
  101.         $btnAdd->class 'btn btn-sm btn-primary';
  102.         $btnAdd->add('<span><i class="fa fa-plus" style=";padding-right:4px"></i>Adicionar</span>');
  103.         $btnAdd->onClick '__adianti_ajax_exec("class=TabProdutoFinalForm&method=dgAdicionarTamanho");';
  104.         $panel->add($btnAdd);
  105.         $panel->add($this->gridTamanhos);
  106.         $panel->addFooter('');
  107.         $div->add($panel);
  108.         
  109.         $this->form->addContent([$div]); 
  110.         // set sizes
  111.         $prf_codigo->setSize('100%');
  112.         $prf_descricao->setSize('100%');
  113.         $prf_descricao_completa->setSize('100%');
  114.         $prf_valor->setSize('100%');
  115.         $prf_dt_cadastro->setSize('100%');
  116.         $prf_dthr_alteracao->setSize('100%');
  117.         $prf_obs->setSize('100%');
  118.         $prf_referencia->setSize('100%');
  119.         $produto_uid->setSize('100%');
  120.         $empresa_uid->setSize('100%');
  121.         $grupo_uid->setSize('100%');
  122.   
  123.         if (!empty($produto_uid))
  124.         {
  125.             $produto_uid->setEditable(FALSE);
  126.         }
  127.         $btn $this->form->addAction(_t('Save'), new TAction([$this'onSave']), 'fa:save');
  128.         $btn->class 'btn btn-sm btn-primary';
  129.         $this->form->addActionLink(_t('New'),  new TAction([$this'onEdit']), 'fa:eraser red');
  130.         
  131.         $container = new TVBox;
  132.         $container->style 'width: 100%';
  133.         $container->add($this->form);
  134.         parent::add($container);
  135.     }
  136.     /**
  137.      * Save form data
  138.      * @param $param Request
  139.      */
  140.     public function onSave$param )
  141.     {
  142.         try
  143.         {
  144.             TTransaction::open('basePrincipal');
  145.             
  146.             //TTransaction::setLogger(new TLoggerSTD); //caso queira logar o SQL em tela
  147.             $this->form->validate();
  148.             $data $this->form->getData();
  149.             
  150.             $object = new TabProdutoFinal;
  151.             
  152.             $object->fromArray( (array) $data);
  153.             $criteria = new TCriteria;
  154.             $criteria->add(new TFilter('prf_codigo','=',$object->prf_codigo));
  155.             $criteria->add(new TFilter('empresa_uid','=',TSillioUtil::getEmpresa()));
  156.             $criteria->add(new TFilter('prf_descricao','<>',$object->prf_descricao));
  157.             $repos = new TRepository('TabProdutoFinal');
  158.             $objects $repos->load($criteria);
  159.             if (isset($objects[0]))
  160.             {
  161.                $this->form->setData$this->form->getData() );
  162.                throw new Exception('Este código já está sendo utilizado no produto ' $objects[0]->prf_descricao '. Por favor escolha outro código.');
  163.             }
  164.             //Associa os tamanhos.
  165.             $tamanhos_parsed TSession::getValue('lista_tamanhos');
  166.             if($tamanhos_parsed != null)
  167.             {
  168.                 foreach ($tamanhos_parsed as $tamanho)
  169.                 {
  170.                     //$tamanho
  171.                     $object->addTabProdutoTamanhos($tamanho);
  172.                 }
  173.             }
  174.             $object->prf_dthr_alteracao date('d/m/Y h:i:s a'time());
  175.             $object->empresa_uid TSillioUtil::getEmpresa();
  176.             $object->store();
  177.             $data->produto_uid $object->produto_uid;
  178.             
  179.             $this->form->setData($data);
  180.             TTransaction::close();
  181.             self::onChangeGrupo(array('grupo_uid'=>[$object->toArray()['grupo_uid']]) );
  182.             $tamanhos_parsed TSession::getValue('lista_tamanhos');
  183.             if($tamanhos_parsed != null)
  184.             {
  185.                 foreach ($tamanhos_parsed as $tamanho)
  186.                 {
  187.                     $row $this->gridTamanhos->addItem($tamanho);
  188.                     $row->id $tamanho->ptm_uid;
  189.                 }
  190.             }
  191.             new TMessage('info'AdiantiCoreTranslator::translate('Record saved'));
  192.         }
  193.         catch (Exception $e)
  194.         {
  195.             new TMessage('error'$e->getMessage());
  196.             $this->form->setData$this->form->getData() );
  197.             TTransaction::rollback(); 
  198.         }
  199.     }
  200.     /**
  201.      * Clear form data
  202.      * @param $param Request
  203.      */
  204.     public function onClear$param )
  205.     {
  206.         $this->form->clear(TRUE);
  207.         TSession::setValue('lista_tamanhos', array());        
  208.     }
  209.     
  210.     /**
  211.      * Load object to form data
  212.      * @param $param Request
  213.      */
  214.     public function onEdit$param )
  215.     {
  216.         try
  217.         {
  218.             TSession::setValue('lista_tamanhos', array());
  219.             
  220.             if (isset($param['key']))
  221.             {
  222.                 $key $param['key'];
  223.                 TTransaction::open('basePrincipal');
  224.                 $object = new TabProdutoFinal($key);
  225.                 TSession::setValue('lista_tamanhos'$object->getTabProdutoTamanhos());
  226.                 $this->form->setData($object);
  227.                 self::onChangeGrupo(array('grupo_uid'=>[$object->toArray()['grupo_uid']]) );
  228.                 TScript::create('setTimeout(function(){$("#descricaoproduto").focus()}, 500)');
  229.                 TTransaction::close();
  230.                 TTransaction::open('basePrincipal');
  231.                 $this->gridTamanhos->clear();
  232.                 $data $this->form->getData();
  233.                 $tamanhos_parsed TSession::getValue('lista_tamanhos');
  234.                 if($tamanhos_parsed != null)
  235.                 {
  236.                     foreach ($tamanhos_parsed as $tamanho)
  237.                     {
  238.                         $row $this->gridTamanhos->addItem($tamanho);
  239.                         $row->id $tamanho->ptm_uid;
  240.                     }
  241.                 }
  242.                 TTransaction::close();
  243.                 
  244.             }
  245.             else
  246.             {
  247.                 $this->form->clear(TRUE);
  248.                 TSession::setValue('lista_tamanhos', array());
  249.                 self::onChangeGrupo(null);
  250.                 TScript::create('setTimeout(function(){$("#codigoproduto").focus()}, 500)');
  251.             }
  252.         }
  253.         catch (Exception $e)
  254.         {
  255.             new TMessage('error'$e->getMessage());
  256.             TTransaction::rollback();
  257.         }
  258.     }
  259.     public static function onChangeGrupo ($param) {
  260.         $opcao = isset($param['grupo_uid']) ? $param['grupo_uid'] : null;
  261.         if(isset($opcao))
  262.         {
  263.             TTransaction::open('basePrincipal');
  264.             $grupo = new TabGrupos($opcao[0]);
  265.             TTransaction::close();
  266.             if ($grupo->gru_hab_tamanho == 'S')
  267.             {
  268.                 TScript::create("document.getElementById('containerTamanho').style.display = 'block'");
  269.             }
  270.             else
  271.             {
  272.                 TScript::create("document.getElementById('containerTamanho').style.display = 'none'");
  273.             }
  274.         }
  275.         else
  276.         {
  277.             TScript::create("document.getElementById('containerTamanho').style.display = 'none'");
  278.         }
  279.     }
  280.    
  281.     function show()
  282.     {
  283.         $this->onReload();
  284.         parent::show();
  285.     }
  286.     public static function dgAdicionarTamanho$param )
  287.     {
  288.         $criteria = new TCriteria;
  289.         $criteria->add(new TFilter('empresa_uid''='TSession::getValue('empresa_uid')));
  290.         $form = new BootstrapFormBuilder('input_tamanho');
  291.         $opcoes = new TSillioMultiSearch('tam_uuid''TabTamanho''tam_uuid''tam_descricao'$criteriafalse);
  292.         $valor = new TSillioMoney('ptm_valor');
  293.         $lblValor = new TLabel('R$ Valor');
  294.         $valor->setSize("100%");
  295.         $lblValor->setSize("100%");
  296.         $form->addFields([new TLabel('Tamanho...')]);
  297.         $form->addFields([$opcoes]);
  298.         $form->addFields([$lblValor], [$valor])->layout = ['col-sm-4''col-sm-8'];
  299.         $btnAdd = new TElement('button');
  300.         $btnAdd->type 'button';
  301.         $btnAdd->class 'btn btn-sm btn-primary';
  302.         $btnAdd->add('<span><i class="fa fa-plus" style=";padding-right:4px"></i>Adicionar</span>');
  303.         $btnAdd->onClick 'validarAdicionar()';        
  304.         $form->add($btnAdd);
  305.     
  306.         new TInputDialog('Definição de valor por tamanho'$form);
  307.     }
  308.     public static function editarTamanho$param )
  309.     {
  310.         $criteria = new TCriteria;
  311.         $criteria->add(new TFilter('empresa_uid''='TSession::getValue('empresa_uid')));
  312.         $form = new BootstrapFormBuilder('input_tamanho');
  313.        // $opcoes = new TSillioMultiSearch('tam_uuid', 'TabTamanho', 'tam_uuid', 'tam_descricao', $criteria, false);
  314.         $valor = new TSillioMoney('ptm_valor');
  315.         $string 'teste';
  316.         $lblValor = new TLabel('R$ Valor');
  317.         $valor->setSize("100%");
  318.         $lblValor->setSize("100%");
  319.       /*   $form->addFields([new TLabel('Tamanho...')]); */
  320.         //$form->addFields([$opcoes]);
  321.         $form->addFields([$lblValor], [$valor])->layout = ['col-sm-4''col-sm-8'];
  322.         $tam_descricao 'teste';
  323.         $btnAdd = new TElement('button');
  324.         $btnAdd->type 'button';
  325.         $btnAdd->class 'btn btn-sm btn-primary';
  326.         $btnAdd->add('<span><i class="fa fa-plus" style=";padding-right:4px"></i>Salvar</span>');
  327.         $btnAdd->onClick 'validarEditar()';        
  328.         $form->add($btnAdd);
  329.     
  330.         new TInputDialog('Editar valor do Tamanho ' $tam_descricao  $form);
  331.     }
  332.     public function aoAdicionarTamanho($param)
  333.     {
  334.         $tam_uuidAR $param["tam_uuid"];
  335.         
  336.         if(isset($tam_uuidAR))
  337.         {
  338.             $tam_uuid $tam_uuidAR[0];
  339.             TTransaction::open('basePrincipal');
  340.             $tabTamanho = new TabTamanho($tam_uuid);
  341.             TTransaction::close('basePrincipal');           
  342.             $ptm_uid TSillioUtil::getGUID();
  343.             $pTamanho = new TabProdutoTamanhos();
  344.             $pTamanho->ptm_uid $ptm_uid;
  345.             $pTamanho->ptm_valor TSillioUtil::parseNumeric($param['ptm_valor']);
  346.             $pTamanho->tamanho_uid $tam_uuid;
  347.             $pTamanho->empresa_uid TSillioUtil::getEmpresa();
  348.             $pTamanho->set_tab_tamanho($tabTamanho); 
  349.             $tamanhos_parsed TSession::getValue('lista_tamanhos');
  350.            
  351.             if ($tamanhos_parsed == null)
  352.             {
  353.                 $tamanhos_parsed = array();
  354.             }
  355.             $tamanhos_parsed[] = $pTamanho;
  356.             TSession::setValue('lista_tamanhos'$tamanhos_parsed);
  357.             $row $this->gridTamanhos->addItem($pTamanho);
  358.             $row->id $ptm_uid;
  359.             $data $this->form->getData();
  360.             TDataGrid::replaceRowById('gridTamanhos'$ptm_uid$row);
  361.         }
  362.         
  363.     }
  364.     public function aoeditarTamanho($param)
  365.     {
  366.         $tam_uuidAR $param["tam_uuid"];
  367.         
  368.         if(isset($tam_uuidAR))
  369.         {
  370.             $tam_uuid $tam_uuidAR[0];
  371.             TTransaction::open('basePrincipal');
  372.             $tabTamanho = new TabTamanho($tam_uuid);
  373.             TTransaction::close('basePrincipal');           
  374.             //$ptm_uid = TSillioUtil::getGUID();
  375.             $pTamanho = new TabProdutoTamanhos();
  376.            // $pTamanho->ptm_uid = $ptm_uid;
  377.             $pTamanho->ptm_valor TSillioUtil::parseNumeric($param['ptm_valor']);
  378.             $pTamanho->tamanho_uid $tam_uuid;
  379.             $pTamanho->empresa_uid TSillioUtil::getEmpresa();
  380.             $pTamanho->set_tab_tamanho($tabTamanho); 
  381.             $tamanhos_parsed TSession::getValue('lista_tamanhos');
  382.             if ($tamanhos_parsed == null)
  383.             {
  384.                 $tamanhos_parsed = array();
  385.             }
  386.             $tamanhos_parsed[] = $pTamanho;
  387.             TSession::setValue('lista_tamanhos'$tamanhos_parsed);
  388.             $row $this->gridTamanhos->addItem($pTamanho);
  389.             $row->id $ptm_uid;
  390.             $data $this->form->getData();
  391.             TDataGrid::replaceRowById('gridTamanhos'$ptm_uid$row);
  392.         }
  393.         
  394.         
  395.         
  396.     }
  397.     public function aoRemoverTamanho($param){
  398.         $ref $param['ref'];
  399.         TTransaction::open('basePrincipal');
  400.         $criteria = new TCriteria;
  401.         $criteria->add(new TFilter('produto_tamanho_uid''='$ref));
  402.         $pedidoItemRepo = new TRepository('TabPedidoItem');
  403.         $pedidoItens $pedidoItemRepo->load($criteria);
  404.         TTransaction::close();
  405.         
  406.         if(count($pedidoItens) == 0)
  407.         {
  408.             $tamanhos_parsed TSession::getValue('lista_tamanhos');
  409.             foreach ($tamanhos_parsed as $tamanho)
  410.             {
  411.                if ($tamanho->ptm_uid == $ref)
  412.                {
  413.                 $idx array_search($tamanho$tamanhos_parsed);
  414.                 unset($tamanhos_parsed[$idx]);
  415.                }
  416.             }
  417.             
  418.                      
  419.             TSession::setValue('lista_tamanhos'$tamanhos_parsed);
  420.             TDataGrid::removeRowById('gridTamanhos'$ref);
  421.         }
  422.         else
  423.         {
  424.             new TMessage('error''Essa opção já está associada a um pedido e não pode ser removida');
  425.         }
  426.     }
  427. }
  428. ?>

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