403Webshell
Server IP : 54.94.228.101  /  Your IP : 172.28.20.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/Services/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/vinumday2_0/app/Services/OrdemCompraService.php
<?php 

namespace App\Services;

use DB;
use Sentinel;
use Illuminate\Support\Facades\Log;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
use Exception;
use Session;

use App\User;
use App\BasicInfo;
use App\CampoOption;
use App\Modules\OrdemCompra\Models\OrdemCompra;
use App\Modules\Empresa\Models\Empresa;
use App\Modules\Fornecedor\Models\Fornecedor;
use App\Modules\OrdemCompraItem\Models\OrdemCompraItem;
use App\Modules\RequisicaoCompra\Models\RequisicaoCompra;

class OrdemCompraService {

    public static function getEmpresas(){
        return Empresa::select('id', 'nome')->orderBy('nome', 'ASC')->get();
    }

    public static function getFornecedores(){
        return Fornecedor::select('id', 'nome')->orderBy('nome', 'ASC')->get();
    }

    public static function getResponsaveis($user_id = FALSE){
        if($user_id){
            $responsaveis = User::select('id','first_name', 'last_name')->where('id', $user_id)->orderBy('first_name','ASC')->get();
        }else{
            $responsaveis = User::select('id','first_name', 'last_name')->whereRaw(DB::raw('EXISTS (SELECT 1 FROM sis_role_users sru WHERE sru.user_id = sis_users.id AND sru.role_id IN (1))'))->orderBy('first_name','ASC')->get();
        }
        return $responsaveis;
    }

    public static function getStatus(){
        return CampoOption::select('sis_campo_options.chave', 'sis_campo_options.valor')
        ->join('sis_campo_modulo as c', 'c.id', '=', 'sis_campo_options.id_campo_modulo')
        ->join('sis_modulos as m', 'm.id', '=', 'c.id_modulo')
        ->where('c.nome', 'status')->where('m.nome', 'OrdemCompra')
        ->orderBy('sis_campo_options.ordem', 'ASC')
        ->get();
    }

    public static function save($request){

        $message        = "Ordem de Compra registrada com sucesso!";
        $modulo         = \App\Gerador::where('nome', 'OrdemCompra')->with('campos', 'fks')->first();
        $fields         = $modulo->campos;
        $fks            = $modulo->fks;
        $ordem_compra_m = new OrdemCompra();

        $post = $request->input();

        $post['meta_keywords'] = (isset($post['meta_keywords'])) ? implode(',',$post['meta_keywords']) : null;

        foreach ($fields as $field) {
            $arrayFields[] = $field->nome;
        }
        foreach ($fks as $fk) {
            $arrayFields[] = $fk->nome;
        }

        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('ordem_compra_id')){

            $ordem_compra = $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 = $ordem_compra_m->editar($arrayFields, $post, $request->input('ordem_compra_id'));
            OrdemCompraItem::where('ordem_compra_id', $id_ordem_compra)->delete();

            $message = "Alterações realizadas com sucesso!";

        }else{

            $post['data_inclusao'] = date('Y-m-d H:i:s');

            $arrayFields[]          = 'responsavel_id';
            $post['responsavel_id'] = Sentinel::getUser()->id;

            $id_ordem_compra = $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                      = new OrdemCompraItem();
                $ordemCompraItem->produto_id          = $id_produto;
                $ordemCompraItem->ordem_compra_id     = $id_ordem_compra;
                $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();

                $quantidade  += $ordemCompraItem->quantidade;
                $valor_total += $ordemCompraItem->valor_total;

                //Alteração Preço Custo Produto
                if($ordemCompraItem->produto->preco_custo != $ordemCompraItem->preco_unitario){

                    $ordemCompraItem->produto->preco_custo  = $ordemCompraItem->preco_unitario;
                    $ordemCompraItem->produto->origem_preco = 'ordem';
                    $ordemCompraItem->produto->save();

                }
            }
        }

        //Atualiza Ordem
        $OrdemCompra = OrdemCompra::find($id_ordem_compra);
        $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();
            }
        }

        return ['status' => true, 'id' => $id_ordem_compra, 'message' => $message];

    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit