Array
(
)

CAKEPHP Salvar em duas tabelas

PHP
Michel Pael
   - 30 ago 2013

amigos, tenho duas tabelas a seguir:

tabela contasrecebers:
id
categcrecebers_id
date
dt_venc
valor
anotacoes
tipo_doc
nr_doc
conta_destino
pagaragora
valor_pgto
dt_pgto

tabela caixa:
id
anotacoes
conta_caixa
categoria
valor
valor_pago
dtlancamento
dtvencimento
dtpagamento
tipo_doc
nr_documento
situacao

preciso atualizar os dados pelo id na tabela contasrecebers e dar insert na tabela caixas, só que no meu controler ContasreceberController o insert não tá funcionando.

Veja a função pagar!!

ContasreceberController.php

Citação:
<?php
class ContasreceberController extends AppController
{
var $name = "Contasrecebers"; // Para mander compatibilidade com o PHP 4
var $helpers = array('Html', 'Form');
var $scaffold;
public function index() {

$this->set('contasrecebers', $this->Contasreceber->find('all',array('conditions'=>array('Contasreceber.pagaragora'=>NULL), 'order'=>array('Contasreceber.id DESC'))));
}

public function ver($id = null) {

if(!$id){
throw new NotFoundException(__('Conta inválida!'));
}
$conta = $this->Contasreceber->findById($id);
if(!$conta){
throw new NotFoundException(__('Conta inválida!'));
}
$this->set('conta', $conta);
}

public function criar(){
$categcrecebers = $this->Contasreceber->Categcreceber->find('list');
$categcrecebers = $this->Contasreceber->Categcreceber->find('list', array('fields' => array('Categcreceber.id', 'Categcreceber.nome'),));
$this->set(compact('categcrecebers'));
//Checar se a requisição é do tipo POST. Isto evita o usuário de inserir dados nulos.
if ($this->request->is('post')){
// $this->Contasreceber->create();
// $date1 = explode("/",$this->data['Contasreceber']['dt_venc']);
// $this->data['Contasreceber']['dt_venc'] = gmmktime(23, 59, 0, $date1[1], $date1[0], $date1[2]);
//Salvando novo usuário
if ($this->Contasreceber->save($this->request->data)){
//Enviando uma mensagem ao usuário
$this->Session->setFlash('<font color="#FF0000">DADOS SALVOS CON SUCESSO!</font>');
//Redirecionando para a lista de usuários
$this->redirect(array('action' => 'index'));
}else{
//Se houver falha
$this->Session->setFlash('<font color=#FF0000>Falha na gravação!</font>');
}
}
}

public function pagar($id) {

if (!$id) {
throw new NotFoundException(__('Conta inválida!'));
}

$post = $this->Contasreceber->findById($id);
if (!$post) {
throw new NotFoundException(__('Conta inválida!'));
}

if ($this->request->is('post') || $this->request->is('put')) {
$this->Contasreceber->id = $id;
// $this->Caixas->id = $id;
//print_r($this->data);
if (!empty($this->data)) {
$this->Contasreceber->save($this->request->data);
// $this->Caixas->create();
$this->Caixas->save($this->request->data);
$this->Session->setFlash(__('Conta atualizada!'));
//return $this->redirect(array('action' => 'index'));
//print_r($this->data);
}
$this->Session->setFlash(__('FALHA!'));
}

if (!$this->request->data) {
$this->request->data = $post;
}

}

public function atualizar() {

//Pegando o código do usuário que vai ser atualizado e apontando na variável $id
$id = $this->request->params['pass'][0];

//Apontando o codigoUsuario do usuário para atualização
$this->Contasreceber->id = $id;

//Checando se o usuário existe
if( $this->Contasreceber->exists() ){

//Checando se a requisição feita é do tipo post ou put
if( $this->request->is( 'post' ) || $this->request->is( 'put' ) ){

//Salvando o usuário
if( $this->Contasreceber->save( $this->request->data ) ){

//Enviando uma mensagem para o usuário
$this->Session->setFlash('<font color="#FF0000">DADOS ATUALIZADOS COM SUCESSO!</font>');

//Redirecionando para a tela inicial
$this->redirect(array('action' => 'index'));

}else{

//Caso ocorra um erro na atualização do usuário
$this->Session->setFlash('<font color="#FF0000">Falha na atualização!</font>');

}

}else{

//Se não foi uma requisição do tipo post ou put, coloca-se os dados do usuário no formulário da view automaticamente
$this->request->data = $this->Contasreceber->read();

}

}else{

//Se o usuário não existe enviar uma mensagem que o usuário é inexistente
$this->Session->setFlash('<font color="#FF0000">A Conta que você está desejando atualizar não existe!</font>');

//E redirecionar para a listagem de usuários
$this->redirect(array('action' => 'index'));
}
}

public function excluir() {

//Pegando o código do usuário que vai ser atualizado e apontando na variável $id
$id = $this->request->params['pass'][0];

//Checando se a requisição é do tipo GET. Neste caso precisamos que a requisição seja do tipo post, pois usamos o método postLink na view que deleta o usuário
if( $this->request->is('get') ){

//Enviando uma mensagem para o usuário
$this->Session->setFlash('<font color="#FF0000">Não é permitido excluir contas através do método GET!</font>');

}else{

//Checando se o id do usuário é válido
if(!$id ) {

//Enviando uma mensagem para o usuário
$this->Session->setFlash('<font color="#FF0000">Código da conta inválido!</font>');

}else{

//Excluindo usuário
if( $this->Contasreceber->delete( $id ) ){

//Enviando uma mensagem para o usuário
$this->Session->setFlash('<font color="#FF0000">Conta excluída com sucesso!</font>');

}else{

//Se não for possível excluir o usuário, enviar mensagem
$this->Session->setFlash('<font color="#FF0000">Falha durante exclusão!</font>');

}
}
}

//Redirecionando para a listagem de usuários
$this->redirect(array('action' => 'index'));
}//Fechando a classe UsuariosController

}
?>

Marcio Araujo
   - 07 set 2013

alguem poderia tirar essa duvida.

Karlos Schett
   - 11 set 2013

alguem ??

Michel Pael
   - 11 set 2013

ficou assim a função pagar:

#Código

public function pagar($id) {
 
				    if (!$id) {
				        throw new NotFoundException(__('Conta inválida!'));
				    }
				
				    $post = $this->Contasreceber->findById($id);

				    if (!$post) {
				        throw new NotFoundException(__('Conta inválida!'));
				    }
				
				    if ($this->request->is('post') || $this->request->is('put')) {
				    $this->Contasreceber->id = $id;

					//print_r($this->data);
				        if (!empty($this->data)) {

					    $conta = $this->Contasreceber->save($this->request->data);

					    if(!empty($conta)){

					    	$caixa = $this->Contasreceber->Caixas->save(array('anotacoes'=>$post['Contasreceber']['anotacoes'], 'conta_caixa'=>'Caixa interno', 'categoria'=>'0', 'valor'=>$post['Contasreceber']['valor'], 'valor_pago'=>$conta['Contasreceber']['valor_pgto'], 'dtlancamento'=>$conta['Contasreceber']['dtlancamento'], 'dtvencimento'=>$post['Contasreceber']['dt_venc'], 'dtpagamento'=>$conta['Contasreceber']['dtpagamento'], 'tipo_doc'=>$conta['Contasreceber']['tipo_doc'],  'nr_documento'=>$conta['Contasreceber']['nr_documento'], 'situacao'=>'Pago', 'user_id'=>$this->Session->read('Auth.User.id')));
				            	$this->Session->setFlash(__('<center><font color="#FF0000"><h2>Conta executada com sucesso!</h2></font></center>'));
				            	return $this->redirect(array('action' => 'index'));

					    }


				        }
				        $this->Session->setFlash(__('<center><font color="#FF0000"><h2>FALHA!</h2></font></center>'));
				    }
				
				    if (!$this->request->data) {
				        $this->request->data = $post;
				    }


	}