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.
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.
- <?php
- class romaneioDeEntrega extends TPage
- {
- protected $form;
- private $formFields = [];
- private static $database = 'transpalog';
- private static $activeRecord = 'RomaneioEntrega';
- private static $primaryKey = 'id';
- private static $formName = 'form_RomaneioEntrega';
- use BuilderMasterDetailTrait;
- /**
- * Form constructor
- * @param $param Request
- */
- public function __construct( $param )
- {
- parent::__construct();
- if(!empty($param['target_container']))
- {
- $this->adianti_target_container = $param['target_container'];
- }
- // creates the form
- $this->form = new BootstrapFormBuilder(self::$formName);
- // define the form title
- $this->form->setFormTitle("Romaneio de Entrega");
- $criteria_status = new TCriteria();
- $filterVar = "2";
- $criteria_status->add(new TFilter('id', '<=', $filterVar));
- $status = new TDBCombo('status', 'transpalog', 'StatusSolicitacao', 'id', '{descricao}','id asc' , $criteria_status );
- $id = new THidden('id');
- $unidade = new THidden('unidade');
- $motorista_id = new TDBCombo('motorista_id', 'transpalog', 'Motorista', 'id', '{nome}','id asc' );
- $veiculo_id = new TCombo('veiculo_id');
- $numero = new TEntry('numero');
- $serie = new TEntry('serie');
- $data_lancamento = new TDateTime('data_lancamento');
- $data_alteracao = new TDateTime('data_alteracao');
- $data_emissao = new TDate('data_emissao');
- $user_lancamento = new TEntry('user_lancamento');
- $user_emissao = new TEntry('user_emissao');
- $NumEntrega = new TDBCombo('NumEntrega', 'transpalog', 'Entrega', 'id', '{numero_entrega}','id asc' );
- $button_incluir_itens_romaneio_entrega_fk_romaneio = new TButton('button_incluir_itens_romaneio_entrega_fk_romaneio');
- $itens_romaneio_entrega_fk_romaneio_id = new THidden('itens_romaneio_entrega_fk_romaneio_id');
- $button_adicionar_itens_romaneio_entrega_fk_romaneio = new TButton('button_adicionar_itens_romaneio_entrega_fk_romaneio');
- $itens_romaneio_entrega_fk_romaneio_solicitacao = new TDBCombo('itens_romaneio_entrega_fk_romaneio_solicitacao', 'transpalog', 'Entrega', 'id', '{numero_entrega}','id asc' );
- $itens_romaneio_entrega_fk_romaneio_remetente_id = new TDBCombo('itens_romaneio_entrega_fk_romaneio_remetente_id', 'transpalog', 'Embarcador', 'id', '{razao_social}','id asc' );
- $itens_romaneio_entrega_fk_romaneio_destinatario_id = new TDBCombo('itens_romaneio_entrega_fk_romaneio_destinatario_id', 'transpalog', 'Embarcador', 'id', '{razao_social}','id asc' );
- $itens_romaneio_entrega_fk_romaneio_volume = new TNumeric('itens_romaneio_entrega_fk_romaneio_volume', '0', ',', '.' );
- $itens_romaneio_entrega_fk_romaneio_peso = new TNumeric('itens_romaneio_entrega_fk_romaneio_peso', '3', ',', '.' );
- $itens_romaneio_entrega_fk_romaneio_cubagem = new TNumeric('itens_romaneio_entrega_fk_romaneio_cubagem', '3', ',', '.' );
- $itens_romaneio_entrega_fk_romaneio_valor_nfe = new TNumeric('itens_romaneio_entrega_fk_romaneio_valor_nfe', '2', '', '' );
- $itens_romaneio_entrega_fk_romaneio_ocoren = new TDBCombo('itens_romaneio_entrega_fk_romaneio_ocoren', 'transpalog', 'OcorenDePara', 'id', '{descricao}','id asc' );
- $motorista_id->setChangeAction(new TAction([$this,'onChangemotorista_id']));
- $veiculo_id->setChangeAction(new TAction([$this,'onPreencheSerie']));
- $motorista_id->addValidation("Motorista", new TRequiredValidator());
- $veiculo_id->addValidation("Veículo", new TRequiredValidator());
- $serie->setMaxLength(5);
- $button_incluir_itens_romaneio_entrega_fk_romaneio->setAction(new TAction([$this, 'onIncluir']), "Incluir");
- $button_adicionar_itens_romaneio_entrega_fk_romaneio->setAction(new TAction([$this, 'onAddDetailItensRomaneioEntregaFkRomaneio'],['static' => 1]), "Adicionar");
- $button_incluir_itens_romaneio_entrega_fk_romaneio->addStyleClass('btn-default');
- $button_adicionar_itens_romaneio_entrega_fk_romaneio->addStyleClass('btn-default');
- $button_adicionar_itens_romaneio_entrega_fk_romaneio->setImage('fas:plus #2ecc71');
- $button_incluir_itens_romaneio_entrega_fk_romaneio->setImage('fas:cloud-download-alt #69aa46');
- $button_adicionar_itens_romaneio_entrega_fk_romaneio->id = '60be619532d84';
- $data_emissao->setMask('dd/mm/yyyy');
- $data_alteracao->setMask('dd/mm/yyyy hh:ii');
- $data_lancamento->setMask('dd/mm/yyyy hh:ii');
- $data_emissao->setDatabaseMask('yyyy-mm-dd');
- $data_alteracao->setDatabaseMask('yyyy-mm-dd hh:ii');
- $data_lancamento->setDatabaseMask('yyyy-mm-dd hh:ii');
- $serie->setEditable(false);
- $status->setEditable(false);
- $numero->setEditable(false);
- $data_emissao->setEditable(false);
- $user_emissao->setEditable(false);
- $data_alteracao->setEditable(false);
- $data_lancamento->setEditable(false);
- $user_lancamento->setEditable(false);
- $itens_romaneio_entrega_fk_romaneio_peso->setEditable(false);
- $itens_romaneio_entrega_fk_romaneio_volume->setEditable(false);
- $itens_romaneio_entrega_fk_romaneio_ocoren->setEditable(false);
- $itens_romaneio_entrega_fk_romaneio_cubagem->setEditable(false);
- $itens_romaneio_entrega_fk_romaneio_valor_nfe->setEditable(false);
- $itens_romaneio_entrega_fk_romaneio_solicitacao->setEditable(false);
- $itens_romaneio_entrega_fk_romaneio_remetente_id->setEditable(false);
- $itens_romaneio_entrega_fk_romaneio_destinatario_id->setEditable(false);
- $id->setSize(200);
- $unidade->setSize(200);
- $serie->setSize('100%');
- $status->setSize('100%');
- $numero->setSize('100%');
- $data_emissao->setSize(130);
- $NumEntrega->setSize('100%');
- $veiculo_id->setSize('100%');
- $data_alteracao->setSize(130);
- $user_emissao->setSize('100%');
- $data_lancamento->setSize(150);
- $motorista_id->setSize('100%');
- $user_lancamento->setSize('100%');
- $itens_romaneio_entrega_fk_romaneio_id->setSize(200);
- $itens_romaneio_entrega_fk_romaneio_peso->setSize('100%');
- $itens_romaneio_entrega_fk_romaneio_volume->setSize('100%');
- $itens_romaneio_entrega_fk_romaneio_ocoren->setSize('100%');
- $itens_romaneio_entrega_fk_romaneio_cubagem->setSize('100%');
- $itens_romaneio_entrega_fk_romaneio_valor_nfe->setSize('100%');
- $itens_romaneio_entrega_fk_romaneio_solicitacao->setSize('100%');
- $itens_romaneio_entrega_fk_romaneio_remetente_id->setSize('100%');
- $itens_romaneio_entrega_fk_romaneio_destinatario_id->setSize('100%');
- $this->form->appendPage("Principal");
- $this->form->addFields([new THidden('current_tab')]);
- $this->form->setTabFunction("$('[name=current_tab]').val($(this).attr('data-current_page'));");
- $row1 = $this->form->addFields([new TLabel("Status:", null, '14px', null)],[$status],[],[$id,$unidade]);
- $row2 = $this->form->addFields([new TLabel("Motorista:", '#ff0000', '14px', null)],[$motorista_id],[new TLabel("Veículo:", '#ff0000', '14px', null)],[$veiculo_id]);
- $row3 = $this->form->addFields([new TLabel("Nº da Entrega:", null, '14px', null)],[$numero],[new TLabel("Série:", null, '14px', null)],[$serie]);
- $row4 = $this->form->addContent([new TFormSeparator("", '#333333', '18', '#eeeeee')]);
- $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]);
- $row6 = $this->form->addFields([new TLabel("Usuário:", null, '14px', null)],[$user_lancamento],[new TLabel("Usuário:", null, '14px', null)],[$user_emissao]);
- $this->form->appendPage("Solicitações de Entrega");
- $this->detailFormItensRomaneioEntregaFkRomaneio = new BootstrapFormBuilder('detailFormItensRomaneioEntregaFkRomaneio');
- $this->detailFormItensRomaneioEntregaFkRomaneio->setProperty('style', 'border:none; box-shadow:none; width:100%;');
- $this->detailFormItensRomaneioEntregaFkRomaneio->setProperty('class', 'form-horizontal builder-detail-form');
- $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]);
- $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]);
- $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]);
- $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]);
- $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]);
- $row12 = $this->detailFormItensRomaneioEntregaFkRomaneio->addFields([new THidden('itens_romaneio_entrega_fk_romaneio__row__id')]);
- $this->itens_romaneio_entrega_fk_romaneio_criteria = new TCriteria();
- $this->itens_romaneio_entrega_fk_romaneio_list = new BootstrapDatagridWrapper(new TDataGrid);
- $this->itens_romaneio_entrega_fk_romaneio_list->disableHtmlConversion();;
- $this->itens_romaneio_entrega_fk_romaneio_list->generateHiddenFields();
- $this->itens_romaneio_entrega_fk_romaneio_list->setId('itens_romaneio_entrega_fk_romaneio_list');
- $this->itens_romaneio_entrega_fk_romaneio_list->disableDefaultClick();
- $this->itens_romaneio_entrega_fk_romaneio_list->style = 'width:100%';
- $this->itens_romaneio_entrega_fk_romaneio_list->class .= ' table-bordered';
- $column_itens_romaneio_entrega_fk_romaneio_fk_solicitacao_numero_entrega = new TDataGridColumn('fk_solicitacao->numero_entrega', "Entrega", 'left');
- $column_itens_romaneio_entrega_fk_romaneio_remetente_razao_social = new TDataGridColumn('remetente->razao_social', "Remetente", 'left');
- $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');
- $column_itens_romaneio_entrega_fk_romaneio_volume = new TDataGridColumn('volume', "Volumes", 'left');
- $column_itens_romaneio_entrega_fk_romaneio_peso = new TDataGridColumn('peso', "Peso", 'left');
- $column_itens_romaneio_entrega_fk_romaneio_cubagem = new TDataGridColumn('cubagem', "Cubagem", 'left');
- $column_itens_romaneio_entrega_fk_romaneio_valor_nfe_transformed = new TDataGridColumn('valor_nfe', "Valor da NF-e", 'left');
- $column_itens_romaneio_entrega_fk_romaneio__row__data = new TDataGridColumn('__row__data', '', 'center');
- $column_itens_romaneio_entrega_fk_romaneio__row__data->setVisibility(false);
- $column_itens_romaneio_entrega_fk_romaneio_volume->enableTotal('sum', '', 0, ',', '.');
- $column_itens_romaneio_entrega_fk_romaneio_peso->enableTotal('sum', '', 3, ',', '.');
- $column_itens_romaneio_entrega_fk_romaneio_cubagem->enableTotal('sum', '', 3, ',', '.');
- $column_itens_romaneio_entrega_fk_romaneio_valor_nfe_transformed->enableTotal('sum', 'R$', 2, ',', '.');
- $action_onEditDetailItensRomaneioEntrega = new TDataGridAction(array('romaneioDeEntrega', 'onEditDetailItensRomaneioEntrega'));
- $action_onEditDetailItensRomaneioEntrega->setUseButton(false);
- $action_onEditDetailItensRomaneioEntrega->setButtonClass('btn btn-default btn-sm');
- $action_onEditDetailItensRomaneioEntrega->setLabel("Editar");
- $action_onEditDetailItensRomaneioEntrega->setImage('far:edit #478fca');
- $action_onEditDetailItensRomaneioEntrega->setFields(['__row__id', '__row__data']);
- $this->itens_romaneio_entrega_fk_romaneio_list->addAction($action_onEditDetailItensRomaneioEntrega);
- $action_onDeleteDetailItensRomaneioEntrega = new TDataGridAction(array('romaneioDeEntrega', 'onDeleteDetailItensRomaneioEntrega'));
- $action_onDeleteDetailItensRomaneioEntrega->setUseButton(false);
- $action_onDeleteDetailItensRomaneioEntrega->setButtonClass('btn btn-default btn-sm');
- $action_onDeleteDetailItensRomaneioEntrega->setLabel("Excluir");
- $action_onDeleteDetailItensRomaneioEntrega->setImage('fas:trash-alt #dd5a43');
- $action_onDeleteDetailItensRomaneioEntrega->setFields(['__row__id', '__row__data']);
- $this->itens_romaneio_entrega_fk_romaneio_list->addAction($action_onDeleteDetailItensRomaneioEntrega);
- $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_fk_solicitacao_numero_entrega);
- $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_remetente_razao_social);
- $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_fk_solicitacao_fk_embarcador_destinatario_razao_social);
- $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_volume);
- $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_peso);
- $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_cubagem);
- $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio_valor_nfe_transformed);
- $this->itens_romaneio_entrega_fk_romaneio_list->addColumn($column_itens_romaneio_entrega_fk_romaneio__row__data);
- $this->itens_romaneio_entrega_fk_romaneio_list->createModel();
- $this->detailFormItensRomaneioEntregaFkRomaneio->addContent([$this->itens_romaneio_entrega_fk_romaneio_list]);
- $column_itens_romaneio_entrega_fk_romaneio_valor_nfe_transformed->setTransformer(function($value, $object, $row)
- {
- if(!$value)
- {
- $value = 0;
- }
- if(is_numeric($value))
- {
- return "R$ " . number_format($value, 2, ",", ".");
- }
- else
- {
- return $value;
- }
- }); $row13 = $this->form->addFields([$this->detailFormItensRomaneioEntregaFkRomaneio]);
- $row13->layout = [' col-sm-12'];
- // create the form actions
- $btn_onsave = $this->form->addAction("Salvar", new TAction([$this, 'onSave'],['static' => 1]), 'fas:save #ffffff');
- $btn_onsave->addStyleClass('btn-primary');
- $btn_onclear = $this->form->addAction("Novo", new TAction([$this, 'onClear']), 'fas:plus #69aa46');
- $btn_onshow = $this->form->addAction("Voltar", new TAction(['ListaRomaneioEntrega', 'onShow']), 'fas:arrow-circle-left #478fca');
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 100%';
- $container->class = 'form-container';
- if(empty($param['target_container']))
- {
- $container->add(TBreadCrumb::create(["Operacional","Romaneio"]));
- }
- $container->add($this->form);
- parent::add($container);
- }
- public static function onChangemotorista_id($param)
- {
- try
- {
- if (isset($param['motorista_id']) && $param['motorista_id'])
- {
- $criteria = TCriteria::create(['motorista_id' => (int) $param['motorista_id']]);
- TDBCombo::reloadFromModel(self::$formName, 'veiculo_id', 'transpalog', 'MotoristaVeiculo', 'veiculo_id', '{veiculo->placa}', 'id asc', $criteria, TRUE);
- }
- else
- {
- TCombo::clearField(self::$formName, 'veiculo_id');
- }
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- }
- public static function onPreencheSerie($param = null)
- {
- try
- {
- // unidade atual
- $uni_dade = TSession::getValue('userunitid');
- $nvSerie = '0X';
- TTransaction::open('transpalog');
- $conn = TTransaction::get();
- $result = $conn->query("SELECT id, serie FROM romaneio_entrega WHERE unidade = '".$uni_dade."' ORDER BY id DESC LIMIT 1");
- $objects = $result->fetchAll(PDO::FETCH_CLASS, "stdClass");
- if($objects) {
- foreach($objects as $object) {
- $nvSerie = $object->serie;
- }
- }
- if ($nvSerie == '0X') {
- new TMessage('error', "Atenção: Romaneio não inicializado!");
- $nvSerie = null;
- }
- TTransaction::close();
- $object = new stdClass();
- $object->serie = $nvSerie;
- TForm::sendData(self::$formName, $object);
- //*/
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- }
- public static function onIncluir($param = null)
- {
- try
- {
- TTransaction::open('transpalog');
- //grava os dados dessa model, esse é o campo usado para consulta
- $numdoc = new Entrega($param['NumEntrega']);
- $campos_model = new StdClass;
- $campos_model->itens_romaneio_entrega_fk_romaneio_solicitacao = $numdoc->id;
- $campos_model->itens_romaneio_entrega_fk_romaneio_remetente_id = $numdoc->embarcador_id;
- $campos_model->itens_romaneio_entrega_fk_romaneio_destinatario_id = $numdoc->embarcador_destinatario;
- $campos_model->itens_romaneio_entrega_fk_romaneio_volume = $numdoc->volume_total;
- $campos_model->itens_romaneio_entrega_fk_romaneio_peso = $numdoc->peso_total;
- $campos_model->itens_romaneio_entrega_fk_romaneio_valor_nfe = $numdoc->valor_nf_total;
- $campos_model->itens_romaneio_entrega_fk_romaneio_cubagem = $numdoc->cubagem_total;
- $campos_model->itens_romaneio_entrega_fk_romaneio_ocoren = 1;
- /*/
- campos do formulario que recebe os dados das variáveis que, po sua vez vem da tabela
- */
- //TForm::sendData('form_RomaneioColeta',$campos_model);
- TForm::sendData(self::$formName, $campos_model);
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- }
- }
- public function onAddDetailItensRomaneioEntregaFkRomaneio($param = null)
- {
- try
- {
- $data = $this->form->getData();
- (new TRequiredValidator)->validate("Selecionar e Incluir não foi acionado o processo", $data->itens_romaneio_entrega_fk_romaneio_solicitacao);
- $__row__id = !empty($data->itens_romaneio_entrega_fk_romaneio__row__id) ? $data->itens_romaneio_entrega_fk_romaneio__row__id : 'b'.uniqid();
- TTransaction::open(self::$database);
- $grid_data = new ItensRomaneioEntrega();
- $grid_data->__row__id = $__row__id;
- $grid_data->NumEntrega = $data->NumEntrega;
- $grid_data->id = $data->itens_romaneio_entrega_fk_romaneio_id;
- $grid_data->solicitacao = $data->itens_romaneio_entrega_fk_romaneio_solicitacao;
- $grid_data->remetente_id = $data->itens_romaneio_entrega_fk_romaneio_remetente_id;
- $grid_data->destinatario_id = $data->itens_romaneio_entrega_fk_romaneio_destinatario_id;
- $grid_data->volume = $data->itens_romaneio_entrega_fk_romaneio_volume;
- $grid_data->peso = $data->itens_romaneio_entrega_fk_romaneio_peso;
- $grid_data->cubagem = $data->itens_romaneio_entrega_fk_romaneio_cubagem;
- $grid_data->valor_nfe = $data->itens_romaneio_entrega_fk_romaneio_valor_nfe;
- $grid_data->ocoren = $data->itens_romaneio_entrega_fk_romaneio_ocoren;
- $__row__data = array_merge($grid_data->toArray(), (array)$grid_data->getVirtualData());
- $__row__data['__row__id'] = $__row__id;
- $__row__data['__display__']['NumEntrega'] = $param['NumEntrega'] ?? null;
- $__row__data['__display__']['id'] = $param['itens_romaneio_entrega_fk_romaneio_id'] ?? null;
- $__row__data['__display__']['solicitacao'] = $param['itens_romaneio_entrega_fk_romaneio_solicitacao'] ?? null;
- $__row__data['__display__']['remetente_id'] = $param['itens_romaneio_entrega_fk_romaneio_remetente_id'] ?? null;
- $__row__data['__display__']['destinatario_id'] = $param['itens_romaneio_entrega_fk_romaneio_destinatario_id'] ?? null;
- $__row__data['__display__']['volume'] = $param['itens_romaneio_entrega_fk_romaneio_volume'] ?? null;
- $__row__data['__display__']['peso'] = $param['itens_romaneio_entrega_fk_romaneio_peso'] ?? null;
- $__row__data['__display__']['cubagem'] = $param['itens_romaneio_entrega_fk_romaneio_cubagem'] ?? null;
- $__row__data['__display__']['valor_nfe'] = $param['itens_romaneio_entrega_fk_romaneio_valor_nfe'] ?? null;
- $__row__data['__display__']['ocoren'] = $param['itens_romaneio_entrega_fk_romaneio_ocoren'] ?? null;
- $grid_data->__row__data = base64_encode(serialize((object)$__row__data));
- $row = $this->itens_romaneio_entrega_fk_romaneio_list->addItem($grid_data);
- $row->id = $grid_data->__row__id;
- TDataGrid::replaceRowById('itens_romaneio_entrega_fk_romaneio_list', $grid_data->__row__id, $row);
- TTransaction::close();
- $data = new stdClass;
- $data->NumEntrega = '';
- $data->itens_romaneio_entrega_fk_romaneio_id = '';
- $data->itens_romaneio_entrega_fk_romaneio_solicitacao = '';
- $data->itens_romaneio_entrega_fk_romaneio_remetente_id = '';
- $data->itens_romaneio_entrega_fk_romaneio_destinatario_id = '';
- $data->itens_romaneio_entrega_fk_romaneio_volume = '';
- $data->itens_romaneio_entrega_fk_romaneio_peso = '';
- $data->itens_romaneio_entrega_fk_romaneio_cubagem = '';
- $data->itens_romaneio_entrega_fk_romaneio_valor_nfe = '';
- $data->itens_romaneio_entrega_fk_romaneio_ocoren = '';
- $data->itens_romaneio_entrega_fk_romaneio__row__id = '';
- TForm::sendData(self::$formName, $data);
- TScript::create("
- var element = $('#60be619532d84');
- if(typeof element.attr('add') != 'undefined')
- {
- element.html(base64_decode(element.attr('add')));
- }
- ");
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- }
- }
- public static function onEditDetailItensRomaneioEntrega($param = null)
- {
- try
- {
- $__row__data = unserialize(base64_decode($param['__row__data']));
- $__row__data->__display__ = is_array($__row__data->__display__) ? (object) $__row__data->__display__ : $__row__data->__display__;
- $data = new stdClass;
- $data->NumEntrega = $__row__data->__display__->NumEntrega ?? null;
- $data->itens_romaneio_entrega_fk_romaneio_id = $__row__data->__display__->id ?? null;
- $data->itens_romaneio_entrega_fk_romaneio_solicitacao = $__row__data->__display__->solicitacao ?? null;
- $data->itens_romaneio_entrega_fk_romaneio_remetente_id = $__row__data->__display__->remetente_id ?? null;
- $data->itens_romaneio_entrega_fk_romaneio_destinatario_id = $__row__data->__display__->destinatario_id ?? null;
- $data->itens_romaneio_entrega_fk_romaneio_volume = $__row__data->__display__->volume ?? null;
- $data->itens_romaneio_entrega_fk_romaneio_peso = $__row__data->__display__->peso ?? null;
- $data->itens_romaneio_entrega_fk_romaneio_cubagem = $__row__data->__display__->cubagem ?? null;
- $data->itens_romaneio_entrega_fk_romaneio_valor_nfe = $__row__data->__display__->valor_nfe ?? null;
- $data->itens_romaneio_entrega_fk_romaneio_ocoren = $__row__data->__display__->ocoren ?? null;
- $data->itens_romaneio_entrega_fk_romaneio__row__id = $__row__data->__row__id;
- TForm::sendData(self::$formName, $data);
- TScript::create("
- var element = $('#60be619532d84');
- if(!element.attr('add')){
- element.attr('add', base64_encode(element.html()));
- }
- element.html(\"<span><i class='far fa-edit' style='color:#478fca;padding-right:4px;'></i>Editar</span>\");
- if(!element.attr('edit')){
- element.attr('edit', base64_encode(element.html()));
- }
- ");
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- }
- }
- public static function onDeleteDetailItensRomaneioEntrega($param = null)
- {
- try
- {
- $__row__data = unserialize(base64_decode($param['__row__data']));
- $data = new stdClass;
- $data->NumEntrega = '';
- $data->itens_romaneio_entrega_fk_romaneio_id = '';
- $data->itens_romaneio_entrega_fk_romaneio_solicitacao = '';
- $data->itens_romaneio_entrega_fk_romaneio_remetente_id = '';
- $data->itens_romaneio_entrega_fk_romaneio_destinatario_id = '';
- $data->itens_romaneio_entrega_fk_romaneio_volume = '';
- $data->itens_romaneio_entrega_fk_romaneio_peso = '';
- $data->itens_romaneio_entrega_fk_romaneio_cubagem = '';
- $data->itens_romaneio_entrega_fk_romaneio_valor_nfe = '';
- $data->itens_romaneio_entrega_fk_romaneio_ocoren = '';
- $data->itens_romaneio_entrega_fk_romaneio__row__id = '';
- TForm::sendData(self::$formName, $data);
- TDataGrid::removeRowById('itens_romaneio_entrega_fk_romaneio_list', $__row__data->__row__id);
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- }
- }
- public function onSave($param = null)
- {
- $status = $param['status'];
- // unidade atual
- $uni_dade = TSession::getValue('userunitid');
- $nS = $param['serie'];
- $Sn = $param['numero'];
- switch ($status) {
- case 3: //
- new TMessage('error','Romaneio Cancelado!');
- break;
- case 2: // Emitido
- new TMessage('error','Romaneio já Emitido' );
- break;
- default:
- // Se for igual a Lançado ou nunca foi lançado
- try
- {
- if ($Sn == null) {
- TTransaction::open('transpalog');
- $num = 0;
- $conn = TTransaction::get();
- $sql = "SELECT numero FROM romaneio_entrega WHERE unidade = '".$uni_dade."' AND serie = '".$nS."' ORDER BY numero DESC LIMIT 1";
- $result = $conn->query($sql);
- $objects = $result->fetchAll(PDO::FETCH_CLASS, "stdClass");
- if($objects)
- {
- foreach($objects as $object)
- {
- $num = $object->numero;
- $num++;
- $object = new stdClass();
- $object->numero = $num;
- TForm::sendData(self::$formName, $object);
- }
- }
- TTransaction::close();
- }
- $object = new stdClass();
- $object->status = 1;
- $object->unidade = TSession::getValue('userunitid');
- $object->user_lancamento = TSession::getValue('username');
- TForm::sendData(self::$formName, $object);
- TTransaction::open(self::$database); // open a transaction
- $messageAction = null;
- $this->form->validate(); // validate form data
- $object = new RomaneioEntrega(); // create an empty object
- $data = $this->form->getData(); // get form data as array
- if ($Sn == null) {
- $data->numero = $num;
- }
- $data->status = 1;
- $data->unidade = TSession::getValue('userunitid');
- $data->user_lancamento =TSession::getValue('username');
- $object->fromArray( (array) $data); // load the object with data
- $object->store(); // save the object
- $this->fireEvents($object);
- TForm::sendData(self::$formName, (object)['id' => $object->id]);
- $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){
- // Tratamento de erro quando os campos vem zerado da solicitação
- //campo do DB da 1 aba ==== variavel e campo do DB da segunda aba
- if ($detailObject->volume != null) {
- $masterObject->volume += $detailObject->volume;
- } else {
- $masterObject->volume += 0;
- }
- if ($detailObject->peso != null) {
- $masterObject->peso += $detailObject->peso;
- } else {
- $masterObject->peso += 0;
- }
- if ($detailObject->valor_nfe != null) {
- $masterObject->valor_nfe += $detailObject->valor_nfe;
- } else {
- $masterObject->valor_nfe += 0;
- }
- if ($detailObject->cubagem != null) {
- $masterObject->cubagem += $detailObject->cubagem;
- } else {
- $masterObject->cubagem += 0;
- }
- });
- // Se não colocar esse código não funciona <<<<<<<<<<<<<<
- $object->store(); // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- // get the generated {PRIMARY_KEY}
- $data->id = $object->id;
- $this->form->setData($data); // fill form data
- TTransaction::close(); // close the transaction
- new TMessage('info', "Romaneio Salvo", $messageAction);
- }
- catch (Exception $e) // in case of exception
- {
- //</catchAutoCode>
- new TMessage('error', $e->getMessage()); // shows the exception error message
- $this->form->setData( $this->form->getData() ); // keep form data
- TTransaction::rollback(); // undo all pending operations
- }
- break;
- } // Fim do default do switch
- }
- public function onEdit( $param )
- {
- try
- {
- if (isset($param['key']))
- {
- $key = $param['key']; // get the parameter $key
- TTransaction::open(self::$database); // open a transaction
- $object = new RomaneioEntrega($key); // instantiates the Active Record
- $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){
- //code here
- });
- $this->form->setData($object); // fill the form
- $this->fireEvents($object);
- TTransaction::close(); // close the transaction
- }
- else
- {
- $this->form->clear();
- }
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- TTransaction::rollback(); // undo all pending operations
- }
- }
- /**
- * Clear form data
- * @param $param Request
- */
- public function onClear( $param )
- {
- $this->form->clear(true);
- }
- public function onShow($param = null)
- {
- }
- public function fireEvents( $object )
- {
- $obj = new stdClass;
- if(is_object($object) && get_class($object) == 'stdClass')
- {
- if(isset($object->motorista_id))
- {
- $value = $object->motorista_id;
- $obj->motorista_id = $value;
- }
- if(isset($object->veiculo_id))
- {
- $value = $object->veiculo_id;
- $obj->veiculo_id = $value;
- }
- }
- elseif(is_object($object))
- {
- if(isset($object->motorista_id))
- {
- $value = $object->motorista_id;
- $obj->motorista_id = $value;
- }
- if(isset($object->veiculo_id))
- {
- $value = $object->veiculo_id;
- $obj->veiculo_id = $value;
- }
- }
- TForm::sendData(self::$formName, $obj);
- }
- }
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.
Nataniel, obrigado pela luz, eu entendi o que você disse, mas sou iniciante com o php, você teria um exemplo pra passar.