Problema trabalhando com datas

Júnior,

Já tinha olhado neste link já, mais não deu certo pra mim. Mesmo assim obrigado

Abraços!!

Amigos,

Como faço para gerar relatórios no yii, do tipo em Excel ou PDF?

Agradeço…

Adriano, dá uma olhada nas extensões, procure por PDF e Excel na busca que se não me engano vi algo to tipo por lá

Abraços!!

Júnior,

É possível usar o IREPORT com esse framework??

Abraços!

Adriano

Cara, não conheço a ferramenta, geralmente muita coisa é possível criando-se extensões.

Acredito que seria melhor você abrir um novo tópico no fórum para essas questões, com tópicos específicos, mais pessoas podem contribuir e você obterá mais idéias.

:)

Abraços!

Amigo,

Por favor me ajude, tô perdido nesses relatórios. Não tô conseguindo gerar relatórios em pdf, você tem algum exemplo ai para que possa me dá uma luz. Desde já agradeço sua ajuda.

Sds,

Adriano Silva

Adriano, sugiro que você abra um novo tópico no fórum, pois este está com o título "Problema trabalhando com datas".

Com um tópico específico do assunto, o próprio autor das extensões poderá te ajudar, além de mais desenvolvedores que tenham passado pelo mesmo problema.

Infelizmente vou ficar te devendo essa, pois ainda não precisei utilizar os geradores de PDF nos meus projetos.

Abração!

:)

Amigo,

Como faço para que na GridView e na ListView mostre os números inteiros formatodos assim por exemplo: 1.124.255.000

Sds,

Adriano Silva

Amigo,

Sei que essa pergunta que vou fazer não tem nada com o yii, mas sabe como pego do DB o 2º maior numero. Tava pesquisando mais nao consegui. Se poderes me ajudar agradeço.

Sds,

Adriano Silva


ORDER BY num DESC limit 1 offset 1

usando o Active Record




$criteria=new CDbCriteria(array(

  'offset'=>1,

  'order'=>'num DESC'

));

$model->find($criteria);//find já usa limit=1



Obrigado pela dica amigo.

Abraço,

Adriano Silva

Amigo,

Como faço para que quando clique no botão EDITAR, por exemplo, o sistema antes de abrir a view update execute um update em outra tabela. As clásulas já estão preparadas, só não sei em que momento colacá-la, quando dispará este comando.

Agradeço desde já.

Adriano Silva

sobre acima que você citou um gerador de pdf, recomendo a extensão eexcelview

antes de ver a tela de update ? ou antes de salvar o update ?

de qualquer forma, é na action update do controller que você esta executando

Muito obrigado pela diga do gerador de PDF, vou dá uma olhada. No caso do Updade é o seguinte, tenho uma tabela de requisição de veiculos, onde escolho o veiculo e insiro os dados necessários, quando clico em adicionar, ele vai lá na tabela de veiculo e coloca o veiculo que escolhi com status de Indisponivel. Então quando clicar em update, ela tem que antes que mostrar o form de updade, ir na tabela de veiculo e colocar novamente o status daquele veículo para Disponível. Então como faço isso. Meu admin tá assim:




     array(

                'header' => 'Ações Atend',

                'class' => 'CButtonColumn',

                'template' => '{update}{finalize}{updatestart}{updatfinalize}',

                'updateButtonLabel' => 'Alterar Status',

                'viewButtonLabel' => 'Detalhes ou Efetuar Atendimento',

                'buttons' => array(

                    'update' => array(

                        'label' => 'Iniciar Atendimento',

                        'imageUrl' => 'images/iniciar.png',

                        'url' => 'Yii::app()->createUrl("/requisicao/start", array("id" => $data->req_id))',

                    ),

                    'finalize' => array(

                        'label' => 'Finalizar Atendimento',

                        'imageUrl' => 'images/finaliza.png',

                        'url' => 'Yii::app()->createUrl("/requisicao/finalize", array("id" => $data->req_id))',

                    ),

                    'updatestart' => array(

                        'label' => 'Editar Inicio',

                        'imageUrl' => 'images/Editar.gif',

                        'url' => 'Yii::app()->createUrl("/requisicao/updatestart", array("id" => $data->req_id))',

                    ),

                    'updatfinalize' => array(

                        'label' => 'Editar Final',

                        'imageUrl' => 'images/Edita.png',

                        'url' => 'Yii::app()->createUrl("/requisicao/updatfinalize", array("id" => $data->req_id))',

                    ),

                ),

            ),



Gostaria de quando clicar em updatestart, ele executar a query primeiro.

Sds,

Adriano Silva

na action update faça algo como




$model=$this->loadModel($id);//ou algo do genero

if($model->disponibilidade===$model::STATUS_INDISPONIVEL){

	$model->disponibilidade=$model::STATUS_DISPONIVEL;

	$model->save();

}



Fazendo isso ele executa primeiro a query? O meu controller tá assim




    public function actionUpdatestart() {

        

        $model = $this->loadModel();

        if ($model->req_status == requisicao::CATEGORIA_ABERTO) {

            throw new CHttpException(412, 'O Atendimento da Requisição tem que primeiro ser Iniciado.');

        }

        if (isset($_POST['requisicao'])) {

            $model->attributes = $_POST['requisicao'];

            if ($model->save())

                $this->redirect(array('admin', 'id' => $model->req_id));

        }


        $this->render('updatestart', array(

            'model' => $model,

        ));

    }



Lembrando que essa query é pra outra tabela.

Adriano,

Você vai precisar verificar o status, e depois dá um update nele, antes do:


if ($model->req_status == requisicao::CATEGORIA_ABERTO) {

Usando o exemplo do Gustavo.

Seria algo mais ou menos assim, ou tenho que criar uma query no models de Requisição e chamar no controller




    public function actionUpdatestart() {

        $model = $this->loadModel();

        if (($model->veiculo == $model->veiculo0->ve_id) && ($model->veiculo0->ve_status == veiculo::INDISPONIVEL)) {

            $model->veiculo0->ve_status == veiculo::DISPONIVEL;

        }

        if ($model->req_status == requisicao::CATEGORIA_ABERTO) {

            throw new CHttpException(412, 'O Atendimento da Requisição tem que primeiro ser Iniciado.');

        }

        if (isset($_POST['requisicao'])) {

            $model->attributes = $_POST['requisicao'];

            if ($model->save())

                $this->redirect(array('admin', 'id' => $model->req_id));

        }


        $this->render('updatestart', array(

            'model' => $model,

        ));

    }



Onde veiculo0 é a relation de Requisição com Veículo.

ou eu posso criar um link no próprio botão na gridview?




'updatestart' => array( 

                        'label' => 'Editar Inicio', 

                        'imageUrl' => 'images/Editar.gif', 

                        'url' => 'Yii::app()->createUrl("/requisicao/updatestart", array("id" => $data->req_id))', 

                    ), 




Sds,

Adriano Silva

E isso mesmo, só que vc esqueceu do $model->save(), por que não precisa alterar o status? Então!

Abaixo do:


$model->veiculo0->ve_status == veiculo::DISPONIVEL;

Tu coloca assim:




$model->veiculo0->ve_status == veiculo::DISPONIVEL;

$model->save();



Se não alterar o status, tu remove a validação, adicionando false dentro do save();


$model->save(false)

Amigo infelismente não deu certo,

coloquei assim:




    public function actionUpdatestart() {

        $model = $this->loadModel();

        if (($model->veiculo == $model->veiculo0->ve_id) && ($model->veiculo0->ve_status == veiculo::INDISPONIVEL)) {

            $model->veiculo0->ve_status == veiculo::DISPONIVEL;

            $model->save();

        }

        if ($model->req_status == requisicao::CATEGORIA_ABERTO) {

            throw new CHttpException(412, 'O Atendimento da Requisição tem que primeiro ser Iniciado.');

        }

        if (isset($_POST['requisicao'])) {

            $model->scenario = 'start';

            $model->attributes = $_POST['requisicao'];

            if ($model->start())

                $this->redirect(array('admin', 'id' => $model->req_id));

        }

        $this->render('start', array(

            'model' => $model,

        ));

    }



e assim:




    public function actionUpdatestart() {

        $model = $this->loadModel();

        if (($model->veiculo == $model->veiculo0->ve_id) && ($model->veiculo0->ve_status == veiculo::INDISPONIVEL)) {

            $model->veiculo0->ve_status == veiculo::DISPONIVEL;

            $model->save(false);

        }

        if ($model->req_status == requisicao::CATEGORIA_ABERTO) {

            throw new CHttpException(412, 'O Atendimento da Requisição tem que primeiro ser Iniciado.');

        }

        if (isset($_POST['requisicao'])) {

            $model->scenario = 'start';

            $model->attributes = $_POST['requisicao'];

            if ($model->start())

                $this->redirect(array('admin', 'id' => $model->req_id));

        }

        $this->render('start', array(

            'model' => $model,

        ));

    }



Mas o status do veículo lá na outra tabela não é alterado, o que posso fazer agora?

Sds,

Adriano Silva