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:
- <?php
- /**
- *
- */
- class TabProdutoFinalForm extends TPage
- {
- protected $form; // form
- private $gridTamanhos;
- use Adianti\Base\AdiantiStandardListTrait;
- public function __construct( $param )
- {
- parent::__construct();
- TPage::include_js("lib/rotinas_js/" . get_class($this) . ".js");
- $this->setDatabase('basePrincipal');
- $this->setActiveRecord('TabProdutoFinal');// Será usado no relacionamento da grade
- // creates the form
- $this->form = new TSillioBootstrapFormBuilder('form_TabProdutoFinal', 'TabProdutoFinalList');
- $this->form->setFormTitle('Produto (Manutenção)');
- $this->form->setFieldSizes('100%');
- // create the form fields
- $prf_codigo = new TEntry('prf_codigo');
- $prf_codigo->setMask('#');
- $prf_codigo->setID('codigoproduto');
- $prf_descricao = new TEntry('prf_descricao');
- $prf_descricao->setID('descricaoproduto');
- $prf_descricao_completa = new TText('prf_descricao_completa');
- $prf_valor = new TSillioMoney('prf_valor');
- $prf_dt_cadastro = new TSillioDate('prf_dt_cadastro');
- $prf_dt_cadastro->setValue( date('d/m/Y') );
- $prf_dt_cadastro->setEditable(false);
- $prf_dthr_alteracao = new TSillioDate('prf_dthr_alteracao');
- $prf_dthr_alteracao->setEditable(false);
- $prf_obs = new TText('prf_obs');
- $prf_referencia = new TEntry('prf_referencia');
- $produto_uid = new THidden('produto_uid');
- $empresa_uid = new THidden('empresa_uid');
- $grupo_uid = new TSillioMultiSearch('grupo_uid', 'TabGrupos', 'grupo_uuid', 'gru_descricao');
- $prf_unidade_uuid = new TSillioMultiSearch('prf_unidade_uuid', 'TabUnidadeMedida', 'uni_uuid', 'uni_sigla', null, false);
- $prf_situacao = new TRadioGroup('prf_situacao');
- $prf_situacao->setLayout('horizontal');
- $prf_situacao->addItems( [ 'A' => 'Ativo', 'I' => 'Inativo' ]);
- $prf_situacao->setValue('A');
- $grupo_uid->setChangeAction( new TAction( array($this, 'onChangeGrupo')) );
- // add the fields
- $this->form->addFields(
- ['', $empresa_uid],
- ['', $produto_uid]
- );
- $this->form->addReqFields(
- ['Código', $prf_codigo ],
- ['Descrição do Produto', $prf_descricao ],
- [ 'Unidade Medida', $prf_unidade_uuid ],
- ['Valor R$', $prf_valor ],
- ['Situação',$prf_situacao]
- )->layout = ['col-sm-2', 'col-sm-4','col-sm-2','col-sm-2','col-sm-2','col-sm-2'];
- $this->form->addFields(
- [ new TLabel('Detalhes do Produto'), $prf_descricao_completa ],
- [ new TLabel('Observações'), $prf_obs ]
- )->layout = ['col-sm-6', 'col-sm-6'];
- $this->form->addFields(
- [ new TLabel('Grupo'), $grupo_uid ],
- [ new TLabel('Referência'), $prf_referencia ],
- [ new TLabel('Data Cadastro'), $prf_dt_cadastro ],
- [ new TLabel('Data Alteração'), $prf_dthr_alteracao ]
- )->layout = ['col-sm-4','col-sm-3','col-sm-2','col-sm-2'];
- $grupo_uid->addValidation("Grupo", new TRequiredValidator);
- // Grid
- $this->gridTamanhos = new BootstrapDatagridWrapper(new TDataGrid);
- $this->gridTamanhos->setHeight(30);
- $this->gridTamanhos->setId('gridTamanhos');
- //colunas
- $col_id = new TDataGridColumn('ptm_uid', '', 'center');
- $col_id2 = new TDataGridColumn('ptm_uid', '', 'center');
- $col_id->setTransformer( function ($value) {
- return '<span onClick="removerTamanho(\'' . $value . '\')"><i class="fa fa-trash red"</i></span>';
- });
- $col_id2->setTransformer( function ($value) {
- return '<span onClick="editarTamanho(\''. $value. '\')"><i class="far fa-edit blue"</i></span>';
- });
- $this->gridTamanhos->addColumn($col_id );
- $this->gridTamanhos->addColumn($col_id2 );
- $this->gridTamanhos->addColumn( new TDataGridColumn('tab_tamanho->tam_descricao', 'Tamanho', 'left', '30%') );
- $this->gridTamanhos->addColumn( new TDataGridColumn('tab_tamanho->tam_sigla', 'Sigla', 'left', '30%') );
- $col_valor = new TDataGridColumn('ptm_valor', 'Valor R$', 'left', '30%');
- $col_valor->setTransformer( function ($value) {
- return number_format($value, 2, ',', '.');
- });
- $this->gridTamanhos->addColumn($col_valor);
- $this->gridTamanhos->width = '100%';
- $div = new TElement('div');
- $div->id = 'containerTamanho';
- $div->style = 'display: none; padding-top: 10px';
- $this->gridTamanhos->createModel();
- $panel = new TPanelGroup('Opções de tamanho:');
- $btnAdd = new TElement('button');
- $btnAdd->type = 'button';
- $btnAdd->class = 'btn btn-sm btn-primary';
- $btnAdd->add('<span><i class="fa fa-plus" style=";padding-right:4px"></i>Adicionar</span>');
- $btnAdd->onClick = '__adianti_ajax_exec("class=TabProdutoFinalForm&method=dgAdicionarTamanho");';
- $panel->add($btnAdd);
- $panel->add($this->gridTamanhos);
- $panel->addFooter('');
- $div->add($panel);
- $this->form->addContent([$div]);
- // set sizes
- $prf_codigo->setSize('100%');
- $prf_descricao->setSize('100%');
- $prf_descricao_completa->setSize('100%');
- $prf_valor->setSize('100%');
- $prf_dt_cadastro->setSize('100%');
- $prf_dthr_alteracao->setSize('100%');
- $prf_obs->setSize('100%');
- $prf_referencia->setSize('100%');
- $produto_uid->setSize('100%');
- $empresa_uid->setSize('100%');
- $grupo_uid->setSize('100%');
- if (!empty($produto_uid))
- {
- $produto_uid->setEditable(FALSE);
- }
- $btn = $this->form->addAction(_t('Save'), new TAction([$this, 'onSave']), 'fa:save');
- $btn->class = 'btn btn-sm btn-primary';
- $this->form->addActionLink(_t('New'), new TAction([$this, 'onEdit']), 'fa:eraser red');
- $container = new TVBox;
- $container->style = 'width: 100%';
- $container->add($this->form);
- parent::add($container);
- }
- /**
- * Save form data
- * @param $param Request
- */
- public function onSave( $param )
- {
- try
- {
- TTransaction::open('basePrincipal');
- //TTransaction::setLogger(new TLoggerSTD); //caso queira logar o SQL em tela
- $this->form->validate();
- $data = $this->form->getData();
- $object = new TabProdutoFinal;
- $object->fromArray( (array) $data);
- $criteria = new TCriteria;
- $criteria->add(new TFilter('prf_codigo','=',$object->prf_codigo));
- $criteria->add(new TFilter('empresa_uid','=',TSillioUtil::getEmpresa()));
- $criteria->add(new TFilter('prf_descricao','<>',$object->prf_descricao));
- $repos = new TRepository('TabProdutoFinal');
- $objects = $repos->load($criteria);
- if (isset($objects[0]))
- {
- $this->form->setData( $this->form->getData() );
- throw new Exception('Este código já está sendo utilizado no produto ' . $objects[0]->prf_descricao . '. Por favor escolha outro código.');
- }
- //Associa os tamanhos.
- $tamanhos_parsed = TSession::getValue('lista_tamanhos');
- if($tamanhos_parsed != null)
- {
- foreach ($tamanhos_parsed as $tamanho)
- {
- //$tamanho
- $object->addTabProdutoTamanhos($tamanho);
- }
- }
- $object->prf_dthr_alteracao = date('d/m/Y h:i:s a', time());
- $object->empresa_uid = TSillioUtil::getEmpresa();
- $object->store();
- $data->produto_uid = $object->produto_uid;
- $this->form->setData($data);
- TTransaction::close();
- self::onChangeGrupo(array('grupo_uid'=>[$object->toArray()['grupo_uid']]) );
- $tamanhos_parsed = TSession::getValue('lista_tamanhos');
- if($tamanhos_parsed != null)
- {
- foreach ($tamanhos_parsed as $tamanho)
- {
- $row = $this->gridTamanhos->addItem($tamanho);
- $row->id = $tamanho->ptm_uid;
- }
- }
- new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- $this->form->setData( $this->form->getData() );
- TTransaction::rollback();
- }
- }
- /**
- * Clear form data
- * @param $param Request
- */
- public function onClear( $param )
- {
- $this->form->clear(TRUE);
- TSession::setValue('lista_tamanhos', array());
- }
- /**
- * Load object to form data
- * @param $param Request
- */
- public function onEdit( $param )
- {
- try
- {
- TSession::setValue('lista_tamanhos', array());
- if (isset($param['key']))
- {
- $key = $param['key'];
- TTransaction::open('basePrincipal');
- $object = new TabProdutoFinal($key);
- TSession::setValue('lista_tamanhos', $object->getTabProdutoTamanhos());
- $this->form->setData($object);
- self::onChangeGrupo(array('grupo_uid'=>[$object->toArray()['grupo_uid']]) );
- TScript::create('setTimeout(function(){$("#descricaoproduto").focus()}, 500)');
- TTransaction::close();
- TTransaction::open('basePrincipal');
- $this->gridTamanhos->clear();
- $data = $this->form->getData();
- $tamanhos_parsed = TSession::getValue('lista_tamanhos');
- if($tamanhos_parsed != null)
- {
- foreach ($tamanhos_parsed as $tamanho)
- {
- $row = $this->gridTamanhos->addItem($tamanho);
- $row->id = $tamanho->ptm_uid;
- }
- }
- TTransaction::close();
- }
- else
- {
- $this->form->clear(TRUE);
- TSession::setValue('lista_tamanhos', array());
- self::onChangeGrupo(null);
- TScript::create('setTimeout(function(){$("#codigoproduto").focus()}, 500)');
- }
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- public static function onChangeGrupo ($param) {
- $opcao = isset($param['grupo_uid']) ? $param['grupo_uid'] : null;
- if(isset($opcao))
- {
- TTransaction::open('basePrincipal');
- $grupo = new TabGrupos($opcao[0]);
- TTransaction::close();
- if ($grupo->gru_hab_tamanho == 'S')
- {
- TScript::create("document.getElementById('containerTamanho').style.display = 'block'");
- }
- else
- {
- TScript::create("document.getElementById('containerTamanho').style.display = 'none'");
- }
- }
- else
- {
- TScript::create("document.getElementById('containerTamanho').style.display = 'none'");
- }
- }
- function show()
- {
- $this->onReload();
- parent::show();
- }
- public static function dgAdicionarTamanho( $param )
- {
- $criteria = new TCriteria;
- $criteria->add(new TFilter('empresa_uid', '=', TSession::getValue('empresa_uid')));
- $form = new BootstrapFormBuilder('input_tamanho');
- $opcoes = new TSillioMultiSearch('tam_uuid', 'TabTamanho', 'tam_uuid', 'tam_descricao', $criteria, false);
- $valor = new TSillioMoney('ptm_valor');
- $lblValor = new TLabel('R$ Valor');
- $valor->setSize("100%");
- $lblValor->setSize("100%");
- $form->addFields([new TLabel('Tamanho...')]);
- $form->addFields([$opcoes]);
- $form->addFields([$lblValor], [$valor])->layout = ['col-sm-4', 'col-sm-8'];
- $btnAdd = new TElement('button');
- $btnAdd->type = 'button';
- $btnAdd->class = 'btn btn-sm btn-primary';
- $btnAdd->add('<span><i class="fa fa-plus" style=";padding-right:4px"></i>Adicionar</span>');
- $btnAdd->onClick = 'validarAdicionar()';
- $form->add($btnAdd);
- new TInputDialog('Definição de valor por tamanho', $form);
- }
- public static function editarTamanho( $param )
- {
- $criteria = new TCriteria;
- $criteria->add(new TFilter('empresa_uid', '=', TSession::getValue('empresa_uid')));
- $form = new BootstrapFormBuilder('input_tamanho');
- // $opcoes = new TSillioMultiSearch('tam_uuid', 'TabTamanho', 'tam_uuid', 'tam_descricao', $criteria, false);
- $valor = new TSillioMoney('ptm_valor');
- $string = 'teste';
- $lblValor = new TLabel('R$ Valor');
- $valor->setSize("100%");
- $lblValor->setSize("100%");
- /* $form->addFields([new TLabel('Tamanho...')]); */
- //$form->addFields([$opcoes]);
- $form->addFields([$lblValor], [$valor])->layout = ['col-sm-4', 'col-sm-8'];
- $tam_descricao = 'teste';
- $btnAdd = new TElement('button');
- $btnAdd->type = 'button';
- $btnAdd->class = 'btn btn-sm btn-primary';
- $btnAdd->add('<span><i class="fa fa-plus" style=";padding-right:4px"></i>Salvar</span>');
- $btnAdd->onClick = 'validarEditar()';
- $form->add($btnAdd);
- new TInputDialog('Editar valor do Tamanho ' . $tam_descricao , $form);
- }
- public function aoAdicionarTamanho($param)
- {
- $tam_uuidAR = $param["tam_uuid"];
- if(isset($tam_uuidAR))
- {
- $tam_uuid = $tam_uuidAR[0];
- TTransaction::open('basePrincipal');
- $tabTamanho = new TabTamanho($tam_uuid);
- TTransaction::close('basePrincipal');
- $ptm_uid = TSillioUtil::getGUID();
- $pTamanho = new TabProdutoTamanhos();
- $pTamanho->ptm_uid = $ptm_uid;
- $pTamanho->ptm_valor = TSillioUtil::parseNumeric($param['ptm_valor']);
- $pTamanho->tamanho_uid = $tam_uuid;
- $pTamanho->empresa_uid = TSillioUtil::getEmpresa();
- $pTamanho->set_tab_tamanho($tabTamanho);
- $tamanhos_parsed = TSession::getValue('lista_tamanhos');
- if ($tamanhos_parsed == null)
- {
- $tamanhos_parsed = array();
- }
- $tamanhos_parsed[] = $pTamanho;
- TSession::setValue('lista_tamanhos', $tamanhos_parsed);
- $row = $this->gridTamanhos->addItem($pTamanho);
- $row->id = $ptm_uid;
- $data = $this->form->getData();
- TDataGrid::replaceRowById('gridTamanhos', $ptm_uid, $row);
- }
- }
- public function aoeditarTamanho($param)
- {
- $tam_uuidAR = $param["tam_uuid"];
- if(isset($tam_uuidAR))
- {
- $tam_uuid = $tam_uuidAR[0];
- TTransaction::open('basePrincipal');
- $tabTamanho = new TabTamanho($tam_uuid);
- TTransaction::close('basePrincipal');
- //$ptm_uid = TSillioUtil::getGUID();
- $pTamanho = new TabProdutoTamanhos();
- // $pTamanho->ptm_uid = $ptm_uid;
- $pTamanho->ptm_valor = TSillioUtil::parseNumeric($param['ptm_valor']);
- $pTamanho->tamanho_uid = $tam_uuid;
- $pTamanho->empresa_uid = TSillioUtil::getEmpresa();
- $pTamanho->set_tab_tamanho($tabTamanho);
- $tamanhos_parsed = TSession::getValue('lista_tamanhos');
- if ($tamanhos_parsed == null)
- {
- $tamanhos_parsed = array();
- }
- $tamanhos_parsed[] = $pTamanho;
- TSession::setValue('lista_tamanhos', $tamanhos_parsed);
- $row = $this->gridTamanhos->addItem($pTamanho);
- $row->id = $ptm_uid;
- $data = $this->form->getData();
- TDataGrid::replaceRowById('gridTamanhos', $ptm_uid, $row);
- }
- }
- public function aoRemoverTamanho($param){
- $ref = $param['ref'];
- TTransaction::open('basePrincipal');
- $criteria = new TCriteria;
- $criteria->add(new TFilter('produto_tamanho_uid', '=', $ref));
- $pedidoItemRepo = new TRepository('TabPedidoItem');
- $pedidoItens = $pedidoItemRepo->load($criteria);
- TTransaction::close();
- if(count($pedidoItens) == 0)
- {
- $tamanhos_parsed = TSession::getValue('lista_tamanhos');
- foreach ($tamanhos_parsed as $tamanho)
- {
- if ($tamanho->ptm_uid == $ref)
- {
- $idx = array_search($tamanho, $tamanhos_parsed);
- unset($tamanhos_parsed[$idx]);
- }
- }
- TSession::setValue('lista_tamanhos', $tamanhos_parsed);
- TDataGrid::removeRowById('gridTamanhos', $ref);
- }
- else
- {
- new TMessage('error', 'Essa opção já está associada a um pedido e não pode ser removida');
- }
- }
- }
- ?>