Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Não incluir um valor da TDBCombo na Grid Master Detalhe Bom dia! Tenho um formulário chamado Romaneio de Entrega, tenho que incluir as solicitações de entrega no Mestre Detalhe, porém eu preciso que o botão "Incluir" (que pega o número da Solicitação informada no TDBCombo) só carregue os dados se a solicitação não estiver presente na Grid. Na imagem em anexo mostro o erro: onde a entrega de número 1 foi adicionada na grid duas vezes, e ...
RF
Não incluir um valor da TDBCombo na Grid Master Detalhe  
Bom dia!
Tenho um formulário chamado Romaneio de Entrega, tenho que incluir as solicitações de entrega no Mestre Detalhe, porém eu preciso que o botão "Incluir" (que pega o número da Solicitação informada no TDBCombo) só carregue os dados se a solicitação não estiver presente na Grid.
Na imagem em anexo mostro o erro: onde a entrega de número 1 foi adicionada na grid duas vezes, e a entrega 3 foi incluída (pelo botão "Incluir"). Não queria esse comportamento, preciso que o botão incluir "veja" que já tem a solicitação na grid, não inclua e dê uma mensagem ao usuário, indicando que a "entrega" já foi inclusa no Romaneio.

  1. <?php
  2. class romaneioDeEntrega extends TPage
  3. {
  4.     protected $form;
  5.     private $formFields = [];
  6.     private static $database 'transpalog';
  7.     private static $activeRecord 'RomaneioEntrega';
  8.     private static $primaryKey 'id';
  9.     private static $formName 'form_RomaneioEntrega';
  10.     use BuilderMasterDetailTrait;
  11.     /**
  12.      * Form constructor
  13.      * @param $param Request
  14.      */
  15.     public function __construct$param )
  16.     {
  17.         parent::__construct();
  18.         if(!empty($param['target_container']))
  19.         {
  20.             $this->adianti_target_container $param['target_container'];
  21.         }
  22.         // creates the form
  23.         $this->form = new BootstrapFormBuilder(self::$formName);
  24.         // define the form title
  25.         $this->form->setFormTitle("Romaneio de Entrega");
  26.         $criteria_status = new TCriteria();
  27.         $filterVar "2";
  28.         $criteria_status->add(new TFilter('id''<='$filterVar)); 
  29.         $status = new TDBCombo('status''transpalog''StatusSolicitacao''id''{descricao}','id asc' $criteria_status );
  30.         $id = new THidden('id');
  31.         $unidade = new THidden('unidade');
  32.         $motorista_id = new TDBCombo('motorista_id''transpalog''Motorista''id''{nome}','id asc'  );
  33.         $veiculo_id = new TCombo('veiculo_id');
  34.         $numero = new TEntry('numero');
  35.         $serie = new TEntry('serie');
  36.         $data_lancamento = new TDateTime('data_lancamento');
  37.         $data_alteracao = new TDateTime('data_alteracao');
  38.         $data_emissao = new TDate('data_emissao');
  39.         $user_lancamento = new TEntry('user_lancamento');
  40.         $user_emissao = new TEntry('user_emissao');
  41.         $NumEntrega = new TDBCombo('NumEntrega''transpalog''Entrega''id''{numero_entrega}','id asc'  );
  42.         $button_incluir_itens_romaneio_entrega_fk_romaneio = new TButton('button_incluir_itens_romaneio_entrega_fk_romaneio');
  43.         $itens_romaneio_entrega_fk_romaneio_id = new THidden('itens_romaneio_entrega_fk_romaneio_id');
  44.         $button_adicionar_itens_romaneio_entrega_fk_romaneio = new TButton('button_adicionar_itens_romaneio_entrega_fk_romaneio');
  45.         $itens_romaneio_entrega_fk_romaneio_solicitacao = new TDBCombo('itens_romaneio_entrega_fk_romaneio_solicitacao''transpalog''Entrega''id''{numero_entrega}','id asc'  );
  46.         $itens_romaneio_entrega_fk_romaneio_remetente_id = new TDBCombo('itens_romaneio_entrega_fk_romaneio_remetente_id''transpalog''Embarcador''id''{razao_social}','id asc'  );
  47.         $itens_romaneio_entrega_fk_romaneio_destinatario_id = new TDBCombo('itens_romaneio_entrega_fk_romaneio_destinatario_id''transpalog''Embarcador''id''{razao_social}','id asc'  );
  48.         $itens_romaneio_entrega_fk_romaneio_volume = new TNumeric('itens_romaneio_entrega_fk_romaneio_volume''0'',''.' );
  49.         $itens_romaneio_entrega_fk_romaneio_peso = new TNumeric('itens_romaneio_entrega_fk_romaneio_peso''3'',''.' );
  50.         $itens_romaneio_entrega_fk_romaneio_cubagem = new TNumeric('itens_romaneio_entrega_fk_romaneio_cubagem''3'',''.' );
  51.         $itens_romaneio_entrega_fk_romaneio_valor_nfe = new TNumeric('itens_romaneio_entrega_fk_romaneio_valor_nfe''2''''' );
  52.         $itens_romaneio_entrega_fk_romaneio_ocoren = new TDBCombo('itens_romaneio_entrega_fk_romaneio_ocoren''transpalog''OcorenDePara''id''{descricao}','id asc'  );
  53.         $motorista_id->setChangeAction(new TAction([$this,'onChangemotorista_id']));
  54.         $veiculo_id->setChangeAction(new TAction([$this,'onPreencheSerie']));
  55.         $motorista_id->addValidation("Motorista", new TRequiredValidator()); 
  56.         $veiculo_id->addValidation("Veículo", new TRequiredValidator()); 
  57.         $serie->setMaxLength(5);
  58.         $button_incluir_itens_romaneio_entrega_fk_romaneio->setAction(new TAction([$this'onIncluir']), "Incluir");
  59.         $button_adicionar_itens_romaneio_entrega_fk_romaneio->setAction(new TAction([$this'onAddDetailItensRomaneioEntregaFkRomaneio'],['static' => 1]), "Adicionar");
  60.         $button_incluir_itens_romaneio_entrega_fk_romaneio->addStyleClass('btn-default');
  61.         $button_adicionar_itens_romaneio_entrega_fk_romaneio->addStyleClass('btn-default');
  62.         $button_adicionar_itens_romaneio_entrega_fk_romaneio->setImage('fas:plus #2ecc71');
  63.         $button_incluir_itens_romaneio_entrega_fk_romaneio->setImage('fas:cloud-download-alt #69aa46');
  64.         $button_adicionar_itens_romaneio_entrega_fk_romaneio->id '60be619532d84';
  65.         $data_emissao->setMask('dd/mm/yyyy');
  66.         $data_alteracao->setMask('dd/mm/yyyy hh:ii');
  67.         $data_lancamento->setMask('dd/mm/yyyy hh:ii');
  68.         $data_emissao->setDatabaseMask('yyyy-mm-dd');
  69.         $data_alteracao->setDatabaseMask('yyyy-mm-dd hh:ii');
  70.         $data_lancamento->setDatabaseMask('yyyy-mm-dd hh:ii');
  71.         $serie->setEditable(false);
  72.         $status->setEditable(false);
  73.         $numero->setEditable(false);
  74.         $data_emissao->setEditable(false);
  75.         $user_emissao->setEditable(false);
  76.         $data_alteracao->setEditable(false);
  77.         $data_lancamento->setEditable(false);
  78.         $user_lancamento->setEditable(false);
  79.         $itens_romaneio_entrega_fk_romaneio_peso->setEditable(false);
  80.         $itens_romaneio_entrega_fk_romaneio_volume->setEditable(false);
  81.         $itens_romaneio_entrega_fk_romaneio_ocoren->setEditable(false);
  82.         $itens_romaneio_entrega_fk_romaneio_cubagem->setEditable(false);
  83.         $itens_romaneio_entrega_fk_romaneio_valor_nfe->setEditable(false);
  84.         $itens_romaneio_entrega_fk_romaneio_solicitacao->setEditable(false);
  85.         $itens_romaneio_entrega_fk_romaneio_remetente_id->setEditable(false);
  86.         $itens_romaneio_entrega_fk_romaneio_destinatario_id->setEditable(false);
  87.         $id->setSize(200);
  88.         $unidade->setSize(200);
  89.         $serie->setSize('100%');
  90.         $status->setSize('100%');
  91.         $numero->setSize('100%');
  92.         $data_emissao->setSize(130);
  93.         $NumEntrega->setSize('100%');
  94.         $veiculo_id->setSize('100%');
  95.         $data_alteracao->setSize(130);
  96.         $user_emissao->setSize('100%');
  97.         $data_lancamento->setSize(150);
  98.         $motorista_id->setSize('100%');
  99.         $user_lancamento->setSize('100%');
  100.         $itens_romaneio_entrega_fk_romaneio_id->setSize(200);
  101.         $itens_romaneio_entrega_fk_romaneio_peso->setSize('100%');
  102.         $itens_romaneio_entrega_fk_romaneio_volume->setSize('100%');
  103.         $itens_romaneio_entrega_fk_romaneio_ocoren->setSize('100%');
  104.         $itens_romaneio_entrega_fk_romaneio_cubagem->setSize('100%');
  105.         $itens_romaneio_entrega_fk_romaneio_valor_nfe->setSize('100%');
  106.         $itens_romaneio_entrega_fk_romaneio_solicitacao->setSize('100%');
  107.         $itens_romaneio_entrega_fk_romaneio_remetente_id->setSize('100%');
  108.         $itens_romaneio_entrega_fk_romaneio_destinatario_id->setSize('100%');
  109.         $this->form->appendPage("Principal");
  110.         $this->form->addFields([new THidden('current_tab')]);
  111.         $this->form->setTabFunction("$('[name=current_tab]').val($(this).attr('data-current_page'));");
  112.         $row1 $this->form->addFields([new TLabel("Status:"null'14px'null)],[$status],[],[$id,$unidade]);
  113.         $row2 $this->form->addFields([new TLabel("Motorista:"'#ff0000''14px'null)],[$motorista_id],[new TLabel("Veículo:"'#ff0000''14px'null)],[$veiculo_id]);
  114.         $row3 $this->form->addFields([new TLabel("Nº da Entrega:"null'14px'null)],[$numero],[new TLabel("Série:"null'14px'null)],[$serie]);
  115.         $row4 $this->form->addContent([new TFormSeparator(""'#333333''18''#eeeeee')]);
  116.         $row5 $this->form->addFields([new TLabel("Lançamento:"null'14px'null)],[$data_lancamento],[new TLabel("Alteração / Emissão:"null'14px'null)],[$data_alteracao,$data_emissao]);
  117.         $row6 $this->form->addFields([new TLabel("Usuário:"null'14px'null)],[$user_lancamento],[new TLabel("Usuário:"null'14px'null)],[$user_emissao]);
  118.         $this->form->appendPage("Solicitações de Entrega");
  119.         $this->detailFormItensRomaneioEntregaFkRomaneio = new BootstrapFormBuilder('detailFormItensRomaneioEntregaFkRomaneio');
  120.         $this->detailFormItensRomaneioEntregaFkRomaneio->setProperty('style''border:none; box-shadow:none; width:100%;');
  121.         $this->detailFormItensRomaneioEntregaFkRomaneio->setProperty('class''form-horizontal builder-detail-form');
  122.         $row7 $this->detailFormItensRomaneioEntregaFkRomaneio->addFields([new TLabel("Selecionar Entrega:"null'14px'null)],[$NumEntrega],[],[$button_incluir_itens_romaneio_entrega_fk_romaneio,$itens_romaneio_entrega_fk_romaneio_id,$button_adicionar_itens_romaneio_entrega_fk_romaneio]);
  123.         $row8 $this->detailFormItensRomaneioEntregaFkRomaneio->addFields([new TLabel("Entrega:"null'14px'null)],[$itens_romaneio_entrega_fk_romaneio_solicitacao],[new TLabel("Remetente:"null'14px'null)],[$itens_romaneio_entrega_fk_romaneio_remetente_id]);
  124.         $row9 $this->detailFormItensRomaneioEntregaFkRomaneio->addFields([new TLabel("Destinatário:"null'14px'null)],[$itens_romaneio_entrega_fk_romaneio_destinatario_id],[new TLabel("Volumes:"null'14px'null)],[$itens_romaneio_entrega_fk_romaneio_volume]);
  125.         $row10 $this->detailFormItensRomaneioEntregaFkRomaneio->addFields([new TLabel("Peso:"null'14px'null)],[$itens_romaneio_entrega_fk_romaneio_peso],[new TLabel("Cubagem:"null'14px'null)],[$itens_romaneio_entrega_fk_romaneio_cubagem]);
  126.         $row11 $this->detailFormItensRomaneioEntregaFkRomaneio->addFields([new TLabel("Valor da NF-e:"null'14px'null)],[$itens_romaneio_entrega_fk_romaneio_valor_nfe],[new TLabel("Ocorrência:"null'14px'null)],[$itens_romaneio_entrega_fk_romaneio_ocoren]);
  127.         $row12 $this->detailFormItensRomaneioEntregaFkRomaneio->addFields([new THidden('itens_romaneio_entrega_fk_romaneio__row__id')]);
  128.         $this->itens_romaneio_entrega_fk_romaneio_criteria = new TCriteria();
  129.         $this->itens_romaneio_entrega_fk_romaneio_list = new BootstrapDatagridWrapper(new TDataGrid);
  130.         $this->itens_romaneio_entrega_fk_romaneio_list->disableHtmlConversion();;
  131.         $this->itens_romaneio_entrega_fk_romaneio_list->generateHiddenFields();
  132.         $this->itens_romaneio_entrega_fk_romaneio_list->setId('itens_romaneio_entrega_fk_romaneio_list');
  133.         $this->itens_romaneio_entrega_fk_romaneio_list->disableDefaultClick();
  134.         $this->itens_romaneio_entrega_fk_romaneio_list->style 'width:100%';
  135.         $this->itens_romaneio_entrega_fk_romaneio_list->class .= ' table-bordered';
  136.         $column_itens_romaneio_entrega_fk_romaneio_fk_solicitacao_numero_entrega = new TDataGridColumn('fk_solicitacao->numero_entrega'"Entrega"'left');
  137.         $column_itens_romaneio_entrega_fk_romaneio_remetente_razao_social = new TDataGridColumn('remetente->razao_social'"Remetente"'left');
  138.         $column_itens_romaneio_entrega_fk_romaneio_fk_solicitacao_fk_embarcador_destinatario_razao_social = new TDataGridColumn('fk_solicitacao->fk_embarcador_destinatario->razao_social'"Destinatário"'left');
  139.         $column_itens_romaneio_entrega_fk_romaneio_volume = new TDataGridColumn('volume'"Volumes"'left');
  140.         $column_itens_romaneio_entrega_fk_romaneio_peso = new TDataGridColumn('peso'"Peso"'left');
  141.         $column_itens_romaneio_entrega_fk_romaneio_cubagem = new TDataGridColumn('cubagem'"Cubagem"'left');
  142.         $column_itens_romaneio_entrega_fk_romaneio_valor_nfe_transformed = new TDataGridColumn('valor_nfe'"Valor da NF-e"'left');
  143.         $column_itens_romaneio_entrega_fk_romaneio__row__data = new TDataGridColumn('__row__data''''center');
  144.         $column_itens_romaneio_entrega_fk_romaneio__row__data->setVisibility(false);
  145.         $column_itens_romaneio_entrega_fk_romaneio_volume->enableTotal('sum'''0',''.');
  146.         $column_itens_romaneio_entrega_fk_romaneio_peso->enableTotal('sum'''3',''.');
  147.         $column_itens_romaneio_entrega_fk_romaneio_cubagem->enableTotal('sum'''3',''.');
  148.         $column_itens_romaneio_entrega_fk_romaneio_valor_nfe_transformed->enableTotal('sum''R$'2',''.');
  149.         $action_onEditDetailItensRomaneioEntrega = new TDataGridAction(array('romaneioDeEntrega''onEditDetailItensRomaneioEntrega'));
  150.         $action_onEditDetailItensRomaneioEntrega->setUseButton(false);
  151.         $action_onEditDetailItensRomaneioEntrega->setButtonClass('btn btn-default btn-sm');
  152.         $action_onEditDetailItensRomaneioEntrega->setLabel("Editar");
  153.         $action_onEditDetailItensRomaneioEntrega->setImage('far:edit #478fca');
  154.         $action_onEditDetailItensRomaneioEntrega->setFields(['__row__id''__row__data']);
  155.         $this->itens_romaneio_entrega_fk_romaneio_list->addAction($action_onEditDetailItensRomaneioEntrega);
  156.         $action_onDeleteDetailItensRomaneioEntrega = new TDataGridAction(array('romaneioDeEntrega''onDeleteDetailItensRomaneioEntrega'));
  157.         $action_onDeleteDetailItensRomaneioEntrega->setUseButton(false);
  158.         $action_onDeleteDetailItensRomaneioEntrega->setButtonClass('btn btn-default btn-sm');
  159.         $action_onDeleteDetailItensRomaneioEntrega->setLabel("Excluir");
  160.         $action_onDeleteDetailItensRomaneioEntrega->setImage('fas:trash-alt #dd5a43');
  161.         $action_onDeleteDetailItensRomaneioEntrega->setFields(['__row__id''__row__data']);
  162.         $this->itens_romaneio_entrega_fk_romaneio_list->addAction($action_onDeleteDetailItensRomaneioEntrega);
  163.         $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_fk_solicitacao_numero_entrega);
  164.         $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_remetente_razao_social);
  165.         $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_fk_solicitacao_fk_embarcador_destinatario_razao_social);
  166.         $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_volume);
  167.         $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_peso);
  168.         $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_cubagem);
  169.         $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_valor_nfe_transformed);
  170.         $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio__row__data);
  171.         $this->itens_romaneio_entrega_fk_romaneio_list->createModel();
  172.         $this->detailFormItensRomaneioEntregaFkRomaneio->addContent([$this->itens_romaneio_entrega_fk_romaneio_list]);
  173.         $column_itens_romaneio_entrega_fk_romaneio_valor_nfe_transformed->setTransformer(function($value$object$row
  174.         {
  175.             if(!$value)
  176.             {
  177.                 $value 0;
  178.             }
  179.             if(is_numeric($value))
  180.             {
  181.                 return "R$ " number_format($value2","".");
  182.             }
  183.             else
  184.             {
  185.                 return $value;
  186.             }
  187.         });        $row13 $this->form->addFields([$this->detailFormItensRomaneioEntregaFkRomaneio]);
  188.         $row13->layout = [' col-sm-12'];
  189.         // create the form actions
  190.         $btn_onsave $this->form->addAction("Salvar", new TAction([$this'onSave'],['static' => 1]), 'fas:save #ffffff');
  191.         $btn_onsave->addStyleClass('btn-primary'); 
  192.         $btn_onclear $this->form->addAction("Novo", new TAction([$this'onClear']), 'fas:plus #69aa46');
  193.         $btn_onshow $this->form->addAction("Voltar", new TAction(['ListaRomaneioEntrega''onShow']), 'fas:arrow-circle-left #478fca');
  194.         // vertical box container
  195.         $container = new TVBox;
  196.         $container->style 'width: 100%';
  197.         $container->class 'form-container';
  198.         if(empty($param['target_container']))
  199.         {
  200.             $container->add(TBreadCrumb::create(["Operacional","Romaneio"]));
  201.         }
  202.         $container->add($this->form);
  203.         parent::add($container);
  204.     }
  205.     public static function onChangemotorista_id($param)
  206.     {
  207.         try
  208.         {
  209.             if (isset($param['motorista_id']) && $param['motorista_id'])
  210.             { 
  211.                 $criteria TCriteria::create(['motorista_id' => (int) $param['motorista_id']]);
  212.                 TDBCombo::reloadFromModel(self::$formName'veiculo_id''transpalog''MotoristaVeiculo''veiculo_id''{veiculo->placa}''id asc'$criteriaTRUE); 
  213.             } 
  214.             else 
  215.             { 
  216.                 TCombo::clearField(self::$formName'veiculo_id'); 
  217.             }  
  218.         }
  219.         catch (Exception $e)
  220.         {
  221.             new TMessage('error'$e->getMessage());
  222.         }
  223.     } 
  224.     public static function onPreencheSerie($param null
  225.     {
  226.         try 
  227.         {
  228.         // unidade atual
  229.         $uni_dade TSession::getValue('userunitid');
  230.         $nvSerie '0X';
  231.         TTransaction::open('transpalog'); 
  232.         $conn TTransaction::get();
  233.         $result $conn->query("SELECT id, serie FROM romaneio_entrega WHERE unidade = '".$uni_dade."' ORDER BY id DESC LIMIT 1");
  234.         $objects $result->fetchAll(PDO::FETCH_CLASS"stdClass");
  235.         if($objects) {
  236.              foreach($objects as $object) { 
  237.              $nvSerie $object->serie;
  238.             }    
  239.         }
  240.         if ($nvSerie == '0X') {
  241.             new TMessage('error'"Atenção: Romaneio não inicializado!");
  242.             $nvSerie null;
  243.         }
  244.         TTransaction::close();    
  245.         $object = new stdClass();
  246.         $object->serie $nvSerie;
  247.         TForm::sendData(self::$formName$object);
  248.         //*/
  249.         }
  250.         catch (Exception $e
  251.         {
  252.             new TMessage('error'$e->getMessage());    
  253.         }
  254.     }
  255.     public static function onIncluir($param null
  256.     {
  257.         try 
  258.         {
  259.         TTransaction::open('transpalog');
  260.             //grava os dados    dessa model,       esse  é o campo usado para consulta
  261.             $numdoc    = new Entrega($param['NumEntrega']);
  262.             $campos_model = new StdClass;
  263.             $campos_model->itens_romaneio_entrega_fk_romaneio_solicitacao                    $numdoc->id
  264.             $campos_model->itens_romaneio_entrega_fk_romaneio_remetente_id              $numdoc->embarcador_id;
  265.             $campos_model->itens_romaneio_entrega_fk_romaneio_destinatario_id              $numdoc->embarcador_destinatario;
  266.             $campos_model->itens_romaneio_entrega_fk_romaneio_volume              $numdoc->volume_total;
  267.             $campos_model->itens_romaneio_entrega_fk_romaneio_peso              $numdoc->peso_total;
  268.             $campos_model->itens_romaneio_entrega_fk_romaneio_valor_nfe              $numdoc->valor_nf_total;
  269.             $campos_model->itens_romaneio_entrega_fk_romaneio_cubagem              $numdoc->cubagem_total;
  270.             $campos_model->itens_romaneio_entrega_fk_romaneio_ocoren             1;
  271.             /*/
  272.             campos do formulario que recebe os dados das variáveis que, po sua vez vem da tabela
  273.             */
  274.             //TForm::sendData('form_RomaneioColeta',$campos_model);
  275.             TForm::sendData(self::$formName$campos_model);
  276.         TTransaction::close();  
  277.         }
  278.         catch (Exception $e
  279.         {
  280.             new TMessage('error'$e->getMessage());    
  281.         }
  282.     }
  283.     public  function onAddDetailItensRomaneioEntregaFkRomaneio($param null
  284.     {
  285.         try
  286.         {
  287.             $data $this->form->getData();
  288.             (new TRequiredValidator)->validate("Selecionar e Incluir não foi acionado o processo"$data->itens_romaneio_entrega_fk_romaneio_solicitacao);
  289.             $__row__id = !empty($data->itens_romaneio_entrega_fk_romaneio__row__id) ? $data->itens_romaneio_entrega_fk_romaneio__row__id 'b'.uniqid();
  290.             TTransaction::open(self::$database);
  291.             $grid_data = new ItensRomaneioEntrega();
  292.             $grid_data->__row__id $__row__id;
  293.             $grid_data->NumEntrega $data->NumEntrega;
  294.             $grid_data->id $data->itens_romaneio_entrega_fk_romaneio_id;
  295.             $grid_data->solicitacao $data->itens_romaneio_entrega_fk_romaneio_solicitacao;
  296.             $grid_data->remetente_id $data->itens_romaneio_entrega_fk_romaneio_remetente_id;
  297.             $grid_data->destinatario_id $data->itens_romaneio_entrega_fk_romaneio_destinatario_id;
  298.             $grid_data->volume $data->itens_romaneio_entrega_fk_romaneio_volume;
  299.             $grid_data->peso $data->itens_romaneio_entrega_fk_romaneio_peso;
  300.             $grid_data->cubagem $data->itens_romaneio_entrega_fk_romaneio_cubagem;
  301.             $grid_data->valor_nfe $data->itens_romaneio_entrega_fk_romaneio_valor_nfe;
  302.             $grid_data->ocoren $data->itens_romaneio_entrega_fk_romaneio_ocoren;
  303.             $__row__data array_merge($grid_data->toArray(), (array)$grid_data->getVirtualData());
  304.             $__row__data['__row__id'] = $__row__id;
  305.             $__row__data['__display__']['NumEntrega'] =  $param['NumEntrega'] ?? null;
  306.             $__row__data['__display__']['id'] =  $param['itens_romaneio_entrega_fk_romaneio_id'] ?? null;
  307.             $__row__data['__display__']['solicitacao'] =  $param['itens_romaneio_entrega_fk_romaneio_solicitacao'] ?? null;
  308.             $__row__data['__display__']['remetente_id'] =  $param['itens_romaneio_entrega_fk_romaneio_remetente_id'] ?? null;
  309.             $__row__data['__display__']['destinatario_id'] =  $param['itens_romaneio_entrega_fk_romaneio_destinatario_id'] ?? null;
  310.             $__row__data['__display__']['volume'] =  $param['itens_romaneio_entrega_fk_romaneio_volume'] ?? null;
  311.             $__row__data['__display__']['peso'] =  $param['itens_romaneio_entrega_fk_romaneio_peso'] ?? null;
  312.             $__row__data['__display__']['cubagem'] =  $param['itens_romaneio_entrega_fk_romaneio_cubagem'] ?? null;
  313.             $__row__data['__display__']['valor_nfe'] =  $param['itens_romaneio_entrega_fk_romaneio_valor_nfe'] ?? null;
  314.             $__row__data['__display__']['ocoren'] =  $param['itens_romaneio_entrega_fk_romaneio_ocoren'] ?? null;
  315.             $grid_data->__row__data base64_encode(serialize((object)$__row__data));
  316.             $row $this->itens_romaneio_entrega_fk_romaneio_list->addItem($grid_data);
  317.             $row->id $grid_data->__row__id;
  318.             TDataGrid::replaceRowById('itens_romaneio_entrega_fk_romaneio_list'$grid_data->__row__id$row);
  319.             TTransaction::close();
  320.             $data = new stdClass;
  321.             $data->NumEntrega '';
  322.             $data->itens_romaneio_entrega_fk_romaneio_id '';
  323.             $data->itens_romaneio_entrega_fk_romaneio_solicitacao '';
  324.             $data->itens_romaneio_entrega_fk_romaneio_remetente_id '';
  325.             $data->itens_romaneio_entrega_fk_romaneio_destinatario_id '';
  326.             $data->itens_romaneio_entrega_fk_romaneio_volume '';
  327.             $data->itens_romaneio_entrega_fk_romaneio_peso '';
  328.             $data->itens_romaneio_entrega_fk_romaneio_cubagem '';
  329.             $data->itens_romaneio_entrega_fk_romaneio_valor_nfe '';
  330.             $data->itens_romaneio_entrega_fk_romaneio_ocoren '';
  331.             $data->itens_romaneio_entrega_fk_romaneio__row__id '';
  332.             TForm::sendData(self::$formName$data);
  333.             TScript::create("
  334.                var element = $('#60be619532d84');
  335.                if(typeof element.attr('add') != 'undefined')
  336.                {
  337.                    element.html(base64_decode(element.attr('add')));
  338.                }
  339.             ");
  340.         }
  341.         catch (Exception $e// in case of exception
  342.         {
  343.             new TMessage('error'$e->getMessage()); // shows the exception error message
  344.         }
  345.     }
  346.     public static function onEditDetailItensRomaneioEntrega($param null
  347.     {
  348.         try
  349.         {
  350.             $__row__data unserialize(base64_decode($param['__row__data']));
  351.             $__row__data->__display__ is_array($__row__data->__display__) ? (object) $__row__data->__display__ $__row__data->__display__;
  352.             $data = new stdClass;
  353.             $data->NumEntrega $__row__data->__display__->NumEntrega ?? null;
  354.             $data->itens_romaneio_entrega_fk_romaneio_id $__row__data->__display__->id ?? null;
  355.             $data->itens_romaneio_entrega_fk_romaneio_solicitacao $__row__data->__display__->solicitacao ?? null;
  356.             $data->itens_romaneio_entrega_fk_romaneio_remetente_id $__row__data->__display__->remetente_id ?? null;
  357.             $data->itens_romaneio_entrega_fk_romaneio_destinatario_id $__row__data->__display__->destinatario_id ?? null;
  358.             $data->itens_romaneio_entrega_fk_romaneio_volume $__row__data->__display__->volume ?? null;
  359.             $data->itens_romaneio_entrega_fk_romaneio_peso $__row__data->__display__->peso ?? null;
  360.             $data->itens_romaneio_entrega_fk_romaneio_cubagem $__row__data->__display__->cubagem ?? null;
  361.             $data->itens_romaneio_entrega_fk_romaneio_valor_nfe $__row__data->__display__->valor_nfe ?? null;
  362.             $data->itens_romaneio_entrega_fk_romaneio_ocoren $__row__data->__display__->ocoren ?? null;
  363.             $data->itens_romaneio_entrega_fk_romaneio__row__id $__row__data->__row__id;
  364.             TForm::sendData(self::$formName$data);
  365.             TScript::create("
  366.                var element = $('#60be619532d84');
  367.                if(!element.attr('add')){
  368.                    element.attr('add', base64_encode(element.html()));
  369.                }
  370.                element.html(\"<span><i class='far fa-edit' style='color:#478fca;padding-right:4px;'></i>Editar</span>\");
  371.                if(!element.attr('edit')){
  372.                    element.attr('edit', base64_encode(element.html()));
  373.                }
  374.             ");
  375.         }
  376.         catch (Exception $e// in case of exception
  377.         {
  378.             new TMessage('error'$e->getMessage()); // shows the exception error message
  379.         }
  380.     }
  381.     public static function onDeleteDetailItensRomaneioEntrega($param null
  382.     {
  383.         try
  384.         {
  385.             $__row__data unserialize(base64_decode($param['__row__data']));
  386.             $data = new stdClass;
  387.             $data->NumEntrega '';
  388.             $data->itens_romaneio_entrega_fk_romaneio_id '';
  389.             $data->itens_romaneio_entrega_fk_romaneio_solicitacao '';
  390.             $data->itens_romaneio_entrega_fk_romaneio_remetente_id '';
  391.             $data->itens_romaneio_entrega_fk_romaneio_destinatario_id '';
  392.             $data->itens_romaneio_entrega_fk_romaneio_volume '';
  393.             $data->itens_romaneio_entrega_fk_romaneio_peso '';
  394.             $data->itens_romaneio_entrega_fk_romaneio_cubagem '';
  395.             $data->itens_romaneio_entrega_fk_romaneio_valor_nfe '';
  396.             $data->itens_romaneio_entrega_fk_romaneio_ocoren '';
  397.             $data->itens_romaneio_entrega_fk_romaneio__row__id '';
  398.             TForm::sendData(self::$formName$data);
  399.             TDataGrid::removeRowById('itens_romaneio_entrega_fk_romaneio_list'$__row__data->__row__id);
  400.         }
  401.         catch (Exception $e// in case of exception
  402.         {
  403.             new TMessage('error'$e->getMessage()); // shows the exception error message
  404.         }
  405.     }
  406.     public function onSave($param null
  407.     {
  408.      $status $param['status'];
  409.      // unidade atual
  410.      $uni_dade TSession::getValue('userunitid');
  411.      $nS $param['serie'];
  412.      $Sn $param['numero'];
  413.      switch ($status) {
  414.        case 3//
  415.             new TMessage('error','Romaneio Cancelado!');
  416.        break;
  417.        case 2// Emitido
  418.             new TMessage('error','Romaneio já Emitido' );    
  419.        break;
  420.        default:
  421.        // Se for igual a Lançado ou nunca foi lançado
  422.         try
  423.         {
  424.             if ($Sn == null) {
  425.             TTransaction::open('transpalog'); 
  426.                 $num 0;
  427.                 $conn TTransaction::get();
  428.                 $sql "SELECT numero FROM romaneio_entrega WHERE unidade = '".$uni_dade."' AND  serie = '".$nS."' ORDER BY numero DESC LIMIT 1";
  429.                 $result $conn->query($sql);
  430.                 $objects $result->fetchAll(PDO::FETCH_CLASS"stdClass");
  431.                 if($objects)
  432.                 {
  433.                   foreach($objects as $object
  434.                     { 
  435.                      $num $object->numero;
  436.                      $num++;
  437.                      $object = new stdClass();
  438.                      $object->numero $num;
  439.                      TForm::sendData(self::$formName$object);
  440.                     }    
  441.                 }
  442.             TTransaction::close();             
  443.             }
  444.             $object = new stdClass();
  445.             $object->status 1;
  446.             $object->unidade TSession::getValue('userunitid');
  447.             $object->user_lancamento TSession::getValue('username');
  448.             TForm::sendData(self::$formName$object);
  449.             TTransaction::open(self::$database); // open a transaction
  450.             $messageAction null;
  451.             $this->form->validate(); // validate form data
  452.             $object = new RomaneioEntrega(); // create an empty object 
  453.             $data $this->form->getData(); // get form data as array
  454.             if ($Sn == null) {
  455.                 $data->numero $num;
  456.             }
  457.             $data->status 1;
  458.             $data->unidade TSession::getValue('userunitid');
  459.             $data->user_lancamento =TSession::getValue('username');
  460.             $object->fromArray( (array) $data); // load the object with data
  461.             $object->store(); // save the object 
  462.             $this->fireEvents($object);
  463.             TForm::sendData(self::$formName, (object)['id' => $object->id]);
  464.             $itens_romaneio_entrega_fk_romaneio_items $this->storeMasterDetailItems('ItensRomaneioEntrega''romaneio''itens_romaneio_entrega_fk_romaneio'$object$param['itens_romaneio_entrega_fk_romaneio_list___row__data'] ?? [], $this->form$this->itens_romaneio_entrega_fk_romaneio_list, function($masterObject$detailObject){ 
  465.             // Tratamento de erro quando os campos vem zerado da solicitação
  466.             //campo do DB da 1 aba    ====  variavel e campo do DB da segunda aba
  467.             if ($detailObject->volume != null) {
  468.             $masterObject->volume    += $detailObject->volume
  469.             } else {
  470.                 $masterObject->volume  += 0;
  471.             }
  472.             if ($detailObject->peso != null) {
  473.             $masterObject->peso      += $detailObject->peso
  474.             } else {
  475.                 $masterObject->peso  += 0;
  476.             }
  477.             if ($detailObject->valor_nfe != null) {
  478.             $masterObject->valor_nfe += $detailObject->valor_nfe
  479.             } else {
  480.                 $masterObject->valor_nfe  += 0;
  481.             }
  482.             if ($detailObject->cubagem != null) {
  483.             $masterObject->cubagem   += $detailObject->cubagem
  484.             } else {
  485.                 $masterObject->cubagem   += 0;
  486.             }
  487.             }); 
  488.             // Se não colocar esse código não funciona <<<<<<<<<<<<<<
  489.             $object->store();  // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  490.             // get the generated {PRIMARY_KEY}
  491.             $data->id $object->id
  492.             $this->form->setData($data); // fill form data
  493.             TTransaction::close(); // close the transaction
  494.             new TMessage('info'"Romaneio Salvo"$messageAction); 
  495.         }
  496.         catch (Exception $e// in case of exception
  497.         {
  498.             //</catchAutoCode>  
  499.             new TMessage('error'$e->getMessage()); // shows the exception error message
  500.             $this->form->setData$this->form->getData() ); // keep form data
  501.             TTransaction::rollback(); // undo all pending operations
  502.         }
  503.         break;
  504.         } // Fim do default do switch 
  505.     }
  506.     public function onEdit$param )
  507.     {
  508.         try
  509.         {
  510.             if (isset($param['key']))
  511.             {
  512.                 $key $param['key'];  // get the parameter $key
  513.                 TTransaction::open(self::$database); // open a transaction
  514.                 $object = new RomaneioEntrega($key); // instantiates the Active Record 
  515.                 $itens_romaneio_entrega_fk_romaneio_items $this->loadMasterDetailItems('ItensRomaneioEntrega''romaneio''itens_romaneio_entrega_fk_romaneio'$object$this->form$this->itens_romaneio_entrega_fk_romaneio_list$this->itens_romaneio_entrega_fk_romaneio_criteria, function($masterObject$detailObject$objectItems){ 
  516.                     //code here
  517.                 }); 
  518.                 $this->form->setData($object); // fill the form 
  519.                 $this->fireEvents($object);
  520.                 TTransaction::close(); // close the transaction 
  521.             }
  522.             else
  523.             {
  524.                 $this->form->clear();
  525.             }
  526.         }
  527.         catch (Exception $e// in case of exception
  528.         {
  529.             new TMessage('error'$e->getMessage()); // shows the exception error message
  530.             TTransaction::rollback(); // undo all pending operations
  531.         }
  532.     }
  533.     /**
  534.      * Clear form data
  535.      * @param $param Request
  536.      */
  537.     public function onClear$param )
  538.     {
  539.         $this->form->clear(true);
  540.     }
  541.     public function onShow($param null)
  542.     {
  543.     } 
  544.     public function fireEvents$object )
  545.     {
  546.         $obj = new stdClass;
  547.         if(is_object($object) && get_class($object) == 'stdClass')
  548.         {
  549.             if(isset($object->motorista_id))
  550.             {
  551.                 $value $object->motorista_id;
  552.                 $obj->motorista_id $value;
  553.             }
  554.             if(isset($object->veiculo_id))
  555.             {
  556.                 $value $object->veiculo_id;
  557.                 $obj->veiculo_id $value;
  558.             }
  559.         }
  560.         elseif(is_object($object))
  561.         {
  562.             if(isset($object->motorista_id))
  563.             {
  564.                 $value $object->motorista_id;
  565.                 $obj->motorista_id $value;
  566.             }
  567.             if(isset($object->veiculo_id))
  568.             {
  569.                 $value $object->veiculo_id;
  570.                 $obj->veiculo_id $value;
  571.             }
  572.         }
  573.         TForm::sendData(self::$formName$obj);
  574.     }  
  575. }

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


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (2)


NR

Você já analisou o conteúdo de $param? Se não me engano esse modelo de mestre x detalhe passa os detalhes em campos do tipo hidden, aí você poderia fazer um laço e verificar se a nova informação já foi adicionada ou não.
RF

Nataniel, obrigado pela luz, eu entendi o que você disse, mas sou iniciante com o php, você teria um exemplo pra passar.