Ow meu irmãos foi mal ae, estava transição da internet aqui e por causa do trampo.
Abaixo segue o que eu fiz:
[sql]CREATE TABLE IF NOT EXISTS carrinho
(
codcarrinho
int( NOT NULL,
codproduto
varchar(120) NOT NULL,
quant
int( NOT NULL,
sessao
varchar(27) NOT NULL,
PRIMARY KEY (codcarrinho
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
[/sql]
CarrinhoController.php
/**
* Ação que faz a atualização das quantidades de produtos(cada item).
*/
public function actionUpdatebasket() {
$session = Yii::app()->request->cookies['PHPSESSID']->value;
foreach ($_POST["quant"] as $key => $value) {
$model = Carrinho::model()->findByPk($key);
$model->quant = $value;
$model->save(false);
}
$this->redirect(Yii::app()->createUrl('carrinho'));
}
/**
* Ação que somente faz é guardar o pedido
*/
public function actionEnviarpedido() {
$model = new Carrinho('search');
$cliente = new CLIENTE;
$transportadora = new TRANSPOR;
$vencimento = new VENCIMENTO;
/**
* Resetar os campos que estão com validação obrigatorio, e não foi utilizado no formulário
*/
$_POST['Carrinho']['codcarrinho'] = 0;
$_POST['Carrinho']['quant'] = 0;
$_POST['Carrinho']['pesosaca'] = 0;
$_POST['Carrinho']['valorunitario'] = 0;
$_POST['Carrinho']['vc'] = 0;
$_POST['CLIENTE']['filial'] = 0;
$_POST['CLIENTE']['grupo'] = 0;
$_POST['CLIENTE']['comis'] = 0;
$_POST['CLIENTE']['cobtaxa'] = 0;
$_POST['CLIENTE']['inadimplente'] = 0;
$_POST['CLIENTE']['situacao'] = 0;
$_POST['VENCIMENTO']['deslocamento'] = 0;
$_POST['VENCIMENTO']['duplicata'] = 0;
$this->performAjaxValidation(array($model, $cliente, $transportadora, $vencimento));
$cliente = CLIENTE::model()->findByPk($_POST['CLIENTE']["codcliente"]);
$fazenda = FAZENDA::model()->findByPk($_POST['CLIENTE']["codcliente"]);
$transportadora = TRANSPOR::model()->findByPk($_POST['TRANSPOR']["codtranspor"]);
//$vencimento = VENCIMENTO::model()->findByPk($_POST["Carrinho"]["codvencimento"]);
$rebanho = empty($cliente->rebanho) ? 0 : $cliente->rebanho;
$fax = ($cliente->fax == '( ) - ') ? '' : $cliente->fax;
/**
* Formatando a data no formado MM/dd/yyyy
*/
$dataentrega = CDateTimeParser::parse($_POST["Carrinho"]["dataentrega"], 'dd/MM/yyyy');
$dataentrega = Yii::app()->dateFormatter->format('MM/dd/yyyy', $dataentrega);
/**
* Formatando o frete, para que não vai ponto(.)
*/
$frete = number_format($_POST["Carrinho"]["frete"], 2, '.', '');
/**
* Formatar a tranportadora, limit de 30
*/
$transportadora = substr($transportadora->nome, 0, 30);
$sql = "EXECUTE PROCEDURE INSERE_PEDIDOS ('1','0','" . Yii::app()->user->codrepresentante . "','{$cliente->nome}','{$cliente->codcliente}','{$fazenda->nome}','{$fazenda->uf}',";
$sql .= "'{$fazenda->cidade}','NULL','NULL','{$cliente->cpf}','NULL','{$cliente->endereco}','{$cliente->bairro}','{$cliente->uf}',";
$sql .= "'{$cliente->cidade}','{$cliente->cep}','NULL','{$cliente->fone}','NULL','{$rebanho}','$transportadora',";
$sql .= "'{$frete}','{$dataentrega}','0','F','{$_POST["Carrinho"]["localentrega"]}','{$_POST["VENCIMENTO"]["codvencimento"]}','{$_POST["Carrinho"]["observacao"]}','T','NULL');";
//echo $sql;
//exit();
/**
* Estanciando a inserção do PEDIDO
*/
$dbh = ibase_connect(Yii::app()->params['hostFirebird'], Yii::app()->params['usernameFirebird'], Yii::app()->params['passwordFirebird']);
$sth = ibase_query($dbh, $sql) or die(ibase_errmsg());
$row = ibase_fetch_assoc($sth);
$codpedido_firebird = $row["PEDIDO"];
//print_r($row["PEDIDO"]);
//exit();
$session = Yii::app()->request->cookies['PHPSESSID']->value;
$produtos = Carrinho::model()->findAll(array('condition'=>"sessao = '{$session}'"));
foreach($produtos as $produto){
$sql = "EXECUTE PROCEDURE INSERE_ITENS ('{$codpedido_firebird}','{$produto->codproduto}','{$produto->vc}','{$produto->pesosaca}','{$produto->quant}','{$produto->valorunitario}');";
$sth = ibase_query($dbh, $sql) or die(ibase_errmsg());
/**
* Inserindo no banco MYSQL
*/
$pedido = new Pedido;
$codpedido = Yii::app()->db->createCommand("SELECT MAX(codpedido) FROM pedido")->queryScalar() + 1;
$pedido->codpedido = $codpedido;
$pedido->codcliente = $cliente->codcliente;
$pedido->codrepresentante = Yii::app()->user->codrepresentante;
$pedido->codproduto = $produto->codproduto;
$pedido->idpedido = $codpedido_firebird;
$pedido->quant = $produto->quant;
$pedido->pesosaca = $produto->pesosaca;
$pedido->valorunitario = $produto->valorunitario;
$pedido->vc = $produto->vc;
$pedido->codusuario = Yii::app()->user->codusuario;
$pedido->datacriacao = date('Y-m-d H:i:s');
$pedido->save(false);
}
Carrinho::model()->deleteAll(array('condition'=>"sessao = '{$session}'"));
$this->redirect(Yii::app()->createUrl('pedido', array('alerta'=>'enviado')));
}
ProdutoController.php (Original: CULTIVARController.php) *Cultivar é um nome que deram para as sementes.
public function actionBasket() {
$id = utf8_decode($_GET["id"]);
$session = Yii::app()->request->cookies['PHPSESSID']->value;
$model = Carrinho::model()->find(array('condition' => "sessao = '{$session}' AND codproduto = '{$id}'"));
$produto = count($model);
if ($produto > 0) {
$model->quant += 1;
$model->save(false);
} else if ($produto == 0) {
$lastResult = 'SELECT MAX(codcarrinho) FROM carrinho';
$lastResult = (int) Yii::app()->db->createCommand($lastResult)->queryScalar() + 1;
$carrinho = new Carrinho;
$carrinho->codcarrinho = $lastResult;
$carrinho->codproduto = $id;
$carrinho->quant = (int) 1;
$carrinho->sessao = $session;
$carrinho->save(false);
}
echo count(Carrinho::model()->findAll(array('condition'=>"sessao = '$session'")));
//$this->redirect(Yii::app()->createUrl('cultivar'));
}
views\carrinho\index.php
<?php
Html::css(array('form.css', 'forms/' . controller() . '.css'));
echo CHtml::scriptFile(app()->baseUrl . '/js/form.php');
$session = Yii::app()->request->cookies['PHPSESSID']->value;
$this->breadcrumbs = array(
'Carrinhos' => 'index',
'Listagem'
);
$this->beginWidget('CActiveForm', array(
'method' => 'post',
'action' => Yii::app()->createUrl(controller() . '/updatebasket'),
'enableAjaxValidation' => false,
));
?>
<?php
echo '<div align="right">';
echo CHtml::htmlButton('<img src="' . app()->baseUrl . '/images/icones/arrow-circle-double.png" align="absmiddle"> Atualizar', array(
'class' => 'botao botaoAzul',
'onclick' => "location.href = '" . url('updatebasket') . "'"
));
echo '</div>';
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'table-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'selectableRows' => 0,
'rowCssClass' => array('tdLinhaCinza', 'tdLinhaBranca'),
'columns' => array(
array(
'name' => 'codproduto',
'filter' => false,
'headerHtmlOptions' => array(
'nowrap' => 'nowrap',
'class' => 'ui-widget-header',
),
'htmlOptions' => array(
'nowrap' => 'nowrap',
),
),
array(
'name' => 'quant',
'type' => 'raw',
'filter' => false,
'value' => 'CHtml::textField("quant[$data->primaryKey]", $data->quant, array(\'class\'=>\'input w50px\', \'style\'=>\'text-align:center\'))',
'headerHtmlOptions' => array(
'width' => '10%',
'nowrap' => 'nowrap',
'class' => 'ui-widget-header',
),
'htmlOptions' => array(
'width' => '10%',
'nowrap' => 'nowrap',
'align' => 'center'
),
),
array(
'name' => 'Unidade',
'filter' => false,
'value' => 'ARTIGO::model()->findByPk(CULTIVAR::model()->find(array(\'condition\' => "nome = \'$data->codproduto\'"))->especie)->unidade',
'headerHtmlOptions' => array(
'nowrap' => 'nowrap',
'class' => 'ui-widget-header',
),
'htmlOptions' => array(
'width' => '10%',
'nowrap' => 'nowrap',
'align' => 'center'
),
),
array(
'name' => 'pesosaca',
'type' => 'raw',
'filter' => false,
'value' => 'CHtml::textField("pesosaca[$data->primaryKey]", $data->pesosaca, array(\'class\'=>\'input w50px\', \'style\'=>\'text-align:center\'))',
'headerHtmlOptions' => array(
'width' => '10%',
'nowrap' => 'nowrap',
'class' => 'ui-widget-header',
),
'htmlOptions' => array(
'width' => '10%',
'nowrap' => 'nowrap',
'align' => 'center'
),
),
array(
'name' => 'valorunitario',
'type' => 'raw',
'filter' => false,
'value' => 'CHtml::textField("valorunitario[$data->primaryKey]", $data->valorunitario, array(\'class\'=>\'input w50px\', \'style\'=>\'text-align:center\'))',
'headerHtmlOptions' => array(
'width' => '10%',
'nowrap' => 'nowrap',
'class' => 'ui-widget-header',
),
'htmlOptions' => array(
'width' => '10%',
'nowrap' => 'nowrap',
'align' => 'center'
),
),
array(
'name' => 'vc',
'type' => 'raw',
'filter' => false,
'value' => 'CHtml::textField("vc[$data->primaryKey]", $data->vc, array(\'class\'=>\'input w50px\', \'style\'=>\'text-align:center\'))',
'headerHtmlOptions' => array(
'width' => '10%',
'nowrap' => 'nowrap',
'class' => 'ui-widget-header',
),
'htmlOptions' => array(
'width' => '10%',
'nowrap' => 'nowrap',
'align' => 'center'
),
),
array(
'class' => 'CButtonColumn',
'header' => 'Opções',
'template' => '{delete}',
'deleteButtonLabel' => '<img src=\'' . app()->baseUrl . '/images/icones/cross-circle.png\' align=\'absmiddle\'> Remover',
'deleteButtonImageUrl' => false,
'headerHtmlOptions' => array(
'nowrap' => 'nowrap',
'width' => '10%',
'class' => 'ui-widget-header last',
),
'htmlOptions' => array(
'width' => '10%',
'nowrap' => 'nowrap',
'align' => 'center',
),
),
),
));
?>
<div align="right">
<?php
echo CHtml::htmlButton('<img src="' . app()->baseUrl . '/images/icones/arrow-circle-double.png" align="absmiddle"> Atualizar', array(
'class' => 'botao botaoAzul',
'name' => 'acao',
'value' => 'atualizar',
'type' => 'submit',
));
?>
</div>
<?php $this->endWidget(); ?>
<?php
$produtos = count(Carrinho::model()->findAll(array('condition' => "sessao = '{$session}'")));
if ($produtos > 0) {
echo $this->renderPartial('_form', array('model' => $model, 'cliente' => $cliente, 'transportadora' => $transportadora, 'vencimento' => $vencimento));
}
?>
views\carrinho\_form.php
<?php
Html::css(array('form.css', 'forms/' . controller() . '.css'));
//Html::js(array());
Yii::app()->clientScript->registerScript('jquery', "");
?>
<br />
<div class="flash-notice">
<?php echo CHtml::image(Yii::app()->baseUrl . '/images/icones/exclamation.png', 'Alerta', array('align' => 'left', 'style' => "margin: 0 6px 0 0")) ?>
Antes de finalizar o pedido, atualize o Carrinho de Orçamento, qualquer
quantidade do produto alterada antes de atualizar, não será encaminhada ao
pedido a quantidade exata mostrada, então, antes de qualquer envio,
atualize a última vez.
</div>
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'index-form',
'action' => Yii::app()->createUrl('carrinho/enviarpedido'),
'enableAjaxValidation' => true,
'clientOptions' => array('validateOnSubmit' => true, 'validateOnChange' => true),
'htmlOptions' => array(
'enctype' => 'multipart/form-data'
),
));
?>
<?php $this->beginWidget('application.extensions.jui.ETabs', array('name' => 'tabpanel1')); ?>
<?php $this->beginWidget('application.extensions.jui.ETab', array('name' => 'tab1', 'title' => "<img border='0' align='absmiddle' src='" . app()->baseUrl . "/images/icones/application.png' alt=''> Formulário")); ?>
<div class="form">
<p class="note"><span class="required">*</span> campos obrigatório.</p>
<?php //echo $form->errorSummary($model); ?>
<div class="row codcliente">
<?php
echo $form->labelEx($cliente, 'codcliente');
$clientes = CLIENTE::model()->findAll(array('condition' => "repre = '" . Yii::app()->user->codrepresentante . "'", 'order' => 'nome ASC'));
$clientes = CHtml::listData($clientes, 'codcliente', 'nome');
echo $form->dropDownList($cliente, 'codcliente', $clientes, array('class' => 'select w300px', 'prompt' => 'Selecione um cliente'));
echo $form->error($cliente, 'codcliente');
?>
</div>
<div class="row codtranspor">
<?php
echo $form->labelEx($transportadora, 'codtranspor');
$tranportadoras = TRANSPOR::model()->findAll(array('order' => 'nome ASC'));
$tranportadoras = CHtml::listData($tranportadoras, 'codtranspor', 'nome');
echo $form->dropDownList($transportadora, 'codtranspor', $tranportadoras, array('class' => 'select w300px', 'prompt' => 'Selecione uma transportadora'));
echo $form->error($transportadora, 'codtranspor');
?>
</div>
<div class="row frete">
<?php
echo $form->labelEx($model, 'frete');
echo $form->textField($model, 'frete', array('class' => 'input w100px'));
echo $form->error($model, 'frete');
?>
</div>
<div class="row dataentrega">
<?php
echo $form->labelEx($model, 'dataentrega');
$this->widget('zii.widgets.jui.CJuiDatePicker',
array(
'name' => 'Carrinho[dataentrega]',
'value' => $_POST["Carrinho"]["dataentrega"],
'language' => 'pt-BR',
'htmlOptions' => array(
'class' => 'input w100px'
),
'options' => array(
'showOn' => 'both',
'buttonImage' => Yii::app()->baseUrl . '/images/icones/calendar.png',
'dateFormat' => 'dd/mm/yy',
'yearRange' => '-1:+1',
'changeMonth' => false,
'changeYear' => false,
)
)
);
echo $form->error($model, 'dataentrega');
?>
</div>
<div class="row vencimento">
<?php
echo $form->labelEx($vencimento, 'codvencimento');
$vencimentos = VENCIMENTO::model()->findAll(array('order' => 'nome ASC'));
$vencimentos = CHtml::listData($vencimentos, 'codvencimento', 'nome');
echo $form->dropDownList($vencimento, 'codvencimento', $vencimentos, array('class' => 'select w300px', 'prompt' => 'Selecione um vencimento'));
echo $form->error($vencimento, 'codvencimento');
?>
</div>
<div class="row observacao">
<?php
echo $form->labelEx($model, 'observacao');
echo $form->textArea($model, 'observacao', array('class' => 'textarea w400px', 'rows' => '10'));
echo $form->error($model, 'observacao');
?>
</div>
<div class="row localentrega">
<?php
echo $form->labelEx($model, 'localentrega');
echo $form->textArea($model, 'localentrega', array('class' => 'textarea w400px', 'rows' => '10'));
echo $form->error($model, 'localentrega');
?>
</div>
<br clear="all" />
<div style="margin: 4px 0 0; padding: 4px;" class="ui-widget-header ui-corner-all">
<?php
echo CHtml::htmlButton('<img src="' . app()->baseUrl . '/images/icones/mail-send.png" align="absmiddle"> Enviar pedido', array(
'class' => 'botao botaoVerde',
'name' => 'acao',
'value' => 'enviarpedido',
'type' => 'submit',
));
?>
</div>
<br clear="all" />
</div><!-- form -->
<?php $this->endWidget('application.extensions.jui.ETab'); ?>
<?php $this->endWidget('application.extensions.jui.ETabs'); ?>
<?php $this->endWidget(); ?>
views\produto\index.php (Original: views\cultivar\index.php)
<?php
echo CHtml::scriptFile(app()->baseUrl . '/js/form.php');
$this->breadcrumbs = array(
'Cultivars' => 'index',
'Listagem'
);
?>
<?php
Yii::import('application.extensions.FixedCheckBoxColumn');
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'table-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'selectableRows' => 0,
'rowCssClass' => array('tdLinhaCinza', 'tdLinhaBranca'),
'columns' => array(
array(
'name' => 'nome',
'value' => '$data->nome',
'headerHtmlOptions' => array(
'nowrap' => 'nowrap',
'class' => 'ui-widget-header',
),
'htmlOptions' => array(
'nowrap' => 'nowrap',
),
),
array(
'name' => 'especie',
'filter' => CHtml::listData(ARTIGO::model()->findAll(), 'codartigo', 'des'),
'value' => 'ARTIGO::model()->findByPk($data->especie)->des',
'headerHtmlOptions' => array(
'nowrap' => 'nowrap',
'class' => 'ui-widget-header',
),
'htmlOptions' => array(
'nowrap' => 'nowrap',
),
),
array(
'name' => 'Marca',
'filter' => false,
'value' => 'MARCA::model()->findByPk(ARTIGO::model()->findByPk($data->especie)->codmarca)->nome',
'headerHtmlOptions' => array(
'nowrap' => 'nowrap',
'class' => 'ui-widget-header',
),
'htmlOptions' => array(
'nowrap' => 'nowrap',
),
),
array(
'name' => 'Unidade',
'filter' => false,
'value' => 'ARTIGO::model()->findByPk($data->especie)->unidade',
'headerHtmlOptions' => array(
'nowrap' => 'nowrap',
'class' => 'ui-widget-header',
),
'htmlOptions' => array(
'nowrap' => 'nowrap',
),
),
array(
'name' => 'Grupo',
'filter' => false,
'value' => 'GRUPOPRODUTOS::model()->findByPk(ARTIGO::model()->findByPk($data->especie)->grupo)->nome',
'headerHtmlOptions' => array(
'nowrap' => 'nowrap',
'class' => 'ui-widget-header',
),
'htmlOptions' => array(
'nowrap' => 'nowrap',
),
),
array(
'class' => 'CButtonColumn',
'header' => 'Opções',
'template' => '{carrinho}',
'buttons' => array(
'carrinho' => array(
'label' => '<img src="' . Yii::app()->baseUrl . '/images/icones/cart_add.png" align="absmiddle"> Adicionar',
'url' => 'Yii::app()->controller->createUrl("basket",array("id"=>utf8_encode($data->primaryKey)))',
'click' => 'js: function(){
$.ajax({
type:\'GET\',
url:$(this).attr(\'href\'),
beforeSend:function(){
$(\'div[id=table-grid]\').addClass(\'grid-view-loading\');
},
success:function(data) {
$(\'span[id=quantProdutosCarrinho]\').html(data);
$(\'div[id=table-grid]\').removeClass(\'grid-view-loading\');
}
});
return false;
}',
),
),
'headerHtmlOptions' => array(
'nowrap' => 'nowrap',
'width' => '10%',
'class' => 'ui-widget-header last',
),
'htmlOptions' => array(
'width' => '10%',
'nowrap' => 'nowrap',
'align' => 'center',
),
),
),
));
?>
[color="#FF0000"][size="5"]Se tiver faltando dados me avisa que eu mando, não me atentei a remover meus código próprio senão ia demorar, pena que está conectando em firebird(lixo), senão eu compactava e enviava, abaixo ta um print de como fico.[/size][/color]