Você está na página 1de 22

Camada de viso ( painel): produto_form

<legend>
Manuteno de Produtos - {ACAO}
<div class="pull-right">
<a href="{URLLISTAR}" title="Listar produtos"
class="btn">Voltar</a>
</div>
</legend>
<form action="{ACAOFORM}" method="post" class="form-horizontal">
<div class="row-fluid">
<div class="span8">
<input type="hidden" name="codproduto"
id="codproduto" value="{codproduto}">
<div class="control-group">
<label class="control-label"
for="nomeproduto">Nome <span class="required">*</span>:</label>
<div class="controls">
<input type="text" id="nomeproduto"
name="nomeproduto" value="{nomeproduto}" required="required">
</div>
</div>
<div class="control-group">
<label class="control-label"
for="resumoproduto">Resumo <span class="required">*</span>:</label>
<div class="controls">
<textarea name="resumoproduto"
id="resumoproduto" required="required">{resumoproduto}</textarea>
</div>
</div>
<div class="control-group">
<label class="control-label"
for="fichaproduto">Ficha <span class="required">*</span>:</label>
<div class="controls">
<textarea name="fichaproduto" id="fichaproduto"
required="required">{fichaproduto}</textarea>
</div>
</div>
<div class="control-group">
<label class="control-label"
for="valorproduto">Valor <span class="required">*</span>:</label>
<div class="controls">
<input type="text" id="valorproduto"
name="valorproduto" value="{valorproduto}" required="required"
class="set-numeric">
</div>
</div>
<div class="control-group">
<label class="control-label"
for="valorpromocional">Valor Promocional:</label>
<div class="controls">
<input type="text" id="valorpromocional"
name="valorpromocional" value="{valorpromocional}" class="setnumeric">
</div>
</div>
<div class="control-group">
<label class="control-label" for="peso">Peso
(kg) <span class="required">*</span>:</label>
<div class="controls">
<input type="text" id="peso" name="peso"
value="{peso}" required="required" class="set-peso">

2
</div>
</div>
<div class="control-group">
<label class="control-label"
for="altura">Altura (cm) <span class="required">*</span>:</label>
<div class="controls">
<input type="text" id="altura" name="altura"
value="{altura}" required="required" class="set-peso">
</div>
</div>
<div class="control-group">
<label class="control-label"
for="largura">Largura (cm) <span class="required">*</span>:</label>
<div class="controls">
<input type="text" id="largura" name="largura"
value="{largura}" required="required" class="set-peso">
</div>
</div>
<div class="control-group">
<label class="control-label"
for="comprimento">Comprimento (cm) <span
class="required">*</span>:</label>
<div class="controls">
<input type="text" id="comprimento"
name="comprimento" value="{comprimento}" required="required"
class="set-peso">
</div>
</div>
<div class="control-group">
<label class="control-label"
for="codtipoatributo">Tipo:</label>
<div class="controls">
<select name="codtipoatributo"
id="codtipoatributo" {des_tipoatributo} class="set-quantidade-sku">
<option value="">No
especificado</option>
{BLC_TIPOATRIBUTOS}
<option value="{CODTIPOATRIBUTO}"
{sel_codtipoatributo}>{NOME}</option>
{/BLC_TIPOATRIBUTOS}
</select>
</div>
</div>
<div class="control-group" id="quantidade-sku">
<label class="control-label"
for="quantidade">Quantidade:</label>
<div class="controls">
<input type="text" id="quantidade"
name="quantidade" value="{quantidade}" class="set-integer input-small"
{readonly}>
</div>
</div>
</div>
<div class="span4">
<h5>Departamentos</h5>
<ul class="lista-departamentos">
{BLC_DEPARTAMENTOPAI}
<li>
<label for="departamento{CODDEPARTAMENTO}" class="checkbox">

3
<input {chk_departamentopai}
name="departamento[]" class="set-departamento-pai" type="checkbox"
id="departamento-{CODDEPARTAMENTO}" value="{CODDEPARTAMENTO}">
{NOMEDEPARTAMENTO}</label>
</li>
<li>
<ul class="lista-departamentos">
{BLC_DEPARTAMENTOFILHO}
<li>
<label for="departamento{CODDEPARTAMENTOFILHO}" class="checkbox">
<input
{chk_departamentofilho} name="departamento[]" class="set-departamentofilho" data-pai="{CODDEPARTAMENTOPAI}" type="checkbox"
id="departamento-{CODDEPARTAMENTOFILHO}"
value="{CODDEPARTAMENTOFILHO}"> {NOMEDEPARTAMENTOFILHO}</label>
</li>
{/BLC_DEPARTAMENTOFILHO}
</ul>
</li>
{/BLC_DEPARTAMENTOPAI}
</ul>
</div>
</div>
<div class="well">
<button type="submit" class="btn">Salvar</button>
</div>
</form>

Camada de viso ( painel): produto_listar


<legend>
Produtos
<div class="pull-right">
<a href="{URLLISTAR}" title="Listar produtos"
class="btn">Listar</a> <a
href="{URLADICIONAR}" title="Adicionar produtos"
class="btn"><em
class="icon-plus"></em> Adicionar</a>
</div>
</legend>
<table class="table table-bordered table-condensed">
<tr>
<th class="coluna-acao text-center"></th>
<th style="width: 80px;">Atributos</th>
<th style="width: 80px;">Imagens</th>
<th style="width: 50px;">Cdigo</th>
<th>Nome</th>
<th class="coluna-acao text-center"></th>
</tr>
{BLC_DADOS}
<tr>
<td class="alinha-centro"><a href="{URLEDITAR}"
title="Editar"><em
class="icon-pencil"></em></a></td>
<td class="alinha-centro"><a href="{URLATRIBUTOS}"
title="Vincular Atributos"><em class="icon-listalt"></em></a> <a

4
href="{URLVINCULAIMAGEMSKU}" title="Vincular imagens
com atributos"><em
class="icon-picture"></em></a></td>
<td class="alinha-centro"><a href="{URLUPLOAD}"
title="Upload de Imagens"><em class="iconupload"></em></a></td>
<td>{CODPRODUTO}</td>
<td>{NOME}</td>
<td class="alinha-centro"><a href="{URLEXCLUIR}"
title="Excluir"
class="link-excluir"><em class="icontrash"></em></a></td>
</tr>
{/BLC_DADOS} {BLC_SEMDADOS}
<tr>
<td colspan="4" class="alinha-centro">No h dados</td>
</tr>
{/BLC_SEMDADOS}
</table>
<div class="pagination pull-right">
<ul>
<li class="{HABANTERIOR}"><a
href="{URLANTERIOR}">&laquo;</a>
{BLC_PAGINAS}
<li class="{LINK}"><a href="{URLLINK}">{INDICE}</a>
{/BLC_PAGINAS}
<li class="{HABPROX}"><a href="{URLPROXIMO}">&raquo;</a>
</ul>
</div>

Controller ( painel): produto


<?php if ( ! defined('BASEPATH')) exit('No direct script access
allowed');
class Produto extends CI_Controller {
public function __construct() {
parent::__construct();
$this->layout
= LAYOUT_DASHBOARD;
$this->load->model('Produto_Model', 'ProdutoM');
$this->load->model('TipoAtributo_Model', 'TipoAtributoM');
$this->load->model('Departamento_Model', 'DepartamentoM');
$this->load->model('ProdutoDepartamento_Model',
'ProdDepM');
$this->load->model('ProdutoFoto_Model', 'FotoM');
$this->load->model('Sku_Model', 'SkuM');
}
public function index() {
$data
$data['URLADICIONAR']
=
site_url('painel/produto/adicionar');
$data['URLLISTAR']
$data['BLC_DADOS']

= array();
= site_url('painel/produto');
= array();

5
$data['BLC_SEMDADOS']
$data['BLC_PAGINAS']

= array();
= array();

$pagina

= $this->input->get('pagina');

if (!$pagina) {
$pagina = 0;
} else {
$pagina = ($pagina-1) * LINHAS_PESQUISA_DASHBOARD;
}
$res

= $this->ProdutoM->get(array(), FALSE, $pagina);

if ($res) {
foreach($res as $r) {
$data['BLC_DADOS'][] = array(
"CODPRODUTO"
>codproduto,
"NOME"
$r->nomeproduto,
"URLEDITAR"
site_url('painel/produto/editar/'.$r->codproduto),
"URLEXCLUIR"
site_url('painel/produto/excluir/'.$r->codproduto),
"URLATRIBUTOS"
site_url('painel/produto/atributos/'.$r->codproduto),
"URLUPLOAD"
site_url('painel/produto/uploadfoto/'.$r->codproduto),
"URLVINCULAIMAGEMSKU"
site_url('painel/produto/fotosku/'.$r->codproduto)
);
}
} else {
$data['BLC_SEMDADOS'][] = array();
}

=> $r=>
=>
=>
=>
=>
=>

$totalItens
= $this->ProdutoM->getTotal();
$totalPaginas
=
ceil($totalItens/LINHAS_PESQUISA_DASHBOARD);
$pagina
$indicePg
if (!$pagina) {
$pagina = 1;
}
$pagina

= $this->input->get('pagina');
= 1;

= ($pagina==0)?1:$pagina;

if ($totalPaginas > $pagina) {


$data['HABPROX'] = null;
$data['URLPROXIMO']
= site_url('painel/produto?
pagina='.($pagina+1));
} else {
$data['HABPROX'] = 'disabled';
$data['URLPROXIMO']
= '#';
}
if ($pagina <= 1) {
$data['HABANTERIOR']= 'disabled';
$data['URLANTERIOR']= '#';

6
} else {
$paginaVoltar = 99999;
if ($pagina > 1) {
$paginaVoltar = $pagina - 1;
}
$data['HABANTERIOR']= null;
$data['URLANTERIOR']= site_url('painel/produto?
pagina='.$paginaVoltar);
}

while ($indicePg <= $totalPaginas) {


$data['BLC_PAGINAS'][] = array(
"LINK"
=>
($indicePg==$pagina)?'active':null,
"INDICE"
=> $indicePg,
"URLLINK"
=> site_url('painel/produto?
pagina='.$indicePg)
);
}
}

$indicePg++;

$this->parser->parse('painel/produto_listar', $data);

public function adicionar() {


$data
= array();
$data['ACAO']
= 'Novo';
$data['codproduto']
= null;
$data['nomeproduto']
= null;
$data['resumoproduto']
= null;
$data['fichaproduto']
= null;
$data['peso']
= null;
$data['altura']
= null;
$data['largura']
= null;
$data['comprimento']
= null;
$data['valorproduto']
= '0,00';
$data['valorpromocional']
= '0,00';
$data['quantidade']
= '0,00';
$data['BLC_TIPOATRIBUTOS']
= array();
$data['BLC_DEPARTAMENTOPAI']= array();
$data['des_tipoatributo']
= null;
$data['readonly']
= null;
$tipo = $this->TipoAtributoM->get(array(), FALSE, 0,
FALSE);
foreach($tipo as $t){
$data['BLC_TIPOATRIBUTOS'][] = array(
"CODTIPOATRIBUTO"
=> $t>codtipoatributo,
"NOME"
$t->nometipoatributo,
"sel_codtipoatributo"
=> null
);
}

=>

setURL($data, 'produto');
/**
* BUSCA DEPARTAMENTOS PAI
*/
$depPai = $this->DepartamentoM>get(array("d.coddepartamentopai IS NULL" => NULL), FALSE, 0, FALSE);
if ($depPai) {
foreach($depPai as $dp) {
//DEFINE OS ELEMENTOS DO FILHO - INCIO
$aFilhos = array();
$deFilhos = $this->DepartamentoM>get(array("d.coddepartamentopai" => $dp->codepartamento), FALSE, 0,
FALSE);

=>
=>
=>
=>

if ($deFilhos) {
foreach($deFilhos as $df) {
$aFilhos[] = array(
"CODDEPARTAMENTOFILHO"
$df->codepartamento,
"NOMEDEPARTAMENTOFILHO"
$df->nomedepartamento,
"CODDEPARTAMENTOPAI"
$df->coddepartamentopai,
"chk_departamentofilho"
null
);
}
}
//DEFINE OS ELEMENTOS DO FILHO - FIM
//DEFINE OS ELEMENTOS DO PAI
$data['BLC_DEPARTAMENTOPAI'][] = array(
"CODDEPARTAMENTO"
=> $dp-

>codepartamento,

"NOMEDEPARTAMENTO"

>nomedepartamento,

=> $dp-

"BLC_DEPARTAMENTOFILHO" => $aFilhos,


"chk_departamentopai"
=> null
}

);

}
$this->parser->parse('painel/produto_form', $data);
}
public function salvar() {
$codproduto
$nomeproduto
>post('nomeproduto');
$resumoproduto
>post('resumoproduto');
$fichaproduto
>post('fichaproduto');

= $this->input->post('codproduto');
= $this->input= $this->input= $this->input-

8
$valorproduto
= $this->input>post('valorproduto');
$valorpromocional = $this->input->post('valorpromocional');
$codtipoatributo = $this->input->post('codtipoatributo');
$quantidade
= $this->input->post('quantidade');
$peso
= $this->input->post('peso');
$altura
= $this->input->post('altura');
$largura
= $this->input->post('largura');
$comprimento
= $this->input>post('comprimento');
$departamento
>post('departamento');

= $this->input-

$valorproduto
=
modificaDinheiroBanco($valorproduto);
$valorpromocional
=
modificaDinheiroBanco($valorpromocional);
$peso
= modificaDinheiroBanco($peso);
$altura
= modificaDinheiroBanco($altura);
$largura
= modificaDinheiroBanco($largura);
$comprimento
= modificaDinheiroBanco($comprimento);
$erros
$mensagem

= FALSE;
= null;

if (!$nomeproduto) {
$erros
= TRUE;
$mensagem
.= "Informe nome do produto.\n";
}
if (!$resumoproduto) {
$erros
= TRUE;
$mensagem
.= "Informe o resumo do produto.\n";
}
if (!$fichaproduto) {
$erros
= TRUE;
$mensagem
.= "Informe a ficha do produto.\n";
}
if (!$valorproduto) {
$erros
= TRUE;
$mensagem
.= "Informe o valor do produto.\n";
} else {
if ($valorpromocional) {
if ($valorpromocional >= $valorproduto) {
$erros
= TRUE;
$mensagem
.= "Valor promocional no
pode ser maior que o valor de venda.\n";
}
}
}
if (!$erros) {
$itens
$resumoproduto,

= array(
"nomeproduto"
"resumoproduto"

=> $nomeproduto,
=>

"fichaproduto"
"valorproduto"

=> $fichaproduto,
=> $valorproduto,

9
"valorpromocional"
$valorpromocional,

"peso"
"altura"
"largura"
"comprimento"

);

if (!$codproduto) {
$itens["urlseo"]
url_title(strtolower($nomeproduto));

=>
=> $peso,
=> $altura,
=> $largura,
=> $comprimento

if ($codtipoatributo) {
$itens["codtipoatributo"]

$codtipoatributo;
}

if ($codproduto) {
$codproduto = $this->ProdutoM->update($itens,
$codproduto);

} else {
$codproduto = $this->ProdutoM->post($itens);
if (!$codtipoatributo) {
$sku = array(
"referencia"
"quantidade"

$quantidade,

"codproduto"

$codproduto

=> null,
=>
=>

);
$this->SkuM->post($sku);
}

if ($codproduto) {
$this->session->set_flashdata('sucesso', 'Dados
inseridos com sucesso.');
$this->ProdDepM->delete($codproduto);
//VINCULA DEPARTAMENTOS
foreach($departamento as $dep) {
$itenDepProd = array();
$itenDepProd['codproduto']
= $codproduto;

$itenDepProd['codprodutodepartamento']

= $dep;

$this->ProdDepM->post($itenDepProd);
}

redirect('painel/produto');
} else {
$this->session->set_flashdata('erro', 'Ocorreu
um erro ao realizar a operao.');
if ($codproduto) {

10
redirect('painel/produto/editar/'.
$codproduto);

} else {
redirect('painel/produto/adicionar');
}

}
} else {
$this->session->set_flashdata('erro',
nl2br($mensagem));
if ($codproduto) {
redirect('painel/produto/editar/'.$codproduto);
} else {
redirect('painel/produto/adicionar');
}
}
}
public function editar($id) {
$data
= array();
$data['ACAO']
= 'Edio';
$data['des_tipoatributo']
= 'disabled="disabled"';
$data['readonly']
= 'readonly';
$res

= $this->ProdutoM->get(array("codproduto" => $id),

TRUE);
if ($res) {
foreach($res as $chave => $valor) {
$data[$chave] = $valor;
}
} else {
show_error('No foram encontrados dados.', 500,
'Ops, erro encontrado.');
}
if (empty($res->codtipoatributo)) {
$sku = $this->SkuM->getPorProdutoSimples ( $id );
$data["quantidade"] = $sku->quantidade;
}
$data['valorproduto']
= modificaNumericValor($res>valorproduto);
$data['valorpromocional']
= modificaNumericValor($res>valorpromocional);
$data['peso']
= modificaNumericPeso($res>peso);
$data['altura']
= modificaNumericPeso($res>altura);
$data['largura']
= modificaNumericPeso($res>largura);
$data['comprimento']
= modificaNumericPeso($res>comprimento);
setURL($data, 'produto');
FALSE);

$tipo = $this->TipoAtributoM->get(array(), FALSE, 0,


foreach($tipo as $t){

11

>codtipoatributo,

$data['BLC_TIPOATRIBUTOS'][] = array(
"CODTIPOATRIBUTO"
=> $t-

$t->nometipoatributo,

"NOME"

=>

"sel_codtipoatributo"
=> ($t>codtipoatributo == $res->codtipoatributo)?'selected="selected"':null
);
}
//ARMAZENA OS DEPARTAMENTOS VINCULADO
$aDepartamentosVinculados = array();
$id));

$depVinc = $this->ProdDepM->get(array("dp.codproduto" =>

if ($depVinc) {
foreach ($depVinc as $depv) {
array_push($aDepartamentosVinculados, $depv>codprodutodepartamento);
}
}
/**
* BUSCA DEPARTAMENTOS PAI
*/
$depPai = $this->DepartamentoM>get(array("d.coddepartamentopai IS NULL" => NULL), FALSE, 0, FALSE);
if ($depPai) {
foreach($depPai as $dp) {
//DEFINE OS ELEMENTOS DO FILHO - INCIO
$aFilhos = array();
$deFilhos = $this->DepartamentoM>get(array("d.coddepartamentopai" => $dp->codepartamento), FALSE, 0,
FALSE);
if ($deFilhos) {
foreach($deFilhos as $df) {
$aFilhos[] = array(
"CODDEPARTAMENTOFILHO"
=> $df->codepartamento,
"NOMEDEPARTAMENTOFILHO"
=> $df->nomedepartamento,
"CODDEPARTAMENTOPAI"
=> $df->coddepartamentopai,
"chk_departamentofilho"
=> (in_array($df->codepartamento,
$aDepartamentosVinculados))?'checked="checked"':null
);
}
}
//DEFINE OS ELEMENTOS DO FILHO - FIM
//DEFINE OS ELEMENTOS DO PAI
$data['BLC_DEPARTAMENTOPAI'][] = array(

12

$dp->codepartamento,
$dp->nomedepartamento,

"CODDEPARTAMENTO"

=>

"NOMEDEPARTAMENTO"

=>

"BLC_DEPARTAMENTOFILHO" =>

$aFilhos,

"chk_departamentopai"
(in_array($dp->codepartamento,
$aDepartamentosVinculados))?'checked="checked"':null
);
}
}

=>

$this->parser->parse('painel/produto_form', $data);
}
public function excluir($id) {
$res = $this->ProdutoM->delete($id);
if ($res) {
$this->session->set_flashdata('sucesso', 'Produto
removido com sucesso.');
} else {
$this->session->set_flashdata('erro', 'Produto no
pode ser removido.');
}
}

redirect('painel/produto');

public function atributos($id) {


$data
$data['BLC_SEMVINCULADOS']
=
$data['BLC_VINCULADOS']
=
$data['BLC_SEMDISPONIVEIS']
=
$data['BLC_DISPONIVEIS']
=
$data['URLSALVAATRIBUTO']
=
site_url('painel/produto/salvaatributo');
$data['URLLISTAR']
site_url('painel/produto');
$infoProduto
=> $id), TRUE);

= array();
array();
array();
array();
array();
=

= $this->ProdutoM->get(array("codproduto"

if ($infoProduto) {
$data['NOMEPRODUTO']= $infoProduto->nomeproduto;
$data['CODPRODUTO']
= $infoProduto->codproduto;
} else {
show_error('No foram encontrados dados.', 500,
'Ops, erro encontrado.');
}
$variosSKUs = FALSE;
if (empty($infoProduto->codtipoatributo)) {
$resExistente
= $this->SkuM>getPorProdutoSimples($id);
} else {
$variosSKUs = TRUE;

13
$resExistente
>getPorProdutoAtributo($id);
}

= $this->SkuM-

if ($resExistente) {
if ($variosSKUs) {
foreach($resExistente as $rEx) {
$data['BLC_VINCULADOS'][] = array(
"CODSKU"
=> $rEx->codsku,
"REFERENCIA" => $rEx->referencia,
"QUANTIDADE" => $rEx->quantidade,
"DESCRICAO" => $rEx->nomeatributo
);
}
} else {
$data['BLC_VINCULADOS'][] = array(
"CODSKU"
=> $resExistente->codsku,
"REFERENCIA" => $resExistente->referencia,
"QUANTIDADE" => $resExistente->quantidade,
"DESCRICAO"
=> $resExistente>nomeatributo
);
}
} else {
$data['BLC_SEMVINCULADOS'][] = array();
}
//ATRIBUTOS DISPONVEIS
if (empty($infoProduto->codtipoatributo)) {
$data['BLC_SEMDISPONIVEIS'][] = array();
} else {
$atribDisponivel = $this->SkuM>getAtributosDisponiveis($id);
if ($atribDisponivel) {
foreach($atribDisponivel as $aD) {
$data['BLC_DISPONIVEIS'][]
= array(
"DESCRICAO"
=> $aD>nomeatributo,
>codatributo

"CODATRIBUTO"

=> $aD-

);
}
} else {
$data['BLC_SEMDISPONIVEIS'][] = array();
}

}
$this->parser->parse('painel/produtoatributo_listar',
$data);
}
public function salvaatributo() {
$codproduto = $this->input->post('codproduto');
//INSERE ATRIBUTOS E TRANSFORMA EM SKU
$atributo
= $this->input->post('atributo');

14
foreach($atributo as $codatributo => $valores) {
if ((!empty($valores['referencia'])) || (!
empty($valores['quantidade']))) {
$sku = array(
"referencia"

=>

"quantidade"

=>

"codproduto"

=> $codproduto

$valores['referencia'],
$valores['quantidade'],
);

$codsku = $this->SkuM->post($sku);

if ($codsku) {
$atributoSku = array(
"codsku"
=> $codsku,
"codatributo"
=> $codatributo
);
$this->SkuM->postAtributo($atributoSku);
}

}
//ATUALIZA SKUS
$skuExistente

= $this->input->post('sku');

if ($skuExistente) {
foreach($skuExistente as $codsku => $valores) {
if ($valores['remover'] === 'S') {
$this->SkuM->delete($codsku);
} else {
$skuAtualiza = array(
"referencia" =>
$valores['referencia'],

"quantidade" =>

$valores['quantidade']

);
$this->SkuM->update($codsku,

$skuAtualiza);
}
sucesso.');
}

}
}

$this->session->set_flashdata('sucesso', 'SKUs salvos com


redirect('painel/produto/atributos/'.$codproduto);

/**
* Cria o formulrio de upload de foto
* @param integer $id
*/
public function uploadfoto($id) {
$this->jsRequire = "upload";

15
$infoProduto
=> $id), TRUE);

= $this->ProdutoM->get(array("codproduto"

if (!$infoProduto) {
show_error('No foram encontrados dados.', 500,
'Ops, erro encontrado.');
}
$data
= array();
$data['CODPRODUTO']
= $id;
$data['NOMEPRODUTO']= $infoProduto->nomeproduto;
$data['URLLISTAR']
= site_url('painel/produto');
$data['URLUPLOAD']
=
site_url('painel/produto/salvafoto');
$this->parser->parse('painel/produto_foto_upload', $data);
}
/**
* Criao das fotos no servidor
*/
public function salvafoto() {
$codproduto = $this->input->post('codproduto');
$arquivo
= $_FILES['fotos'];
if ($arquivo['error'][0]) {
}
$arquivoNome= $arquivo["name"][0];
$extensao
PATHINFO_EXTENSION));

= strtolower(pathinfo($arquivoNome,

$foto = array(
"codproduto"
"produtofotoextensao"
);
$codfoto
$enderecoFoto
$codfoto.'.'.$extensao;

=> $codproduto,
=> $extensao

= $this->FotoM->post($foto);
= '/assets/img/produto/original/'.

move_uploaded_file($arquivo['tmp_name'][0], FCPATH.
$enderecoFoto);
//CRIA A MINIATURA DA GALERIA DE FOTOS
$this->redimensionaFoto($codfoto, $extensao, 80, 80);
//CRIA A MINIATURA DA PGINA INICIAL
$this->redimensionaFoto($codfoto, $extensao, 150, 150);
//CRIA A FOTO PARA A FICHA DE PRODUTOS
$this->redimensionaFoto($codfoto, $extensao, 500, 500);
$jsonRetorno
= array("files" =>
array(array(
"name"
$arquivo["name"][0],

=>

16
"type"
$arquivo["type"][0],
base_url($enderecoFoto),

=>

"url"

=>

"thumbnarilUrl"

=>

base_url($enderecoFoto),

"deleteUrl"
=>
site_url('painel/produto/removefoto/'.$codfoto.'/'.$codproduto),
"deleteType"
=> 'DELETE'
))
);

$this->layout = '';
echo json_encode($jsonRetorno);
die();

/**
* Remove as fotos do banco de dados e do servidor
* @param integer $codfoto
* @param integer $codproduto
*/
public function removefoto($codprodutofoto, $codproduto) {
$condicao = array(
"codprodutofoto"=> $codprodutofoto,
"codproduto"
=> $codproduto
);
$infoFoto = $this->FotoM->get($condicao, TRUE);
if ($this->FotoM->delete($codprodutofoto, $codproduto)) {
unlink(FCPATH.'/assets/img/produto/original/'.
$codprodutofoto.'.'.$infoFoto->produtofotoextensao);
}

/**
* Redimensiona as imagens
* @param integer $codprodutofoto
* @param string $extensao
* @param integer $altura
* @param integer $largura
*/
private function redimensionaFoto($codprodutofoto, $extensao,
$altura, $largura) {
if (!is_dir(FCPATH."/assets/img/produto/
{$altura}x{$largura}/")){
mkdir(FCPATH."/assets/img/produto/
{$altura}x{$largura}/");
}
$configImagem['image_library']
= 'gd2'; //BIBLIOTECA
RESPONSVEL PELO REDIMENSIONAMENTO
$configImagem['source_image'] =
FCPATH.'/assets/img/produto/original/'.$codprodutofoto.'.'.$extensao;

17
$configImagem['new_image']
=
FCPATH."/assets/img/produto/{$altura}x{$largura}/".
$codprodutofoto.'.'.$extensao;
$configImagem['create_thumb'] = FALSE;
$configImagem['maintain_ratio']
= TRUE;
$configImagem['width']
= $largura;
$configImagem['height']
= $altura;
$this->load->library('image_lib');
$this->image_lib->clear();
$this->image_lib->initialize($configImagem);
$this->image_lib->resize();
}
/**
* Exibe pgina de vinculao de fotos com atributos/skus
* @param unknown $codproduto
*/
public function fotosku($codproduto) {
$res
= $this->ProdutoM->get(array("codproduto" =>
$codproduto), TRUE);
if (!$res) {
show_error('No foram encontrados dados.', 500, 'Ops,
erro encontrado.');
}
$fotos = $this->FotoM->get(array("codproduto" =>
$codproduto));
$data = array();
$data['NOMEPRODUTO'] = $res->nomeproduto;
$data['BLC_FOTOS'] = array();
$data['BLC_SEMFOTOS'] = array();
$data['URLSALVAFOTOATRIBUTO'] =
site_url('painel/produto/salvafotosku');
$sku = $this->SkuM->getPorProdutoAtributo($codproduto);
$this->load->model('FotoSku_Model', 'FotoSkuM');
if ($fotos) {
foreach($fotos as $f) {
$skusvinculados = $this->FotoSkuM->getSKUsFoto($f>codprodutofoto);
$aSKUsVinculados = array();
if ($skusvinculados) {
foreach ($skusvinculados as $sv) {
array_push($aSKUsVinculados, $sv->codsku);
}
}
$aSKU = array();
if ($sku) {

18
foreach($sku as $s) {
$aSKU[] = array(
"CODSKU" => $s->codsku,
"NOMESKU" => $s->nomeatributo,
"SEL_SKU" => in_array($s->codsku,
$aSKUsVinculados)?"selected=\"selected\"":null
);
}
}
$data['BLC_FOTOS'][] = array(
"URLIMAGEM"
=>
base_url('assets/img/produto/80x80/'.$f->codprodutofoto.'.'.$f>produtofotoextensao),
"BLC_SKUSPRODUTO" => $aSKU,
"CODPRODUTOFOTO"
=> $f->codprodutofoto
);
}
} else {
$data['BLC_SEMFOTOS'][] = array();
}
$data['CODPRODUTO'] = $codproduto;
$data);
}

$this->parser->parse('painel/produtogerenciafoto_form',

/**
* Vincula as fotos com o SKU no banco de dado
*/
public function salvafotosku() {
$skus
= $this->input->post('skus');
$codproduto= $this->input->post('codproduto');
$remover
= $this->input->post('remover');
$aImagensRemover = array();
if ($remover) {
foreach($remover as $codprodutofoto => $remove) {
array_push($aImagensRemover, $codprodutofoto);
}

$this->FotoM->delete($codprodutofoto, $codproduto);

}
$this->load->model('FotoSku_Model', 'FotoSkuM');
foreach($skus as $codprodutofoto => $codigossku) {
if (in_array($codprodutofoto, $aImagensRemover)) {
continue;
}
$this->FotoSkuM->limpaImagens($codprodutofoto);
foreach($codigossku as $codsku) {
$itemFoto = new stdClass();
$itemFoto->codprodutofoto = $codprodutofoto;
$itemFoto->codsku = $codsku;

19

$this->FotoSkuM->post($itemFoto);
}

$this->session->set_flashdata('sucesso', 'Imagens
modificadas com sucesso.');
redirect('painel/produto/fotosku/'.$codproduto);
}
}

Model ( painel): produto_model


<?php
if (! defined ( 'BASEPATH' ))
exit ( 'No direct script access allowed' );
class Produto_Model extends CI_Model {
public function getTotal($condicao = array()) {
$this->db->where ( $condicao );
$this->db->from ( 'produto' );
return $this->db->count_all_results ();
}
public function get($condicao = array(), $primeiraLinha = FALSE,
$pagina = 0, $limite = LINHAS_PESQUISA_DASHBOARD, $ordenacao = FALSE,
$tipoOrdem = "ASC") {
$this->db->select ( 'codproduto, nomeproduto, resumoproduto,
fichaproduto, valorproduto, valorpromocional, codtipoatributo, urlseo'
);
$this->db->select ( 'peso, altura, largura, comprimento' );
$this->db->where ( $condicao );
$this->db->from ( 'produto' );
if ($primeiraLinha) {
return $this->db->get ()->first_row ();
} else {
if ($limite !== FALSE) {
$this->db->limit ( $limite, $pagina );
}
if ($ordenacao) {
$this->db->order_by ( $ordenacao, $tipoOrdem );
}
}

return $this->db->get ()->result ();

}
public function getBuscaTotal($condicao = array()) {
$this->db->from ( "produto p" );
foreach ( $condicao as $c ) {
$this->db->like ( "UPPER(p.nomeproduto)", strtoupper
( $c ), 'both' );
}
$this->db->where ( "fun_totalsku(p.codproduto) > ", 0, FALSE
);
return $this->db->count_all_results ();
}

20
public function getBusca($condicao = array(), $primeiraLinha =
FALSE, $pagina = 0, $limite = LINHAS_PESQUISA_DASHBOARD, $ordenacao =
FALSE, $tipoOrdem = "ASC") {
$this->db->select ( 'codproduto, nomeproduto, resumoproduto,
fichaproduto, valorproduto, valorpromocional, codtipoatributo, urlseo'
);
foreach ( $condicao as $c ) {
$this->db->like ( "UPPER(nomeproduto)", strtoupper ( $c ),
'both' );
}
$this->db->from ( 'produto' );
if ($primeiraLinha) {
return $this->db->get ()->first_row ();
} else {
if ($limite !== FALSE) {
$this->db->limit ( $limite, $pagina );
}
if ($ordenacao) {
$this->db->order_by ( $ordenacao, $tipoOrdem );
}
return $this->db->get ()->result ();
}

}
public function getDepartamentoTotal($condicao = array()) {
$this->db->from ( "produto p" );
$this->db->from ( "produtodepartamento dp" );
$this->db->where ( $condicao );
$this->db->where ( "dp.codproduto", "p.codproduto", FALSE );
$this->db->where ( "fun_totalsku(p.codproduto) > ", 0, FALSE
);
return $this->db->count_all_results ();
}
public function getDepartamento($condicao = array(),
$primeiraLinha = FALSE, $pagina = 0, $limite =
LINHAS_PESQUISA_DASHBOARD, $ordenacao = FALSE, $tipoOrdem = "ASC") {
$this->db->select ( 'p.codproduto, p.nomeproduto,
p.resumoproduto, p.fichaproduto, p.valorproduto, p.valorpromocional,
p.codtipoatributo, p.urlseo' );
$this->db->from ( "produto p" );
$this->db->from ( "produtodepartamento dp" );
$this->db->where ( $condicao );
$this->db->where ( "dp.codproduto", "p.codproduto", FALSE );
$this->db->where ( "fun_totalsku(p.codproduto) > ", 0, FALSE
);
if ($primeiraLinha) {
return $this->db->get ()->first_row ();
} else {
if ($limite !== FALSE) {
$this->db->limit ( $limite, $pagina );
}
if ($ordenacao) {
$this->db->order_by ( $ordenacao, $tipoOrdem );
}

21
return $this->db->get ()->result ();
}

}
public function post($itens) {
$res = $this->db->insert ( 'produto', $itens );
if ($res) {
return $this->db->insert_id ();
} else {
return FALSE;
}
}
public function update($itens, $codproduto) {
$this->db->where ( 'codproduto', $codproduto, FALSE );
$res = $this->db->update ( 'produto', $itens );
if ($res) {
return $codproduto;
} else {
return FALSE;
}
}
public function delete($codproduto) {
$this->db->where ( 'codproduto', $codproduto, FALSE );
return $this->db->delete ( 'produto' );
}

22