CS
Erro ao gravar os dados de um TMultiField
Fechado
Pessoal,
Boa tarde !!!
preciso de uma ajuda, por favor.
Em dezembro comprei as vídeos aulas e os livros e já estou fazendo bastante coisas no Adianti Framework, a ferramenta é fantástica...mais como todo aprendiz estou travado em uma processo... já analisei o fonte umas 20 vezes mais não estou conseguindo entender o problema...até tenho outra tela que usa recurso parecido esta funcionando mais não consigo encontrar diferença,
Quando tento salvar os dados no formulario FormacaoProdutosForm ele está dando erro, vou colocar o arquivo com o erro em anexo.
por favor quem puder dar uma dica eu agradeço.
Vou colocar os fontes abaixo:
Boa tarde !!!
preciso de uma ajuda, por favor.
Em dezembro comprei as vídeos aulas e os livros e já estou fazendo bastante coisas no Adianti Framework, a ferramenta é fantástica...mais como todo aprendiz estou travado em uma processo... já analisei o fonte umas 20 vezes mais não estou conseguindo entender o problema...até tenho outra tela que usa recurso parecido esta funcionando mais não consigo encontrar diferença,
Quando tento salvar os dados no formulario FormacaoProdutosForm ele está dando erro, vou colocar o arquivo com o erro em anexo.
por favor quem puder dar uma dica eu agradeço.
Vou colocar os fontes abaixo:
- <?php
- class FormacaoProdutosForm extends TStandardForm
- {
- protected $form;
- private $datagrid;
- function __construct()
- {
- parent::__construct();
- // creates the form
- $this->form = new TQuickForm('form_FormacaoProdutosForm');
- $this->form->class = 'tform'; // CSS class
- // defines the form title
- $this->form->setFormTitle('Formação de Produtos');
- // define the database and the Active Record
- parent::setDatabase('conexao');
- parent::setActiveRecord('FormacaoProdutos');
- // create the form fields
- 1156 = new TEntry('id');
- $refer = new TEntry('refer');
- $obs = new TEntry('obs');
- 1156_grupo_de_produtos = new ">TDBSeekButton('id_grupo_de_produtos', 'conexao', $this->form->getName(), 'GrupodeProduto', 'nome', 'id_grupo_de_produtos', 'nomegrupoproduto');
- $nomegrupoproduto = new TEntry('nomegrupoproduto');
- 1156_unidade_de_medidas = new ">TDBSeekButton('id_unidade_de_medidas', 'conexao', $this->form->getName(), 'UnidadedeMedida', 'nome', 'id_unidade_de_medidas', 'nomeunidmedida');
- $nomeunidmedida = new TEntry('nomeunidmedida');
- $peso = new TEntry('peso');
- $status = new TCombo('status');
- $data_alteracao = new TDate('data_alteracao');
- $tipocalculo = new TCombo('tipocalculo');
- $altura = new TEntry('altura');
- $largura = new TEntry('largura');
- $qtdepedras = new TEntry('qtdepedras');
- $qtdesoldas = new TEntry('qtdesoldas');
- $qtdemontagens = new TEntry('qtdemontagens');
- $vlrfotocorrosao = new TEntry('vlrfotocorrosao');
- $vlrfundicao = new TEntry('vlrfundicao');
- $vlroutros = new TEntry('vlroutros');
- $vlracabbruto = new TEntry('vlracabbruto');
- $vlracabpronto = new TEntry('vlracabpronto');
- $vlrau1ml = new TEntry('vlrau1ml');
- $vlrau2ml = new TEntry('vlrau2ml');
- $vlrau3ml = new TEntry('vlrau3ml');
- $vlrau4ml = new TEntry('vlrau4ml');
- $vlrau5ml = new TEntry('vlrau5ml');
- $vlrag30ml = new TEntry('vlrag30ml');
- $vlrniquel = new TEntry('vlrniquel');
- $vlrniquelfree = new TEntry('vlrniquelfree');
- $vlrgrafite = new TEntry('vlrgrafite');
- $margemlucro = new TEntry('margemlucro');
- $materia_prima = new TMultiField('materia_prima');
- $mp_id_produto = new ">TDBSeekButton('mp_id_produto', 'conexao', $this->form->getName(), 'Produto', 'referencia', 'materia_prima_id_produto', 'materia_prima_refer');
- $mp_descproduto = new TEntry( 'mp_descproduto' );
- $mp_qtde = new TEntry( 'mp_qtde' );
- $mp_valor = new TEntry( 'mp_valor' );
- $mp_divisor = new TEntry( 'mp_divisor');
- $mp_vlrunitario = new TEntry( 'mp_vlrunitario' );
- $mp_id_destino = new TCombo( 'mp_id_destino' );
- // não editaveis
- 1156->setEditable( FALSE );
- $nomegrupoproduto->setEditable(FALSE);
- $nomeunidmedida->setEditable(FALSE);
- // tamanho dos campos
- 1156_grupo_de_produtos->setSize(70);
- 1156_unidade_de_medidas->setSize(70);
- $nomegrupoproduto->setSize(300);
- $nomeunidmedida->setSize(300);
- 1156->setSize(100);
- $refer->setSize(200);
- $data_alteracao->setSize(90);
- $obs->setSize(508);
- $peso->setSize(100);
- $altura->setSize(100);
- $largura->setSize(100);
- $margemlucro->setSize(100);
- $qtdemontagens->setSize(100);
- $qtdepedras->setSize(100);
- $qtdesoldas->setSize(100);
- $vlrfotocorrosao->setSize(100);
- $vlrfundicao->setSize(100);
- $vlroutros->setSize(100);
- $vlracabbruto->setSize(100);
- $vlracabpronto->setSize(100);
- $status->setSize(90);
- $vlrau1ml->setSize(100);
- $vlrau2ml->setSize(100);
- $vlrau3ml->setSize(100);
- $vlrau4ml->setSize(100);
- $vlrau5ml->setSize(100);
- $vlrag30ml->setSize(100);
- $vlrniquel->setSize(100);
- $vlrniquelfree->setSize(100);
- $vlrgrafite->setSize(100);
- $mp_id_destino->setSize(200);
- $mp_id_produto->setSize(70);
- $mp_descproduto->setSize(150);
- $mp_qtde->setSize(70);
- $mp_valor->setSize(100);
- $mp_vlrunitario->setSize(100);
- $mp_id_destino->setSize(200);
- // Validações
- $refer->addValidation( 'Referência', new TRequiredValidator );
- 1156_grupo_de_produtos->addValidation( 'Grupo de Produtos', new TRequiredValidator );
- 1156_unidade_de_medidas->addValidation( 'Unidade de Medidas', new TRequiredValidator );
- $peso->addValidation( 'Peso', new TRequiredValidator );
- $status->addValidation( 'Status', new TRequiredValidator );
- $tipocalculo->addValidation('Tipo de Calculo', new TRequiredValidator );
- $data_alteracao->addValidation( 'Data de Alteração', new TRequiredValidator );
- $margemlucro->addValidation( 'Margem de Lucro', new TRequiredValidator );
- $refer->addValidation( 'Referência', new TMaxLengthValidator, array(20) );
- // mascaras
- $peso->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $altura->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $largura->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $margemlucro->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $qtdemontagens->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $qtdepedras->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $qtdesoldas->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlrfotocorrosao->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlrfundicao->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlroutros->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlracabbruto->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlracabpronto->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlrau1ml->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlrau2ml->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlrau3ml->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlrau4ml->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlrau5ml->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlrag30ml->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlrniquel->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlrniquelfree->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- $vlrgrafite->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- // $mp_qtde->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- // $mp_valor->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- // $mp_vlrunitario->setNumericMask(2, ',', '.', TRUE); // TRUE: process mask when editing and saving
- // alimenta combos
- $mp_id_destino->addItems( array( 1 => 'Vlr. Fotocorrosão', 2 => 'Vlr. Fundição', 3 => 'Vlr. Outros' ) );
- $status->addItems( array( 'A' => 'Ativo', 'I' => 'Inativo' ) );
- $tipocalculo->addItems( array( '0' => 'Sem Calculo', '1' => 'Automático' ) );
- // add the form fields
- $this->form->addQuickFields('Código' , array( 1156, new TLabel('Referência') , $refer, new TLabel('Tipo de Cálculo'), $tipocalculo, new TLabel('Status'), $status ) );
- $this->form->addQuickFields('Data Alteração' , array( $data_alteracao, new TLabel('Obs') , $obs, new TLabel('ML'), $margemlucro ) );
- $this->form->addQuickFields('Grupo do Produto' , array( 1156_grupo_de_produtos, $nomegrupoproduto, new TLabel('Unidade de Medida'), 1156_unidade_de_medidas, $nomeunidmedida ) );
- $this->form->addQuickFields('Peso' , array( $peso, $lbl_altura = new TLabel('Altura'.' '.' '.' '.' '.' '.' '.' '.' '.' '.' '.' '),
- $altura, new TLabel('Largura'.' '.' '.' '), $largura, new TLabel( 'Pedras'.' '.' '.' '.' '.' '.' '.' '.' '.' '.' '.' '.' ' ),
- $qtdepedras, new TLabel('Soldas'.' '.' '.' '.' '.' '.' '.' '.' '.' '.' '.' '.' '.' '.' '),
- $qtdesoldas, new TLabel('Montagens'), $qtdemontagens ) );
- $this->form->addQuickFields('Vlr Fotocorrosão' , array( $vlrfotocorrosao, new TLabel('Vlr Fundição'), $vlrfundicao, new TLabel( 'Vlr Outros' ), $vlroutros, new TLabel('Vlr Acab Bruto'), $vlracabbruto, new TLabel( 'Vlr Acab Pronto' ), $vlracabpronto ) );
- $row = $this->form->addRow();
- $row->class = 'tformsection';
- $row->addCell( new TLabel('Valores'))->colspan = 2;
- $this->form->addQuickFields('Vlr Au 1ml' , array( $vlrau1ml, new TLabel('Vlr Au 2ml') , $vlrau2ml, new TLabel( 'Vlr Au 3ml'), $vlrau3ml, new TLabel('Vlr Au 4ml'), $vlrau4ml, new TLabel('Vlr Au 5ml'), $vlrau5ml ) );
- $this->form->addQuickFields('Vlr Ag 30ml', array( $vlrag30ml, new TLabel('Vlr Niquel'), $vlrniquel, new TLabel('Vlr N. Free'), $vlrniquelfree, new TLabel( 'Vlr Grafite'), $vlrgrafite ) );
- $row = $this->form->addRow();
- $row->class = 'tformsection';
- $row->addCell( new TLabel('Matéria Prima'))->colspan = 2;
- $materia_prima->setHeight(250);
- $materia_prima->setOrientation('horizontal');
- $materia_prima->addField('id_produto' , 'Produto' , $mp_id_produto, 100, TRUE);
- $materia_prima->addField('refer', 'Referencia' , $mp_descproduto,200, TRUE);
- $materia_prima->addField('qtde' , 'Qtde' , $mp_qtde , 100, TRUE);
- $materia_prima->addField('valor', 'Valor', $mp_valor, 150);
- $materia_prima->addField('divisor', 'Divisor', $mp_divisor, 100 );
- $materia_prima->addField('vlrunitario', 'Vlr. Unitário', $mp_vlrunitario, 100 );
- $materia_prima->addField('id_destino', 'Destino', $mp_id_destino, 200 );
- $row = $this->form->addRow();
- $row->addCell( $materia_prima )->colspan = 2;
- // add the actions
- $button1= new TButton('action1');
- $button1->setAction(new TAction(array($this, 'onSave')), 'Salvar');
- $button1->setImage('ico_save.png');
- $button2=new TButton('list');
- $button2->setAction(new TAction(array('FormacaoProdutosList', 'onReload')), 'Voltar a Listagem');
- $button2->setImage('ico_datagrid.png');
- $this->form->setFields( array( 1156, $refer, $obs, 1156_grupo_de_produtos, $nomegrupoproduto, 1156_unidade_de_medidas, $nomeunidmedida, $peso, $status, $data_alteracao,
- $tipocalculo, $altura, $largura, $qtdepedras, $qtdesoldas, $qtdemontagens, $vlrfotocorrosao, $vlrfundicao, $vlroutros, $vlracabbruto, $vlracabpronto,
- $vlrau1ml, $vlrau2ml, $vlrau3ml, $vlrau4ml, $vlrau5ml, $vlrag30ml, $vlrniquel, $vlrniquelfree, $vlrgrafite, $margemlucro, $materia_prima, $button1,
- $button2 ) );
- $subtable = new TTable;
- $row = $subtable->addRow();
- $row->addCell($button1);
- $row->addCell($button2);
- $vbox = new TVBox;
- $vbox->add(new TXMLBreadCrumb('menu.xml', 'FormacaoProdutosList'));
- $vbox->add($this->form);
- $vbox->add($subtable);
- parent::add($vbox);
- }
- /**
- * Overloaded method onSave()
- * Executed whenever the user clicks at the save button
- */
- function onSave()
- {
- try
- {
- // open a transaction with database 'samples'
- TTransaction::open('conexao');
- $this->form->validate();
- // read the form data and instantiates an Active Record
- $mat_prima = $this->form->getData('FormacaoProdutos');
- if ($mat_prima->materia_prima)
- {
- foreach ($mat_prima->materia_prima as $item_mp)
- {
- var_dump( $item_mp );
- $mat_prima->addFormacaoProdutosMP($item_mp);
- }
- }
- $mat_prima->store();
- $this->form->setData($mat_prima);
- // shows the success message
- new TMessage('info', _t('Record saved'));
- TTransaction::close(); // close the transaction
- }
- catch (Exception $e) // in case of exception
- {
- // shows the exception error message
- new TMessage('error', '<b>Error</b>: ' . $e->getMessage());
- // undo all pending operations
- TTransaction::rollback();
- }
- }
- function onEdit($param)
- {
- try
- {
- if (isset($param['key']))
- {
- // open a transaction with database 'samples'
- TTransaction::open('conexao');
- // load the Active Record according to its ID
- $produto = new FormacaoProdutos($param['key']);
- // load the contacts (composition)
- $produto->materia_prima
- = $produto->getFormacaoProdutosMPs();
- // fill the form with the active record data
- $this->form->setData($produto);
- // close the transaction
- TTransaction::close();
- }
- else
- {
- $this->form->clear();
- }
- }
- catch (Exception $e) // in case of exception
- {
- // shows the exception error message
- new TMessage('error', '<b>Error</b>' . $e->getMessage());
- // undo all pending operations
- TTransaction::rollback();
- }
- }
- }
- ?>
- <?php
- class FormacaoProdutos extends TRecord
- {
- const TABLENAME = 'public.formacao_produtos';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'serial'; // {max, serial}
- private $grupode_produto;
- private $unidadede_medida;
- private $formacao_produtos_mps;
- /**
- * Constructor method
- */
- public function __construct(1156 = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct(1156, $callObjectLoad);
- parent::addAttribute('refer');
- parent::addAttribute('peso');
- parent::addAttribute('id_grupo_de_produtos');
- parent::addAttribute('id_unidade_de_medidas');
- parent::addAttribute('obs');
- parent::addAttribute('tipocalculo');
- parent::addAttribute('status');
- parent::addAttribute('altura');
- parent::addAttribute('largura');
- parent::addAttribute('qtdepedras');
- parent::addAttribute('qtdesoldas');
- parent::addAttribute('qtdemontagens');
- parent::addAttribute('vlrfotocorrosao');
- parent::addAttribute('vlrfundicao');
- parent::addAttribute('vlroutros');
- parent::addAttribute('vlracabbruto');
- parent::addAttribute('vlracabpronto');
- parent::addAttribute('vlrau1ml');
- parent::addAttribute('vlrau2ml');
- parent::addAttribute('vlrau3ml');
- parent::addAttribute('vlrau4ml');
- parent::addAttribute('vlrau5ml');
- parent::addAttribute('vlrag30ml');
- parent::addAttribute('vlrniquel');
- parent::addAttribute('vlrniquelfree');
- parent::addAttribute('vlrgrafite');
- parent::addAttribute('data_alteracao');
- parent::addAttribute('margemlucro');
- }
- /**
- * Method set_grupode_produto
- * Sample of usage: $formacao_produtos->grupode_produto = $object;
- * @param $object Instance of GrupodeProduto
- */
- public function set_grupode_produto(GrupodeProduto $object)
- {
- $this->grupode_produto = $object;
- $this->id_grupode_produto = $object->id;
- }
- /**
- * Method get_grupode_produto
- * Sample of usage: $formacao_produtos->grupode_produto->attribute;
- * @returns GrupodeProduto instance
- */
- public function get_grupode_produto()
- {
- // loads the associated object
- if (empty($this->grupode_produto))
- $this->grupode_produto = new GrupodeProduto($this->id_grupode_produto);
- // returns the associated object
- return $this->grupode_produto;
- }
- /**
- * Method set_unidadede_medida
- * Sample of usage: $formacao_produtos->unidadede_medida = $object;
- * @param $object Instance of UnidadedeMedida
- */
- public function set_unidadede_medida(UnidadedeMedida $object)
- {
- $this->unidadede_medida = $object;
- $this->id_unidadede_medida = $object->id;
- }
- /**
- * Method get_unidadede_medida
- * Sample of usage: $formacao_produtos->unidadede_medida->attribute;
- * @returns UnidadedeMedida instance
- */
- public function get_unidadede_medida()
- {
- // loads the associated object
- if (empty($this->unidadede_medida))
- $this->unidadede_medida = new UnidadedeMedida($this->id_unidadede_medida);
- // returns the associated object
- return $this->unidadede_medida;
- }
- /**
- * Method addFormacaoProdutosMP
- * Add a FormacaoProdutosMP to the FormacaoProdutos
- * @param $object Instance of FormacaoProdutosMP
- */
- public function addFormacaoProdutosMP(FormacaoProdutosMP $object)
- {
- $this->formacao_produtos_mps[] = $object;
- }
- /**
- * Method getFormacaoProdutosMPs
- * Return the FormacaoProdutos' FormacaoProdutosMP's
- * @return Collection of FormacaoProdutosMP
- */
- public function getFormacaoProdutosMPs()
- {
- return $this->formacao_produtos_mps;
- }
- /**
- * Reset aggregates
- */
- public function clearParts()
- {
- $this->formacao_produtos_mps = array();
- }
- /**
- * Load the object and its aggregates
- * @param 1156 object ID
- */
- public function load(1156)
- {
- // load the related FormacaoProdutosMP objects
- $repository = new TRepository('FormacaoProdutosMP');
- $criteria = new TCriteria;
- $criteria->add(new TFilter('id_formacao_produtos', '=', 1156));
- $formacao_produtos_mps = $repository->load($criteria);
- if ($formacao_produtos_mps)
- {
- foreach ($formacao_produtos_mps as $formacao_produtos_mp)
- {
- $formacao_produtos_mp = new FormacaoProdutosMP( $formacao_produtos_mp->id_formacao_produtos_mp );
- $this->addFormacaoProdutosMP($formacao_produtos_mp);
- }
- }
- // load the object itself
- return parent::load(1156);
- }
- /**
- * Store the object and its aggregates
- */
- public function store()
- {
- // store the object itself
- parent::store();
- // delete the related FormacaoProdutosFormacaoProdutosMP objects
- $criteria = new TCriteria;
- $criteria->add(new TFilter('id_formacao_produtos', '=', $this->id));
- $repository = new TRepository('FormacaoProdutosMP');
- $repository->delete($criteria);
- // store the related FormacaoProdutosFormacaoProdutosMP objects
- if ($this->formacao_produtos_mps)
- {
- foreach ($this->formacao_produtos_mps as $formacao_produtos_mp)
- {
- $formacao_produtos_mp = new FormacaoProdutosMP;
- $formacao_produtos_mp->id_formacao_produtos_mp = $formacao_produtos_mp->id;
- $formacao_produtos_mp->id_formacao_produtos = $this->id;
- $formacao_produtos_mp->store();
- }
- }
- }
- /**
- * Delete the object and its aggregates
- * @param 1156 object ID
- */
- public function delete(1156 = NULL)
- {
- 1156 = isset(1156) ? 1156 : $this->id;
- // delete the related FormacaoProdutosFormacaoProdutosMP objects
- $repository = new TRepository('FormacaoProdutosMP');
- $criteria = new TCriteria;
- $criteria->add(new TFilter('id_formacao_produtos', '=', 1156));
- $repository->delete($criteria);
- // delete the object itself
- parent::delete(1156);
- }
- }
- ?>
- <?php
- class FormacaoProdutosMP extends TRecord
- {
- const TABLENAME = 'public.formacao_produtos_mp';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'serial'; // {max, serial}
- /**
- * Constructor method
- */
- public function __construct(1156 = NULL, $callObjectLoad = TRUE)
- {
- parent::__construct(1156, $callObjectLoad);
- parent::addAttribute('id_formacao_produtos');
- parent::addAttribute('id_produto');
- parent::addAttribute('qtde');
- parent::addAttribute('valor');
- parent::addAttribute('divisor');
- parent::addAttribute('vlrunitario');
- parent::addAttribute('id_destino');
- }
- }