| Server IP : 54.94.228.101 / Your IP : 172.28.1.13 Web Server : Apache System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/vinumday2_0/app/Modules/OrdemCompra/Controllers/Admin/ |
Upload File : |
<?php
namespace App\Modules\OrdemCompra\Controllers\Admin;
use Illuminate\Http\Request;
use DB;
use Mail;
use Exception;
use Sentinel;
use App\Http\Requests;
use App\Http\Controllers\BaseController;
use App\Modules\QuantidadeReserva\Models\QuantidadeReserva;
use App\Modules\RequisicaoCompra\Models\RequisicaoCompra;
use App\Modules\UnidadeNegocio\Models\UnidadeNegocio;
use App\Modules\OrdemCompra\Models\OrdemCompra;
use App\Modules\OrdemCompraItem\Models\OrdemCompraItem;
use App\Modules\CanalHasOferta\Models\CanalHasOferta;
use App\Modules\Relatorio\Models\Relatorio;
use App\Modules\Empresa\Models\Empresa;
use App\Modules\Fornecedor\Models\Fornecedor;
use App\Modules\FornecedorContato\Models\FornecedorContato;
use App\Modules\Oferta\Models\Oferta;
use App\Modules\Canal\Models\Canal;
use App\Modules\Produto\Models\Produto;
use App\Modules\PedidoVendaHasProduto\Models\PedidoVendaHasProduto;
use App\Services\GeralService;
use App\Services\OrdemCompraService;
use App\Services\PaginationService;
use Notification;
use App\Notifications\NotificacaoOrdemCompra;
use App\User;
use Illuminate\Support\Facades\Log;
class AdminOrdemCompraController extends BaseController
{
private $modulo;
private $fields;
private $fks;
private $lastInsertId;
public function __construct(){
parent::__construct();
$this->middleware('auth');
$this->modulo = \App\Gerador::where('nome', 'OrdemCompra')->with('campos', 'fks')->first();
$this->fields = $this->modulo->campos;
$this->fieldsForm = $this->modulo->camposForm;
$this->fks = $this->modulo->fks;
$this->fksForm = $this->modulo->fksForm;
$this->ordem_compra_m = new OrdemCompra();
}
public function index(Request $request){
$post = $request->input();
$query = $this->ordem_compra_m->select('ordem_compra.*');
$data['fields_listagem'] = array();
foreach ($this->fields as $field) {
if($field->listagem){
$data['fields_listagem'][] = $field;
}
}
foreach ($this->fks as $fk) {
if($fk->listagem){
if($fk->campoRelacionado->translatable){
$table = $fk->moduloRelacionado->nome_tabela.'_descricao';
$on = $fk->moduloRelacionado->nome_tabela.'_descricao.'.$fk->moduloRelacionado->nome_tabela.'_id';
}else{
$table = $fk->moduloRelacionado->nome_tabela;
$on = $fk->moduloRelacionado->nome_tabela.'.id';
}
$query->leftJoin($table, 'ordem_compra.'.$fk->nome, '=', $on);
$query->addSelect($table.'.'.$fk->campoRelacionado->nome.' as fk'.$fk->id);
$data['fields_listagem'][] = $fk;
}
}
if(isset($post['filtro']) && $post['filtro']){
$filtro = Relatorio::with('grupos.criterios')->find($post['filtro']);
foreach ($filtro->grupos as $grupo) {
if($grupo->condicao == 'AND'){
$method = 'where';
}else{
$method = 'orWhere';
}
$query->$method(function ($query) use($grupo) {
foreach ($grupo->criterios as $criterio) {
if($criterio->condicao == 'AND'){
$query->where($criterio->coluna, $criterio->operador, $criterio->valor);
}else{
$query->orWhere($criterio->coluna, $criterio->operador, $criterio->valor);
}
}
});
}
}
$query->join('sis_users', 'ordem_compra.responsavel_id', '=', 'sis_users.id');
$query->orderBy('id', 'DESC');
if ($request->input('term'))
{
$query->where(function($qr) use ($request){
$qr->where('ordem_compra.id', '=', $request->input('term'));
$qr->orWhere('ordem_compra.observacoes', 'like', '%'.$request->input('term').'%');
$qr->orWhere('sis_users.first_name', 'like', '%'.$request->input('term').'%');
});
}
if($request->input('term_empresa_id')){
$query->where('ordem_compra.empresa_id', '=', $request->input('term_empresa_id'));
}
if($request->input('term_unidade_id')){
$query->where('ordem_compra.unidade_negocio_id', '=', $request->input('term_unidade_id'));
}
if($request->input('term_fornecedor_id')){
$query->where('ordem_compra.fornecedor_id', '=', $request->input('term_fornecedor_id'));
}
if ($request->input('term_data_inicio') && $request->input('term_data_fim'))
{
$query->whereBetween('ordem_compra.data_inclusao', [$request->input('term_data_inicio') . " 00:00:00", $request->input('term_data_fim') . " 23:59:59"]);
}
elseif($request->input('term_data_inicio'))
{
$query->whereBetween('ordem_compra.data_inclusao', [$request->input('term_data_inicio') . " 00:00:00", $request->input('term_data_inicio') . " 23:59:59"]);
}
$data['ordens_compra'] = $query->groupBy('ordem_compra.id')->orderBy('id', 'DESC')->paginate(20);
$data['filtros'] = Relatorio::where('tipo', 'F')->where('modulo', 'OrdemCompra')->orderBy('relatorio.sequencia', 'ASC')->get();
$data['fornecedores'] = Fornecedor::select('id','nome')->orderBy('nome','ASC')->get();
$data['empresas'] = Empresa::all();
$data['unidades'] = UnidadeNegocio::orderBy('id','ASC')->get();
$data['filtro_atual'] = $post['filtro'] ?? null;
$data['termos'] = $request->all();
usort($data['fields_listagem'], function($a, $b) {
return $a->ordem - $b->ordem;
});
return view('OrdemCompra::admin/ordem-compra',$data);
}
public function playground(Request $request){
$data = $request->input();
if($request->input('format') && $request->input('format') == 'json'){
if($request->input('status')){
$query = $this->ordem_compra_m->select('ordem_compra.*')->where('ordem_compra.status', '=', $request->input('status'));
}else{
$query = $this->ordem_compra_m->select('ordem_compra.*')->where('ordem_compra.status', '<>', '');
}
$data['fields_listagem'] = array();
foreach ($this->fields as $field) {
if($field->listagem){
$data['fields_listagem'][] = $field;
}
}
foreach ($this->fks as $fk) {
if($fk->listagem){
if($fk->campoRelacionado->translatable){
$table = $fk->moduloRelacionado->nome_tabela.'_descricao';
$on = $fk->moduloRelacionado->nome_tabela.'_descricao.'.$fk->moduloRelacionado->nome_tabela.'_id';
}else{
$table = $fk->moduloRelacionado->nome_tabela;
$on = $fk->moduloRelacionado->nome_tabela.'.id';
}
$query->leftJoin($table, 'ordem_compra.'.$fk->nome, '=', $on);
$query->addSelect($table.'.'.$fk->campoRelacionado->nome.' as '.$table.'_'.$fk->campoRelacionado->nome);
$data['fields_listagem'][] = $fk;
}
}
//Termos de Pesquisa
if ($request->input('pesquisa'))
{
$query->where(function($qr) use ($request){
$qr->orWhere(DB::raw("fornecedor.nome"), 'LIKE', "%" . $request->input('pesquisa') . "%");
$qr->orWhere('ordem_compra.id', '=', $request->input('pesquisa'));
});
}
//Status de Aprovação
if ($request->input('status'))
{
$query->where('ordem_compra.status', '=', $request->input('status'));
}
$query->groupBy('ordem_compra.id')->orderBy($request->input('column'), $request->input('order'));
$pagination = new PaginationService([
'query' => $query,
'path' => url('/admin/ordem-compra/' . $request->input('rota')),
'request' => $request
]);
$data['pagination'] = $pagination;
$query->offset($pagination->pagesize * ($pagination->current_page - 1))->limit($pagination->pagesize);
$data['registros'] = $query->get();
usort($data['fields_listagem'], function($a, $b) {
return $a->ordem - $b->ordem;
});
$data['html'] = view('OrdemCompra::admin/_ordem-'.$request->input('rota'), $data)->render();
return response()->json($data);
}
$data['segment'] = \Request::segment(3);
$data['listaStatus'] = OrdemCompraService::getStatus();
return view('OrdemCompra::admin/ordem-'.$data['segment'], $data);
}
public function getFormOrdemCompra($id){
$data = [];
$data['empresas'] = OrdemCompraService::getEmpresas();
$data['unidades'] = UnidadeNegocio::orderBy('id','ASC')->get();
$data['fornecedores'] = OrdemCompraService::getFornecedores();
$data['listaStatus'] = OrdemCompraService::getStatus();
$data['objectOrdemCompra'] = false;
$data['title_form'] = "Nova Ordem de Compra";
if($id!=0){
$data['ordem_compra'] = $this->ordem_compra_m->find($id);
$data['objectOrdemCompra'] = $data['ordem_compra'];
$data['title_form'] = "Editar Ordem de Compra {$data['ordem_compra']->id}";
$data['responsaveis'] = OrdemCompraService::getResponsaveis($data['ordem_compra']->responsavel_id);
}
$html = view('OrdemCompra::admin/_form-ordem-compra', $data)->render();
return response()->json(['status' => true, 'html' => $html]);
}
public function envioFornecedor(Request $request){
try {
$ordemCompra = OrdemCompra::find($request->input('id'));
$queryFornecedor = FornecedorContato::where('fornecedor_id', $request->input('fornecedor_id'));
if($request->input('contato_id')){
$queryFornecedor->where('id', $request->input('contato_id'));
}
$contato = $queryFornecedor->orderBy('id','DESC')->first();
if(!$contato){
$json = [
'status' => false,
'message' => 'Nenhum contato cadastrado para este Fornecedor'
];
}else{
$user = User::find(Sentinel::getUser()->id);
$user->email = $contato->email;
Notification::send($user, new NotificacaoOrdemCompra($ordemCompra, $contato));
$json = [
'status' => true,
'message' => 'Envio realizado com sucesso!'
];
}
} catch (Exception $e) {
Log::info('OrdemCompra::envioFornecedor => ' . $e->getMessage());
$json = [
'status' => false,
'message' => 'Falha ao Realizar Envio'
];
}
return response()->json($json);
}
public function gerador(Request $request){
$oferta = new Oferta;
$data = [];
$data['listaFornecedores'] = Fornecedor::orderBy('nome', 'ASC')->get();
$data['tiposOferta'] = $oferta->tipos();
$data['periodosOferta'] = [5,15,30];
$data['periodosCompra'] = [5,10,15,30];
$data['listaCanais'] = Canal::orderBy('nome', 'ASC')->get();
$data['listaProdutos'] = Produto::orderBy('nome', 'ASC')->get();
$data['listaEmpresas'] = Empresa::all();
$data['unidades'] = UnidadeNegocio::orderBy('id','ASC')->get();
$data['ordenacao'] = '';
return view('OrdemCompra::admin/gerador',$data);
}
public function itemListaProdutos(Request $request){
$data = [];
$produtos = GeralService::listarProdutosCompra($request);
$produto = $produtos[0];
$data['produto'] = $produto;
$htmlProduto = view('OrdemCompra::admin/_produto-lista', $data)->render();
$htmlDetalhesProduto = view('OrdemCompra::admin/_detalhes-produto', $data)->render();
$json = [
'status' => true,
'message' => 'Produto atualizado com sucesso!',
'html_produto' => $htmlProduto,
'html_detalhes_produto' => $htmlDetalhesProduto
];
return response()->json($json);
}
public function geradorListaProdutos(Request $request){
$data = [];
$produtos = GeralService::listarProdutosCompra($request);
$data['produtos'] = $produtos;
$html = view('OrdemCompra::admin/produtos-lista', $data)->render();
$fornecedor = Fornecedor::select('id','nome')->where('id', $request->input('fornecedor_id'))->first();
$json = [
'status' => true,
'html' => $html,
'fornecedor' => $fornecedor
];
return response()->json($json);
}
public function deleteProdutoCompra(Request $request){
$Produto = Produto::where('id', $request->input('produto_id'))->first();
$Produto->listar_compras = 0;
$Produto->save();
GeralService::atualizarEstoqueOfertasProduto($Produto->id);
$json = ['status' => true, 'message' => "Produto removido da Lista!"];
return response()->json($json);
}
public function fornecedorContatos(Request $request){
$data = [];
$data['fornecedor'] = Fornecedor::select('id','nome')->where('id', $request->input('fornecedor_id'))->first();
$data['ordem_id'] = $request->input('id');
$html = view('OrdemCompra::admin/_fornecedor-contatos', $data)->render();
$json = [
'status' => true,
'html' => $html
];
return response()->json($json);
}
public function geradorOrdem(Request $request){
//Gera Ordem
$OrdemCompra = new OrdemCompra;
$OrdemCompra->empresa_id = $request->input('empresa_id');
$OrdemCompra->unidade_negocio_id = $request->input('unidade_negocio_id');
$OrdemCompra->fornecedor_id = $request->input('fornecedor_ordem_id');
$OrdemCompra->responsavel_id = Sentinel::getUser()->id;
$OrdemCompra->status = 'P';
$OrdemCompra->zerar_disponibilidade_oferta = ($request->input('zerar_disponibilidade_oferta') ? $request->input('zerar_disponibilidade_oferta') : 0);
$OrdemCompra->observacoes = $request->input('observacoes');
//Inclui Items
if($OrdemCompra->save()){
$ordem_compra_id = $OrdemCompra->id;
$produtos = $request->input('produtos');
$quantidade = 0;
$valor_total = 0;
$itemsProdutos = [];
foreach ($produtos as $produto) {
$OrdemCompraItem = new OrdemCompraItem();
$OrdemCompraItem->produto_id = $produto['produto_id'];
$OrdemCompraItem->ordem_compra_id = $ordem_compra_id;
$OrdemCompraItem->quantidade = $produto['quantidade'];
$percentual_desconto = (!empty($produto['preco_mercado']) && $produto['preco_mercado'] != '0' ? (1 - ($produto['preco_venda'] / $produto['preco_mercado'])) * 100 : 0);
$OrdemCompraItem->percentual_desconto = number_format($percentual_desconto, 2, '.', '');
$percentual_markup = (!empty($produto['preco_custo']) && $produto['preco_custo'] != '0' ? (($produto['preco_venda'] / $produto['preco_custo']) - 1) * 100 : 0);
$OrdemCompraItem->percentual_markup = number_format($percentual_markup, 2, '.', '');
$OrdemCompraItem->preco_unitario = $produto['preco_custo'];
$OrdemCompraItem->valor_total = $produto['quantidade'] * $produto['preco_custo'];
if($OrdemCompraItem->save()){
$itemsProdutos[] = $produto['produto_id'];
$quantidade += $OrdemCompraItem->quantidade;
$valor_total += $OrdemCompraItem->valor_total;
//Finalizar Compra Produto
if($produto['finalizar_compra']){
$OrdemCompraItem->produto->listar_compras = 0;
}
//Zera Disponibilidade Ofertas Não Vigentes Associadas ao Produto
// GeralService::atualizarEstoqueOfertasProduto($OrdemCompraItem->produto_id); deprecated
//Zera Disponibilidade Ofertas Associadas ao Produto
if($OrdemCompra->zerar_disponibilidade_oferta == 1){
GeralService::zerarEstoqueOfertasProduto($OrdemCompraItem->produto_id);
}
if($OrdemCompraItem->produto->preco_custo != $OrdemCompraItem->preco_unitario){
$OrdemCompraItem->produto->preco_custo = $produto['preco_custo'];
$OrdemCompraItem->produto->origem_preco = 'ordem';
$OrdemCompraItem->produto->save();
}
}else{
Log::info("Erro ao salvar Item Ordem Produto {$OrdemCompraItem->produto_id}: " . $e->getMessage());
}
}
}else{
//erro ordem compra
}
//Atualiza Ordem
$OrdemCompra->quantidade = $quantidade;
$OrdemCompra->valor_total = $valor_total;
$OrdemCompra->save();
//Atualiza Requisições de Compra
//Somente ao Atender/Finalizar Ordem
if(count($itemsProdutos) > 0){
$RequisicoesCompra = RequisicaoCompra::whereIn('produto_id', $itemsProdutos)->where('status', 'P')->get();
foreach ($RequisicoesCompra as $RequisicaoCompra) {
$RequisicaoCompra->ordem_compra_id = $OrdemCompra->id;
$RequisicaoCompra->save();
}
}
$json = ['status' => true, 'message' => "Ordem gravada com sucesso!"];
return response()->json($json);
}
public function detalhe($hashkey){
$ordem = OrdemCompra::where('hashkey', $hashkey)->first();
$data = [];
$data['ordem'] = $ordem;
$data['fornecedor'] = $ordem->fornecedor;
return view('OrdemCompra::admin/detalhe', $data);
}
public function add(){
$data = array();
$data['modulo'] = $this->modulo;
$data['fields'] = [];
foreach ($this->fieldsForm as $field) {
$data['fields'][] = $field;
}
foreach ($this->fks as $fk) {
$data['fields'][] = $fk;
}
usort($data['fields'], function($a, $b) {
return $a->ordem - $b->ordem;
});
foreach ($this->fks as $fk) {
$classPath = '\App\Modules\\'.$fk->moduloRelacionado->nome.'\Models\\'.$fk->moduloRelacionado->nome;
if($fk->nome == 'fornecedor_id'){
$data['array_'.$fk->nome] = $classPath::orderBy('nome', 'ASC')->get();
}else{
$data['array_'.$fk->nome] = $classPath::get();
}
}
$data['unidades'] = UnidadeNegocio::orderBy('id','ASC')->get();
$data['nextId'] = $this->ordem_compra_m->getNextAutoIncrement();
return view('OrdemCompra::admin/form-ordem-compra', $data);
}
public function edit($slug){
$id = OrdemCompra::where('id', $slug)->value('id');
$data['modulo'] = $this->modulo;
$data['fields'] = [];
foreach ($this->fieldsForm as $field) {
$data['fields'][] = $field;
}
foreach ($this->fks as $fk) {
$data['fields'][] = $fk;
}
usort($data['fields'], function($a, $b) {
return $a->ordem - $b->ordem;
});
foreach ($this->fks as $fk) {
$classPath = '\App\Modules\\'.$fk->moduloRelacionado->nome.'\Models\\'.$fk->moduloRelacionado->nome;
if($fk->nome == 'fornecedor_id'){
$data['array_'.$fk->nome] = $classPath::orderBy('nome', 'ASC')->get();
}else{
$data['array_'.$fk->nome] = $classPath::get();
}
}
$data['ordem_compra'] = $this->ordem_compra_m->find($id);
if($this->modulo->galeria){
$data['ordem_compra']->imagens = $this->ordem_compra_m->getImagens($id);
}
$data['unidades'] = UnidadeNegocio::orderBy('id','ASC')->get();
return view('OrdemCompra::admin/form-ordem-compra',$data);
}
public function getProdutos($id){
$data['ordem'] = OrdemCompra::with('produtos')->find($id);
return view('OrdemCompra::admin/produtos-ordem', $data)->render();
}
public function getProduto(Request $request){
$data = $request->input();
$html = view('OrdemCompra::admin/_produto-ordem', $data)->render();
return response()->json(['status' => true, 'html' => $html]);
}
public function saveAjax(Request $request){
try {
$resultado = OrdemCompraService::save($request);
} catch (Exception $e) {
return response()->json(['status' => false, 'message' => $e->getMessage()]);
}
return response()->json($resultado);
}
public function save(Request $request){
$post = $request->input();
$post['meta_keywords'] = (isset($post['meta_keywords'])) ? implode(',',$post['meta_keywords']) : null;
foreach ($this->fields as $field) {
$arrayFields[] = $field->nome;
}
foreach ($this->fks as $fk) {
$arrayFields[] = $fk->nome;
}
if($this->modulo->imagem){
$arrayFields[] = 'thumbnail_principal';
}
if($post['status'] == 'A' && empty($post['data_entrega'])){
$post['data_entrega'] = date('Y-m-d');
}
if($post['data_entrega'] == '0000-00-00' || empty($post['data_entrega'])){
$post['data_entrega'] = NULL;
}
if($post['previsao_entrega'] == '0000-00-00' || empty($post['previsao_entrega'])){
$post['previsao_entrega'] = NULL;
}
$arrayFields[] = 'unidade_negocio_id';
if($request->input('id')){
$ordem_compra = $this->ordem_compra_m->find($request->input('id'));
$arrayFields[] = 'responsavel_id_update';
$arrayFields[] = 'data_update';
$post['responsavel_id_update'] = Sentinel::getUser()->id;
$post['data_update'] = date('Y-m-d H:i:s');
if($post['status'] == 'AR' && empty($ordem_compra->responsavel_id_aprovacao)){
$arrayFields[] = 'responsavel_id_aprovacao';
$post['responsavel_id_aprovacao'] = Sentinel::getUser()->id;
}
unset($arrayFields[0]);
$id_ordem_compra = $this->ordem_compra_m->editar($arrayFields, $post, $request->input('id'));
}else{
$post['data_inclusao'] = date('Y-m-d H:i:s');
$arrayFields[] = 'responsavel_id';
$post['responsavel_id'] = Sentinel::getUser()->id;
$id_ordem_compra = $this->ordem_compra_m->criar($arrayFields, $post);
}
$itemsProdutos = [];
$quantidade = 0;
$valor_total = 0;
if (isset($post['produto-checkbox']) && count($post['produto-checkbox'])){
foreach ($post['produto-checkbox'] as $key => $id_produto) {
$itemsProdutos[] = $id_produto;
$ordemCompraItem = OrdemCompraItem::where('ordem_compra_id', $id_ordem_compra)->where('produto_id', $id_produto)->first();
if(!$ordemCompraItem){
$ordemCompraItem = new OrdemCompraItem();
$ordemCompraItem->produto_id = $id_produto;
$ordemCompraItem->ordem_compra_id = $id_ordem_compra;
}
$quantidade += $post['produto-quantidade-checkbox'][$key];
$valor_total += $post['produto-preco-custo'][$key] * $post['produto-quantidade-checkbox'][$key];
//Alteração Preço Custo Produto
if($ordemCompraItem->produto->preco_custo != $post['produto-preco-custo'][$key]){
$ordemCompraItem->produto->preco_custo = $post['produto-preco-custo'][$key];
$ordemCompraItem->produto->origem_preco = 'ordem';
$ordemCompraItem->produto->save();
}
Log::info("Quantidade: {$ordemCompraItem->quantidade}|".$post['produto-quantidade-checkbox'][$key]."; Preço Unitário: {$ordemCompraItem->preco_unitario}|" . $post['produto-preco-custo'][$key]);
if($ordemCompraItem->quantidade == $post['produto-quantidade-checkbox'][$key] && $ordemCompraItem->preco_unitario == $post['produto-preco-custo'][$key]){
Log::info("OrdemCompra::save => Ordem: {$id_ordem_compra} | item {$ordemCompraItem->produto_id}");
continue;
}
$ordemCompraItem->quantidade = $post['produto-quantidade-checkbox'][$key];
$ordemCompraItem->preco_unitario = $post['produto-preco-custo'][$key];
$percentual_desconto = (!empty($post['produto-preco-mercado'][$key]) && $post['produto-preco-mercado'][$key] != '0' ? (1 - ($post['produto-preco-venda'][$key] / $post['produto-preco-mercado'][$key])) * 100 : 0);
$ordemCompraItem->percentual_desconto = number_format($percentual_desconto, 2, '.', '');
$percentual_markup = (!empty($post['produto-preco-custo'][$key]) && $post['produto-preco-custo'][$key] != '0' ? (($post['produto-preco-venda'][$key] / $post['produto-preco-custo'][$key]) - 1) * 100 : 0);
$ordemCompraItem->percentual_markup = number_format($percentual_markup, 2, '.', '');
$ordemCompraItem->valor_total = $post['produto-preco-custo'][$key] * $post['produto-quantidade-checkbox'][$key];
$ordemCompraItem->save();
}
OrdemCompraItem::where('ordem_compra_id', $id_ordem_compra)->whereNotIn('produto_id', $itemsProdutos)->delete();
}else{
OrdemCompraItem::where('ordem_compra_id', $id_ordem_compra)->delete();
}
//Atualiza Ordem
$OrdemCompra = OrdemCompra::find($id_ordem_compra);
$OrdemCompra->insert_log = true;
$OrdemCompra->quantidade = $quantidade;
$OrdemCompra->valor_total = $valor_total;
$OrdemCompra->save();
//Atualiza Requisições de Compra
//Somente ao Atender/Finalizar Ordem
if($post['status'] == 'A' && count($itemsProdutos) > 0){
$RequisicoesCompra = RequisicaoCompra::whereIn('produto_id', $itemsProdutos)->where('status', 'P')->where('ordem_compra_id', $id_ordem_compra)->get();
foreach ($RequisicoesCompra as $RequisicaoCompra) {
$RequisicaoCompra->status = 'A';
$RequisicaoCompra->save();
}
}
\Session::flash('type', 'success');
\Session::flash('message', "Alteracoes salvas com sucesso!");
return redirect('admin/ordem-compra');
}
public function upload_image(Request $request) {
if($request->hasFile('file')) {
//upload an image to the /img/tmp directory and return the filepath.
$file = $request->file('file');
$tmpFilePath = '/uploads/ordem-compra/';
$tmpFileName = time() . '-' . $file->getClientOriginalName();
$file = $file->move(public_path() . $tmpFilePath, $tmpFileName);
$path = $tmpFilePath . $tmpFileName;
return response()->json(array('path'=> $path, 'file_name'=>$tmpFileName), 200);
} else {
return response()->json(false, 200);
}
}
public function upload_galeria($id, Request $request) {
if($request->hasFile('file')) {
//upload an image to the /img/tmp directory and return the filepath.
$file = $request->file('file');
$tmpFilePath = '/uploads/ordem-compra/';
$tmpFileName = time() . '-' . $file->getClientOriginalName();
$file = $file->move(public_path() . $tmpFilePath, $tmpFileName);
$path = $tmpFilePath . $tmpFileName;
$this->ordem_compra_m->criar_imagem(array('id_ordem_compra' => $id, 'thumbnail_principal' => $tmpFileName));
return response()->json(array('path'=> $path, 'file_name'=>$tmpFileName), 200);
} else {
return response()->json(false, 200);
}
}
public function crop_image(Request $request) {
$img = \Image::make('uploads/ordem-compra/'.$request->input('file_name'));
$dataCrop = json_decode($request->input('data_crop'));
if($img->crop(intval($dataCrop->width), intval($dataCrop->height), intval($dataCrop->x), intval($dataCrop->y))->save('uploads/ordem-compra/thumb_'.$request->input('file_name'))){
@unlink('uploads/ordem-compra/'.$request->input('file_name'));
echo json_encode(array(
'status' => true,
'path' => '/uploads/ordem-compra/thumb_'.$request->input('file_name'),
'file_name' => 'thumb_'.$request->input('file_name'),
));
}else{
echo json_encode(array(
'status' => false,
'message' => 'Não foi possível alterar a imagem.'
));
}
}
public function delete($slug){
$id = OrdemCompra::where('id', $slug)->value('id');
$this->ordem_compra_m->deletar($id);
\Session::flash('type', 'success');
\Session::flash('message', "Registro removido com sucesso!");
return redirect('admin/ordem-compra');
}
public function deletar(Request $request){
$ordens = $request->input('ids');
foreach ($ordens as $id) {
OrdemCompraItem::where('ordem_compra_id', $id)->delete();
$this->ordem_compra_m->deletar($id);
}
return response()->json(['status' => true, 'message' => 'Registro(s) removido(s) com sucesso!']);
}
public function delete_imagem($id){
try{
$imagem = $this->ordem_compra_m->getImagem($id);
$this->ordem_compra_m->deletar_imagem($id);
unlink('uploads/ordem-compra/'.$imagem->thumbnail_principal);
return response()->json(array('status' => true, 'message' => 'Registro removido com sucesso!'));
}catch(Exception $e){
return response()->json(array('status' => false, 'message' => $e->getMessage()));
}
}
private function slugify($string)
{
return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8')), '-'));
}
}