Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Controllers\Prevenda\ViabilidadeComercial;
- use \Util\Prevendas\PrevendasConfig;
- use \Util\Prevendas\CurlPrevendas;
- use \Util\Prevendas\SVAParamParser;
- use \Util\Param;
- use \Util\Util;
- class DetalharController extends \Controllers\Comercial\Viabilidade\DetalharBase implements \Util\BaseController {
- const FEATURE_ATRIBUTE_CAPILARES = 88;
- const LPU_TIPO_PADRAO = 'P';
- public function __construct(){
- $this->nivel = $_SESSION['permissoes'][117];
- if (!$this->nivel && !$_SESSION['permissoes'][109]) {
- throw new \Exception('Sem permissão', 403);
- }
- }
- public function index(){
- parent::index();
- $config = PrevendasConfig::getConfig();
- $objServicoFinanceiro = $this->getArrayParams('servicoFinanceiro');
- $viable = $this->getArrayParams("objViable");
- // Caso tenha espaço exclusivo para Datacenter, será um Colocation
- //e a informação deve ir para view
- $this->setArrayParams('espacoDatacenter', $viable->getEspacoDatacenter());
- $interfacesValidar = array(1, 2);
- if (in_array($objServicoFinanceiro->getServApelido(), $config['servicos']) && (in_array($viable->getInterfaceReal(), $interfacesValidar))) {
- $this->setArrayParams('urlPrevendasApiConsultaGrupo', $config['ajaxEndpoinst']['consultaGrupos']);
- $this->setArrayParams('isSegregatedViable', true);
- $grupos = $this->getGrupoSva($objServicoFinanceiro, $this->getArrayParams('objViable'));
- $this->setArrayParams('gruposSva', $grupos);
- } else {
- $this->setArrayParams('isSegregatedViable', 0);
- }
- $interfaces = \Util\Param::paramMovi('interfaces');
- $this->setArrayParams('meios', array_map(function($value, $label)use($viable){
- return array(
- 'label' => $label,
- 'value' => $value,
- 'attr' => $viable->getInterface()==$value?'selected':''
- );
- }, array_keys($interfaces), array_values($interfaces)));
- $interfacesReal = \Util\Param::paramMovi('interfacesReal');
- $arrayCarregaInterfaces = \Util\Param::paramMovi('relacionamentoInterfaces');
- $this->setArrayParams('interfaces', array_filter(array_map(function($value, $label)use($viable,$arrayCarregaInterfaces){
- if(!in_array($value, $arrayCarregaInterfaces[$viable->getInterface()])){
- return false;
- }
- return array(
- 'label' => $label,
- 'value' => $value,
- 'attr' => $viable->getInterfaceReal()==$value?'selected':''
- );
- }, array_keys($interfacesReal), array_values($interfacesReal))));
- $tiposRedes = \Util\Param::paramMovi('tiposRede');
- $this->setArrayParams('tiposRede', array_map(function($value, $label)use($viable){
- return array(
- 'label' => $label,
- 'value' => $value,
- 'attr' => $viable->getNetworkType()==$value?'selected':''
- );
- }, array_keys($tiposRedes), array_values($tiposRedes)));
- $this->setArrayParams('totalFO', (float) $viable->getTotalFO());
- $entityComercial = $this->getArrayParams('entityComercial');
- $arrayProdutos = $entityComercial->getRepository('\Comercial\Entity\Requirement')->findAll();
- $produtos = array_filter(array_map ( function (\Comercial\Entity\Requirement $objRequirement) {
- $lumaid = $objRequirement->getLumaId();
- if (!$lumaid) {
- return NULL;
- }
- $name = str_pad($lumaid, 4, '0', STR_PAD_LEFT).' - '.utf8_decode($objRequirement->getName());
- return array (
- 'value' => $lumaid,
- 'label' => $name,
- 'attr' => utf8_decode ( "data-sigla='{$objRequirement->getUnit()}'" )
- );
- }, $arrayProdutos));
- $this->setArrayParams('produtos', $produtos);
- $template = $this->getArrayParams( 'objTemplate' )->setTemplate ( '/inc/skeleton/base.html.twig' );
- $template->routing = true;
- return $template->show();
- }
- /**
- * Carrega uma lista de LPUs de acordo com o serviço
- */
- public function vincular(){
- $this->setArrayParams("modelTemplate", '/prevenda/viabilidadeComercial/vincularLPU.html.twig');
- $entityPresale = $this->getArrayParams ( 'entityPresale' );
- $entityComercial = $this->getArrayParams ( 'entityComercial' );
- $objViable = $entityComercial->getRepository('\Comercial\Entity\Viable')->find($_REQUEST['viabilidade']);
- $objService = $objViable->getChance()->getIdProduct();
- $objService = $entityPresale->getRepository('\Presale\Entity\Service')->findOneByServCodigoid($objService->getServicoContrato());
- /*$arrayLpus = $entityPresale->getRepository('\Presale\Entity\Lpu')->findBy ( array (
- 'active' => true,
- 'service' => $objService,
- 'onlineSales' => null
- ), array (
- 'id' => 'ASC'
- ) );*/
- $arrayLpus = $entityPresale->getRepository('\Presale\Entity\Lpu')->getLpus($objService->getId());
- $this->setArrayParams("params", array('lpus'=> array_map(function(\Presale\Entity\Lpu $objLpu){
- return array(
- 'label' => utf8_decode($objLpu->getName()),
- 'value' => $objLpu->getId()
- );
- }, $arrayLpus)));
- $this->getArrayParams('objTemplate')->show('ViabilidadeComercial', 'Ajax');
- }
- /**
- * Carrega tela para cadastrar nova lpu
- */
- public function adicionar() {
- try{
- $entityComercial = $this->getArrayParams('entityComercial');
- $entityPresale = $this->getArrayParams('entityPresale');
- $entityFinanceiro = $this->getArrayParams('entityFinanceiro');
- if(!isset($_REQUEST['viabilidade']) || !$_REQUEST['viabilidade']){
- throw new \Exception('Viabilidade não encontrada.');
- }
- $objViable = $entityComercial->getRepository('\Comercial\Entity\Viable')->find($_REQUEST['viabilidade']);
- if(!$objViable instanceof \Comercial\Entity\Viable){
- throw new \Exception('Viabilidade inválida.');
- }
- // Tipo de rede pode já ter sido definido pela equipe de engenharia ou na tela-mãe da adição da LPU
- $tipoRede = $objViable->getNetworkType();
- $requestTipoRede = (!empty($_REQUEST['tipoRede'])) ? $_REQUEST['tipoRede'] : '';
- $tipoRede = (empty($tipoRede)) ? $requestTipoRede : $tipoRede;
- $objChance = $objViable->getChance();
- $objService = $entityPresale->getRepository('Presale\Entity\Service')->findOneBy(
- array('servCodigoid'=>$objChance->getIdProduct()->getServicoContrato())
- );
- $caracteristicas = array();
- foreach ($objViable->getFeatures() as $objViableFeature){
- // Deve deixar precificar apenas a feature dos capilares para o produto FIBRA APAGADA
- if ($objService->getName() == "FIBRA APAGADA" && $objViableFeature->getFeatureattributeId() != self::FEATURE_ATRIBUTE_CAPILARES) {
- continue;
- }
- $objFeatureAttribute = $entityPresale->getRepository('Presale\Entity\FeatureAttribute')->find(
- $objViableFeature->getFeatureAttributeId()?:0
- );
- if(!$objFeatureAttribute instanceof \Presale\Entity\FeatureAttribute){
- throw new \Exception('Característica inválida.');
- }
- $objFeature = $objFeatureAttribute->getFeature();
- $nome = utf8_decode($objFeatureAttribute->getName());
- if (is_numeric($nome)) {
- $objAtrivalo = $entityFinanceiro->getRepository('Financeiro\Entity\Atributovalor')->find($nome);
- if($objAtrivalo instanceof \Financeiro\Entity\Atributovalor){
- $nome = $objAtrivalo->getAtrivaloValor();
- }
- }
- $caracteristicas[utf8_decode($objFeature->getName())]['atributos'][] = array('label'=>$nome?:utf8_decode($objFeature->getName()),'value'=>$objFeatureAttribute->getId());
- $caracteristicas[utf8_decode($objFeature->getName())]['label']= utf8_decode($objFeature->getName());
- }
- // Características obrigatórias
- $arrayFeatureMandatory = array_filter(array_map(function($obj){
- if($obj->getMandatory()){
- return $obj;
- }
- return false;
- },$objService->getFeatures()->toArray()));
- foreach ($arrayFeatureMandatory as $objFeatureMandatory){
- // Retorna os marcados como default
- $arrayFeatureAttribute = array_filter(array_map(function($obj){
- if($obj->getDefaultSelected()){
- return $obj;
- }
- return false;
- },$objFeatureMandatory->getAttributes()->toArray()));
- foreach ($arrayFeatureAttribute as $objFeatureAttribute){
- if(!in_array(utf8_decode($objFeatureMandatory->getName()),$caracteristicas)){
- $nome = utf8_decode($objFeatureAttribute->getName());
- if (is_numeric($nome)) {
- $objAtrivalo = $entityFinanceiro->getRepository('Financeiro\Entity\Atributovalor')->find($nome);
- if($objAtrivalo instanceof \Financeiro\Entity\Atributovalor){
- $nome = $objAtrivalo->getAtrivaloValor();
- }
- }
- $caracteristicas[utf8_decode($objFeatureMandatory->getName())]['atributos'][] = array('label'=>$nome?:utf8_decode($objFeatureMandatory->getName()),'value'=>$objFeatureAttribute->getId());
- $caracteristicas[utf8_decode($objFeatureMandatory->getName())]['label']= utf8_decode($objFeatureMandatory->getName());
- }
- }
- }
- $params['caracteristicas'] = $caracteristicas;
- if($objViable->getRequestContractDeadline()){
- $params['tempo'] = $objViable->getRequestContractDeadline();
- $params['unidadeTempo'] = $objViable->getRequestContractDeadlineUnit();
- }
- // Verifica se é um serviço sem velocidade
- $servicoSemVelocidade = false;
- if(in_array($objService->getid(),\Util\Param::$arrayServicosSemVelocidadePresale)) {
- $servicoSemVelocidade = true;
- }
- // Se for colocation permite definir quantidade
- $params["semVelocidade"] = $servicoSemVelocidade;
- if(strtolower($objService->getName()) == "colocation") {
- $params["quantidade"] = true;
- }
- $params["tipoRede"] = (empty($tipoRede)) ? '' : $tipoRede;
- $this->setArrayParams("modelTemplate", '/prevenda/viabilidadeComercial/adicionarLPU.html.twig');
- $this->setArrayParams("params", $params);
- $this->getArrayParams('objTemplate')->show('ViabilidadeComercial', 'Ajax');
- }
- catch(\Exception $ex){
- print_r($ex->getMessage());
- }
- }
- public function anexo(){
- try {
- $entityComercial = $this->getArrayParams ( 'entityComercial' );
- $objViableApproval = $entityComercial->getRepository ( '\Comercial\Entity\ViableApproval' )->find ( $_REQUEST['doc']?:0 );
- if(!$objViableApproval instanceof \Comercial\Entity\ViableApproval){
- throw new \Exception ( 'Documento inválido', 0xb00b5 );
- }
- $pathBroken = explode('/', $objViableApproval->getAttachment());
- $filename = $pathBroken[count($pathBroken)-1];
- header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // some day in the past
- header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
- header("Content-type: application/x-download");
- header("Content-Disposition: attachment; filename={$filename}");
- header("Content-Transfer-Encoding: binary");
- return readfile($objViableApproval->getAttachment());
- } catch ( \Exception $ex ) {
- throw new \Exception ( $ex->getMessage (), $ex->getCode () );
- }
- }
- /** Rejeita uma solicitação de viabilidade
- */
- public function rejeitar() {
- $entityComercial = $this->getArrayParams('entityComercial');
- $entityStech = $this->getArrayParams('entityStech');
- $entityLuma = $this->getArrayParams('entityLuma');
- try {
- // Validação
- $objValidate = new \Util\Validate ();
- $objValidate->set('viabilidade', 'viabilidade')->is_parameter();
- $objValidate->set('Motivo', 'motivo')->is_parameter();
- \Util\Util::getErrors($objValidate);
- $objValidate->set('viabilidade', $_REQUEST['viabilidade'])->is_required()->is_integer();
- $objValidate->set('Motivo', $_REQUEST['motivo'])->is_required();
- \Util\Util::getErrors($objValidate);
- // Inicia transação e busca viabilidade
- $entityComercial->beginTransaction();
- $objViable = $entityComercial->getRepository('\Comercial\Entity\Viable')->find($_REQUEST['viabilidade']);
- if(!in_array($objViable->getViableStatus()->getId(), array(3,9))){
- throw new \Exception('Status inválido');
- }
- // Atualiza para inviável
- $objViable->setViable(false);
- // Rejeita a viabilidade e notifica o EV
- if($_REQUEST['tipo-rejeicao'] == "erroInviavel") { // Já tem aprovação da engenharia
- $inviavelComercial = $entityComercial->getRepository('\Comercial\Entity\ViableStatus')->find(5);
- $objViableApproval = $entityComercial->getRepository('\Comercial\Entity\ViableApproval')->findOneBy(array(
- 'viable' => $objViable,
- 'prevViableStatus' => 3,
- ));
- if(!$objViableApproval instanceof \Comercial\Entity\ViableApproval){
- $objViableApproval = new \Comercial\Entity\ViableApproval();
- $objViableApproval->setViable($objViable);
- $objViableApproval->setDateRecord(new \DateTime());
- $objViableApproval->setPrevViableStatus(
- $entityComercial->getRepository('\Comercial\Entity\ViableStatus')->find(9)
- );
- $objViableApproval->setDeadlineApproval(new \DateTime());
- }
- // Atualiza os dados de aprovação
- $objViableApproval->setAuthor($_SESSION['id_user']);
- $objViableApproval->setDateApproval(new \DateTime());
- $objViableApproval->setObs($_REQUEST['motivo']);
- $objViable->setViableStatus($inviavelComercial);
- $entityComercial->persist($objViableApproval);
- } else if($_REQUEST['tipo-rejeicao'] == "erroCadastro") { // Ainda não foi aprovado por ninguém
- $erroCadastro = $entityComercial->getRepository('\Comercial\Entity\ViableStatus')->find(10);
- if(!($erroCadastro instanceof \Comercial\Entity\ViableStatus)) {
- throw new \Exception("Status não encontrado para erro de cadastro");
- }
- $objViableApproval = new \Comercial\Entity\ViableApproval();
- $objViableApproval->setAuthor($_SESSION["user_id"]);
- $objViableApproval->setApproved(false);
- $objViableApproval->setObs($_REQUEST["motivo"]);
- $objViableApproval->setViable($objViable);
- $objViableApproval->setDateApproval(new \DateTime());
- $objViableApproval->setDateRecord(new \DateTime());
- $objViableApproval->setDeadlineApproval(new \DateTime());
- $objViableApproval->setPrevViableStatus(
- $entityComercial->getRepository('\Comercial\Entity\ViableStatus')->find(9)
- );
- $objViable->setViableStatus($erroCadastro);
- $entityComercial->persist($objViableApproval);
- }
- $entityComercial->flush();
- $entityComercial->commit();
- if($this->notificar($objViableApproval)){
- $retorno = array("msg"=> "Rejeitado com Sucesso!", "error" => false);
- } else {
- $retorno = array("msg"=> utf8_encode("Viabilidade Rejeitado com sucesso, mas notificação não enviada."), "error" => false);
- }
- // se foi uma viabilidade gerada pelo Vendas Online, enviar email de atualização de status
- $tags = $objViable->getChance()->getTags()->first();
- if (is_object($tags) && $tags->getName() == 'gerada_web') {
- $objProspect = $entityComercial->getRepository('\Comercial\Entity\Prospect')->findOneBy(array(
- 'id' => $objViable->getChance()->getIdProspect(),
- )
- );
- $objCadUsers = $entityStech->getRepository('\Sistech\Entity\CadUsers')->find($objProspect->getIdCliente());
- $arrayEmail = $objCadUsers->getCadUsersEmail()->toArray();
- $objEmail = array_map(function($obj){
- if($obj->getPrincipal()) return $obj->getEmail();
- else return '';
- },$arrayEmail);
- $email = (count($objEmail)?implode('/',array_filter($objEmail)):$objCustomers->getEmail());
- $objTipo = $entityLuma->getRepository("Luma\Entity\Tipo")->find(54);
- // Adiciona email de confirmação a tabela de envios
- $objEmail = new \Luma\Entity\Email();
- $objEmail->setEmailAnexo(NULL);
- $objEmail->setEmailAssunto('Vogel Telecom - Status de solicitação de viabilidade atualizado!');
- $objEmail->setEmailBcc(NULL);
- $objEmail->setEmailCc(NULL);
- $objEmail->setEmailCorpo('O status da solicitação de sua viabilidade foi atualizado. Verificar em: https://at.vogeltelecom.com/vendas/');
- $objEmail->setEmailDataenvio(new \DateTime());
- $objEmail->setEmailDatainc(new \DateTime());
- $objEmail->setEmailDe('sistemas@vogeltelecom.com');
- $objEmail->setEmailIdoperacao(0);
- $objEmail->setEmailPagina('');
- $objEmail->setEmailPara($email);
- $objEmail->setEmailPrioridade(5);
- $objEmail->setEmailTipooperacao('insert');
- $objEmail->setTipoCodigoid($objTipo);
- $entityLuma->persist($objEmail);
- $entityLuma->flush();
- }
- } catch (\Exception $e) {
- $entityComercial->rollback();
- $retorno = array("msg"=> nl2br(utf8_encode($e->getMessage())), "error" => true);
- }
- return JSON_encode($retorno);
- }
- private function getUploadedName(\Comercial\Entity\ViableApproval $objViableAproval) {
- // Undefined | Multiple Files | $_FILES Corruption Attack
- // If this request falls under any of them, treat it invalid.
- if (! isset ( $_FILES ['anexo-produtos'] ['error'] ) || is_array ( $_FILES ['anexo-produtos'] ['error'] )) {
- return '';
- }
- switch ($_FILES ['anexo-produtos'] ['error']) {
- case UPLOAD_ERR_OK :
- break;
- case UPLOAD_ERR_NO_FILE :
- return false;
- case UPLOAD_ERR_INI_SIZE :
- case UPLOAD_ERR_FORM_SIZE :
- throw new \RuntimeException ( 'Exceeded filesize limit.' );
- default :
- throw new \RuntimeException ( 'Unknown errors.' );
- }
- // You should also check filesize here.
- if ($_FILES['anexo-produtos']['size'] > 5*1024*1024) {
- throw new \RuntimeException('Exceeded filesize limit.');
- }
- // DO NOT TRUST $_FILES['anexo']['mime'] VALUE !!
- // Check MIME Type by yourself.
- $exts = explode('.', $_FILES ['anexo-produtos'] ['name']);
- $ext = $exts[count($exts)-1];
- if (!in_array($ext, array('doc', 'docx', 'odt', 'xls', 'xlsx', 'ods', 'pdf', 'zip'))) {
- throw new \RuntimeException ( 'Formato inválido do arquivo. Formatos aceitos: doc, docx, odt, xls, xlsx, ods, pdf, zip.' );
- }
- // You should name it uniquely.
- // DO NOT USE $_FILES['anexo']['name'] WITHOUT ANY VALIDATION !!
- // On this example, obtain safe unique name from its binary data.
- if(!is_dir( '/mnt/dados/ movi/viabilidade/')){
- mkdir('/mnt/dados/movi/viabilidade/', 0775, true);
- }
- $savedName = sprintf ( '/mnt/dados/movi/viabilidade/%s.%s', str_pad($objViableAproval->getId(), 8, '0', STR_PAD_LEFT).'_'.sha1_file ( $_FILES ['anexo-produtos'] ['tmp_name'] ), $ext );
- if (! move_uploaded_file ( $_FILES ['anexo-produtos'] ['tmp_name'], $savedName )) {
- throw new \RuntimeException ( 'Failed to move uploaded file.' );
- }
- return $savedName;
- }
- /**
- * Associa uma LPU para a viabilidade
- */
- public function vincularLpu() {
- $entityComercial = $this->getArrayParams('entityComercial');
- $entityPresale = $this->getArrayParams('entityPresale');
- $entityStech = $this->getArrayParams('entityStech');
- $entityLuma = $this->getArrayParams('entityLuma');
- try {
- $entityComercial->beginTransaction();
- $entityStech->beginTransaction();
- if($this->nivel & 2 != 2){
- throw new \Exception('Sem permissão para esta ação.', 403);
- }
- $objValidate = new \Util\Validate ();
- $objValidate->set('viabilidade', 'viabilidade')->is_parameter();
- $objValidate->set('Observações', 'obs')->is_parameter()->is_required();
- $objValidate->set('Prazo Mínimo de Ativação', 'prazoAtivacaoMinimo')->is_parameter()->is_integer();
- $objValidate->set('Lpu', 'lpu')->is_parameter();
- \Util\Util::getErrors($objValidate);
- $objValidate->set('viabilidade', $_REQUEST['viabilidade'])->is_required();
- $objValidate->set('Lpu', $_REQUEST['lpu'])->is_integer()->is_required();
- \Util\Util::getErrors($objValidate);
- $objViable = $entityComercial->getRepository('\Comercial\Entity\Viable')->find($_REQUEST['viabilidade']);
- if(!$objViable instanceof \Comercial\Entity\Viable){
- throw new \Exception('Id Viabilidade inválido');
- }
- if(!in_array($objViable->getViableStatus()->getId(),array(3,9))){
- throw new \Exception('Status inválido');
- }
- $tipoRede = $objViable->getNetworkType();
- if(empty($tipoRede)){
- if(empty($_REQUEST['tipoRede'])){
- throw new \Exception('Selecione um tipo de rede.');
- }
- $objViable->setNetworkType($_REQUEST['tipoRede']);
- $entityComercial->persist($objViable);
- }
- $idServico = $objViable->getChance()->getIdProduct()->getId();
- if( !in_array($idServico,\Util\Param::$arrayServicosSemMeioAcesso)) {
- $objValidate->set('interface', $_REQUEST['interface'])->is_required();
- $objValidate->set('Total FO', $_REQUEST['totalFO'])->is_required()->is_integer();
- }
- if(isset($_REQUEST['produto']) || isset($_REQUEST['quantidade']) || isset($_REQUEST['finalidade']) || isset($_REQUEST['valor'])){
- $produtos = $_REQUEST['produto'];
- $finalidades = $_REQUEST['finalidade'];
- $objValidate->set('Produtos', $produtos)->is_required()->is_arr();
- $quantidades = $_REQUEST['quantidade'];
- $objValidate->set('Quantidades de Produto', $quantidades)->is_required()->is_arr();
- $valores = $_REQUEST['valor'];
- $objValidate->set('Valores de Produto', $valores)->is_required()->is_arr();
- if (count($produtos) !== count($quantidades)) {
- throw new \Exception('Há produto ou quantidade não preenchida.');
- }
- } else {
- $produtos = $quantidades = array();
- }
- $objViableApproval = $entityComercial->getRepository('\Comercial\Entity\ViableApproval')->findOneBy(array(
- 'viable' => $objViable,
- 'prevViableStatus' => 3,
- ));
- if(!$objViableApproval instanceof \Comercial\Entity\ViableApproval){
- $objViableApproval = new \Comercial\Entity\ViableApproval();
- $objViableApproval->setDateRecord(new \DateTime());
- $objViableApproval->setDeadlineApproval(new \DateTime());
- // $entityComercial->persist($objViableApproval);
- $oldViableStatus = $objViable->getViableStatus();
- $objViableApproval->setPrevViableStatus($oldViableStatus);
- $objViableApproval->setViable($objViable);
- }
- $objViableApproval->setMinAtivationDays($_REQUEST['prazoAtivacao']?:NULL);
- $objViableApproval->setAuthor($_SESSION['id_user']);
- $objViableApproval->setDateApproval(new \DateTime());
- $objViableApproval->setObs($_REQUEST['obs']);
- $objViableApproval->setAttachment($this->getUploadedName($objViableApproval));
- $entityComercial->persist($objViableApproval);
- // Se for par (colocation) na ponta B grava uma aprovação igual a da Ponta A
- if(!is_null($objViable->getPair())) {
- $objViableApprovalPontaB = new \Comercial\Entity\ViableApproval();
- $objViableApprovalPontaB->setDateRecord(new \DateTime());
- $objViableApprovalPontaB->setDeadlineApproval(new \DateTime());
- $objViableApprovalPontaB->setPrevViableStatus($objViable->getViableStatus());
- $objViableApprovalPontaB->setViable($objViable->getPair());
- $objViableApprovalPontaB->setMinAtivationDays($objViableApproval->getMinAtivationDays());
- $objViableApprovalPontaB->setDateApproval($objViableApproval->getDateApproval());
- $objViableApprovalPontaB->setAuthor($objViableApproval->getAuthor());
- $objViableApprovalPontaB->setObs($objViableApproval->getObs());
- $entityComercial->persist($objViableApprovalPontaB);
- }
- $newViableStatus = $entityComercial->getRepository('\Comercial\Entity\ViableStatus')->find(6);
- $objViable->setViableStatus($newViableStatus);
- $objViable->setViable(true);
- $objViable->setShadowLpuId($_REQUEST['lpu']);
- // $arrayObjLpuPoints = $entityPresale->getRepository('\Presale\Entity\LpuPoint')->findByLpu($_REQUEST['lpu']);
- // if(!count($arrayObjLpuPoints)){
- // throw new \Exception('A Lpu selecionada não possui pontos cadastrados');
- // }
- // foreach ($arrayObjLpuPoints as $objLpuPoint){
- // $objViablePoint = new \Comercial\Entity\ViablePoint();
- // $objViablePoint->setPointId($objLpuPoint->getPointId());
- // $objViablePoint->setViable($objViable);
- // $entityComercial->persist($objViablePoint);
- // }
- //
- $this->validaGrupoProdutoViabilidade($objViable, $_POST);
- $entityComercial->flush();
- if($objViable->getChance()->getIdProduct()->getName() != "FIBRA APAGADA"){
- // Verifica se houve alteração da engenharia no meio de acesso
- if ($_REQUEST['meio'] != $objViable->getInterface() || $_REQUEST['interface'] != $objViable->getInterfaceReal()) {
- $newViableStatus = $entityComercial->getRepository('\Comercial\Entity\ViableStatus')->find(4);
- $objViableOld= $objViable;
- $objViableOld->setViableStatus($newViableStatus);
- $objViableOld->setActive(false);
- $objViable = new \Comercial\Entity\Viable();
- $objViable->setPreviousViable($objViableOld);
- $objViableOld->setNextViable($objViable);
- $objViable->setActive(true);
- $objViable->setAuthor($objViableOld->getAuthor());
- $objViable->setCep($objViableOld->getCep());
- $objViable->setChance($objViableOld->getChance());
- $objViable->setCity($objViableOld->getCity());
- $objViable->setComplement($objViableOld->getComplement());
- $objViable->setContCodigoid($objViableOld->getContCodigoid());
- $objViable->setDateRecord($objViableOld->getDateRecord());
- $objViable->setDistrict($objViableOld->getDistrict());
- $objViable->setHash($objViableOld->getHash());
- $objViable->setInterface($_REQUEST['meio']);
- $objViable->setInterfaceReal($_REQUEST['interface']);
- $objViable->setLat($objViableOld->getLat());
- $objViable->setLon($objViableOld->getLon());
- $objViable->setNumber($objViableOld->getNumber());
- $objViable->setPriceZone($objViableOld->getPriceZone());
- $objViable->setSpeed($objViableOld->getSpeed());
- $objViable->setSpeedType($objViableOld->getSpeedType());
- $objViable->setSteet($objViableOld->getSteet());
- $objViable->setUf($objViableOld->getUf());
- $objViable->setViable(false);
- foreach ($objViableOld->getFeatures() as $objViableFeatureOld){
- $objViableFeature = new \Comercial\Entity\ViableFeature();
- $objViableFeature->setFeatureattributeId($objViableFeatureOld->getFeatureattributeId());
- $objViableFeature->setViable($objViable);
- $entityComercial->persist($objViableFeature);
- $objViable->addViableFeature($objViableFeature);
- }
- $entityComercial->persist($objViable);
- }
- $objService = $entityPresale->getRepository('\Presale\Entity\Service')->findOneByServCodigoid(
- $objViable->getChance()->getIdProduct()->getServicoContrato()
- );
- if (!$objService instanceof \Presale\Entity\Service) {
- throw new \Exceptio('Tipo de serviço não encontrado.');
- }
- if ($objService->getId() == self::SERVICO_IP_ISP && $objViable->getDeliveryPlace() == 'caixa') {
- $objValidate->set('LAT', $_REQUEST['lat'])->is_required()->is_num();
- $objValidate->set('LON', $_REQUEST['lon'])->is_required()->is_num();
- \Util\Util::getErrors($objValidate);
- $objViable->setLat($_REQUEST['lat']);
- $objViable->setLon($_REQUEST['lon']);
- }
- }
- if ($_REQUEST['totalFO'] != $objViable->getTotalFO()) {
- $objViable->setTotalFO($_REQUEST['totalFO']);
- }
- if(isset($_REQUEST['coordenadas'])){
- $objViable->setCoords($_REQUEST['coordenadas']);
- if($objViable->getPair()){
- $objViable->getPair()->setCoords($_REQUEST['coordenadas']);
- }
- }
- if (isset($_REQUEST['distancia']) || isset($_REQUEST['siglaDistancia'])) {
- $distancia = $_REQUEST['distancia']?:0;
- $siglaDistancia = $_REQUEST['siglaDistancia']?:'';
- if($distancia || $siglaDistancia){
- $objValidate->set('Distancia', $distancia)->is_required()->is_num()->min_value(0);
- $objValidate->set('Distancia', $siglaDistancia)->is_required()->contains(array('km', 'm'));
- $objViable->setFiberDistance($distancia);
- $objViable->setFiberUnit($siglaDistancia);
- if($objViable->getPair()){
- $objViable->getPair()->setFiberDistance($distancia);
- $objViable->getPair()->setFiberUnit($siglaDistancia);
- }
- }
- }
- $entityComercial->persist($objViable);
- // Trata os casos em que a equipe de pré-vendas exclui algum produto que foi adicionado pela equipe de engenharia
- $arrayObjViableRequirements = $entityComercial->getRepository('\Comercial\Entity\ViableRequirement')->findBy(array('viable' => $objViable));
- $arrayIdViableRequirementsForDelete = array();
- foreach ($arrayObjViableRequirements as $objViableRequirementExistente) {
- $arrayIdViableRequirementsForDelete[] = $objViableRequirementExistente->getId();
- }
- // Produtos para viabilidade (grupos e produto avulso)
- $count = count($produtos);
- for ($i = 0; $i < $count; ++$i){
- if (!empty($_REQUEST['idViableRequirement'][$i])) {
- //Edição de um produto anteriormente adicionado pela equipe de Engenharia
- $objViableRequirement = $entityComercial->getRepository('\Comercial\Entity\ViableRequirement')->find($_REQUEST['idViableRequirement'][$i]);
- // Como este ViableRequirement foi mantido pela equipe de engenharia, remove da lista de exclusões
- if (($chave = array_search($_REQUEST['idViableRequirement'][$i], $arrayIdViableRequirementsForDelete)) !== false) {
- unset($arrayIdViableRequirementsForDelete[$chave]);
- }
- } else {
- // Novo
- $objViableRequirement = new \Comercial\Entity\ViableRequirement();
- }
- $lumaid = $produtos[$i];
- $objGrupo = NULL;
- $isGrupo = $lumaid[0]=='G';
- if(is_numeric($lumaid) || $isGrupo){
- if($isGrupo) {
- $grip = substr($lumaid, 1);
- $objGroupItem = $entityComercial->getRepository('\Comercial\Entity\GroupItem')->find($grip);
- if(!$objGroupItem instanceof \Comercial\Entity\GroupItem){
- throw new \Exception('Item de Grupo inválido.');
- }
- $lumaid = $objGroupItem->getProductLuma();
- $objGrupo = $objGroupItem->getGroup();
- }
- $objRequirement = $entityComercial->getRepository('\Comercial\Entity\Requirement')->findOneByLumaId($lumaid);
- if(!$objRequirement instanceof \Comercial\Entity\Requirement){
- $objProduct = $entityLuma->getRepository('\Luma\Entity\Produto')->find($lumaid);
- if(!$objProduct instanceof \Luma\Entity\Produto){
- throw new \Exception('Id produto inválido.');
- }
- $objRequirement = new \Comercial\Entity\Requirement();
- $objRequirement->setLumaId($lumaid);
- $objRequirement->setName(utf8_encode($objProduct->getProdNome()));
- $objRequirement->setUnit(utf8_encode($objProduct->getMediCodigoid()->getMediSigla()));
- $entityComercial->persist($objRequirement);
- }
- } elseif($lumaid[0]=='S') {
- $reqid = substr($lumaid, 1);
- $objRequirement = $entityComercial->getRepository('\Comercial\Entity\Requirement')->find($reqid);
- if(!$objRequirement instanceof \Comercial\Entity\Requirement){
- throw new \Exception('Id produto/serviço inválido.');
- }
- } else {
- throw new \Exception('Código inválido.');
- }
- $objValidate->set('Produto No '.($i+1), $objRequirement)->is_instance_of('\Comercial\Entity\Requirement');
- $quantidade = str_replace(array('.', ','), array('', '.'), $quantidades[$i]);
- $objValidate->set('Quantidade Produto No '.($i+1), $quantidade)->is_num()->min_value(0);
- $objViableRequirement->setQuantity($quantidade);
- $objViableRequirement->setRequirement($objRequirement);
- $objViableRequirement->setViable($objViable);
- $finalidade = empty($finalidades[$i]) ? 0 : $finalidades[$i];
- $objViableRequirement->setGoal($finalidade);
- $objViableRequirement->setGroup($objGrupo);
- $price = str_replace(array('.', ','), array('', '.'), $valores[$i]);
- $objViableRequirement->setPrice(number_format($price*$quantidade, 2, ',', ''));
- $entityComercial->persist($objViableRequirement);
- }
- // Deleta do banco os produtos que foram removidos da viabilidade pela equipe de pré-vendas
- foreach ($arrayIdViableRequirementsForDelete as $idViableRequirement) {
- $objViableRequirementDelete = $entityComercial->getRepository('\Comercial\Entity\ViableRequirement')->find($idViableRequirement);
- $entityComercial->remove($objViableRequirementDelete);
- }
- \Util\Util::getErrors($objValidate);
- $entityComercial->flush();
- $entityComercial->commit();
- // Tentará salvar apenas os serviços de terceiros adicionados pela equipe de pré-vendas. O que veio da Engenharia não sofrerá alterações
- $quantidades = array();
- $thirdService = array();
- for ($i = 0; $i <= count($_POST["servico"]); $i++) {
- if (isset($_POST["editavel"][$i]) && $_POST["editavel"][$i] == 'true') {
- $quantidades[] = $_POST["quantidadeServico"][$i];
- $thirdService[] = $_POST["servico"][$i];
- }
- }
- $custos = array(
- "viable" => $_POST["viabilidade"],
- "quantity" => $quantidades,
- "thirdService" => $thirdService
- );
- $cookie = '';
- $cookieName = \Util::getConfigSSO();
- if(is_array($_COOKIE)) {
- foreach($_COOKIE as $key => $value) {
- if($key == $cookieName['cookie_name']){
- $cookie = $key . '=' . $value . '; ';
- }
- }
- }
- $curl = curl_init();
- // USAR PARA DESENVOLVIMENTO SE USA DOCKER
- // curl_setopt($curl, CURLOPT_URL, "http://".$_SERVER['SERVER_ADDR']."/vogel/web/engenharia/terceiros/listarCustoServicos");
- curl_setopt($curl, CURLOPT_URL, "http://".$_SERVER['HTTP_HOST']."/vogel/web/engenharia/terceiros/adicionar/salvarCustos");
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($curl, CURLOPT_POST, true);
- curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($custos));
- curl_setopt($curl, CURLOPT_COOKIE, $cookie);
- $response = curl_exec($curl);
- curl_close($curl);
- $retorno = json_decode($response);
- if($this->notificar($objViableApproval, true)){
- $retorno = array("msg"=> "Vinculado com Sucesso!", "error" => false);
- } else {
- $retorno = array("msg"=> utf8_encode("Viabilidade vinculada com sucesso, mas notificação não enviada."), "error" => false);
- }
- $tags = $objViable->getChance()->getTags()->first();
- // se foi uma viabilidade gerada pelo Vendas Online, enviar email de atualização de status
- if (is_object($tags) && $tags->getName() == 'gerada_web') {
- $objProspect = $entityComercial->getRepository('\Comercial\Entity\Prospect')->findOneBy(array(
- 'id' => $objViable->getChance()->getIdProspect(),
- )
- );
- $objCadUsers = $entityStech->getRepository('\Sistech\Entity\CadUsers')->find($objProspect->getIdCliente());
- $arrayEmail = $objCadUsers->getCadUsersEmail()->toArray();
- $objEmail = array_map(function($obj){
- if($obj->getPrincipal()) return $obj->getEmail();
- else return '';
- },$arrayEmail);
- $email = (count($objEmail)?implode('/',array_filter($objEmail)):$objCustomers->getEmail());
- $objTipo = $entityLuma->getRepository("Luma\Entity\Tipo")->find(54);
- // Adiciona email de confirmação a tabela de envios
- $objEmail = new \Luma\Entity\Email();
- $objEmail->setEmailAnexo(NULL);
- $objEmail->setEmailAssunto('Vogel Telecom - Status de solicitação de viabilidade atualizado!');
- $objEmail->setEmailBcc(NULL);
- $objEmail->setEmailCc(NULL);
- $objEmail->setEmailCorpo('O status da solicitação de sua viabilidade foi atualizado. Verificar em: https://at.vogeltelecom.com/vendas/');
- $objEmail->setEmailDataenvio(new \DateTime());
- $objEmail->setEmailDatainc(new \DateTime());
- $objEmail->setEmailDe('sistemas@vogeltelecom.com');
- $objEmail->setEmailIdoperacao(0);
- $objEmail->setEmailPagina('');
- $objEmail->setEmailPara($email);
- $objEmail->setEmailPrioridade(5);
- $objEmail->setEmailTipooperacao('insert');
- $objEmail->setTipoCodigoid($objTipo);
- $entityLuma->persist($objEmail);
- $entityLuma->flush();
- }
- } catch (\Exception $e) {
- $entityComercial->rollback();
- $retorno = array("msg"=> nl2br(utf8_encode($e->getMessage())), "error" => true);
- }
- return JSON_encode($retorno);
- }
- public function salvarLpu() {
- try {
- // Permissão
- if($this->nivel & 2 != 2){
- throw new \Exception('Sem permissão para esta ação.', 403);
- }
- // Entidades
- $entityComercial = $this->getArrayParams('entityComercial');
- $entityPresale = $this->getArrayParams('entityPresale');
- $entityFinanceiro = $this->getArrayParams('entityFinanceiro');
- $entityStech = $this->getArrayParams('entityStech');
- $entityLuma = $this->getArrayParams('entityLuma');
- // Validador
- $objValidate = new \Util\Validate ();
- $objValidate->set('viabilidade', 'viabilidade')->is_parameter();
- $objValidate->set('Tempo', 'tempo')->is_parameter();
- $objValidate->set('Tempo', 'unidadeTempo')->is_parameter();
- $objValidate->set('SLA', 'porcentSla')->is_parameter();
- $objValidate->set('Observações', 'obs')->is_parameter()->is_required();
- $objValidate->set('Prazo Mínimo de Ativação', 'prazoAtivacao')->is_parameter()->is_integer();
- // Valida viabilidade e aprovação
- $objViable = $entityComercial->getRepository('\Comercial\Entity\Viable')->find($_REQUEST['viabilidade']);
- if(!$objViable instanceof \Comercial\Entity\Viable || !in_array($objViable->getViableStatus()->getId(),array(3,9))){
- throw new \Exception('Foram encontratos problemas na viabilidade');
- }
- $idServico = $objViable->getChance()->getIdProduct()->getId();
- if( !in_array($idServico,\Util\Param::$arrayServicosSemMeioAcesso)) {
- $objValidate->set('interface', $_REQUEST['interface'])->is_required();
- $objValidate->set('Total FO', $_REQUEST['totalFO'])->is_required()->is_integer();
- }
- if(isset($_REQUEST['produto']) || isset($_REQUEST['quantidade']) || isset($_REQUEST['finalidade']) || isset($_REQUEST['valor'])){
- $produtos = $_REQUEST['produto'];
- $finalidades = $_REQUEST['finalidade'];
- $objValidate->set('Produtos', $produtos)->is_required()->is_arr();
- $quantidades = $_REQUEST['quantidade'];
- $objValidate->set('Quantidades de Produto', $quantidades)->is_required()->is_arr();
- $valores = $_REQUEST['valor'];
- $objValidate->set('Valores de Produto', $valores)->is_required()->is_arr();
- if (count($produtos) !== count($quantidades)) {
- throw new \Exception('Há produto ou quantidade não preenchida.');
- }
- } else {
- $produtos = $quantidades = array();
- }
- $objViableApprovalTec = $entityComercial->getRepository('\Comercial\Entity\ViableApproval')->findOneBy(array(
- 'viable' => $objViable,
- 'prevViableStatus' => 2
- ));
- if($objViableApprovalTec instanceof \Comercial\Entity\ViableApproval && $objViableApprovalTec->getMinAtivationDays()){
- if(!isset($_REQUEST['prazoAtivacao']) || !$_REQUEST['prazoAtivacao']){
- throw new \Exception('O prazo de Ativação é obrigatório.');
- }
- elseif($_REQUEST['prazoAtivacao'] < $objViableApprovalTec->getMinAtivationDays()){
- throw new \Exception('O prazo de ativação não pode ser menor que '.$objViableApprovalTec->getMinAtivationDays().' dias, sugerido pela engenharia.');
- }
- }
- // Serviço
- $idServiceComercial = $objViable->getChance()->getIdProduct()->getServicoContrato();
- $objService = $entityPresale->getRepository('Presale\Entity\Service')->findOneBy(array('servCodigoid'=>$idServiceComercial));
- // Deadline de contrato
- $contractDeadline = $_REQUEST['tempo'];
- $objValidate->set('Tempo', $contractDeadline)->is_required()->is_integer()->min_value(0);
- $unidadeDeadline = $_REQUEST['unidadeTempo'];
- $objValidate->set('Unidade Tempo', $unidadeDeadline)->is_required()->is_integer()->contains(array(1, 2));
- \Util\Util::getErrors($objValidate);
- // Valida informações de velocidade de acordo com o plano
- if(!in_array($objService->getId(),\Util\Param::$arrayServicosSemVelocidadePresale)) {
- $objValidate->set('Velocidade', 'velocidade')->is_parameter();
- $objValidate->set('Tipo Velocidade', 'tipovelocidade')->is_parameter();
- $velocidades = $_REQUEST['velocidade'];
- $objValidate->set('Velocidades do Produto', $velocidades)->is_required()->is_arr();
- $tipovelocidades = $_REQUEST['tipovelocidade'];
- $objValidate->set('Tipos Velocidade do Produto', $tipovelocidades)->is_required()->is_arr();
- $objValidate->set('Valor Ativação', 'ativacao')->is_parameter();
- $objValidate->set('Valor Mensalidade', 'mensalidade')->is_parameter();
- $objValidate->set('Valor MÃnimo', 'valorMinimo')->is_parameter();
- \Util\Util::getErrors($objValidate);
- $objValidate->set('viabilidade', $_REQUEST['viabilidade'])->is_required();
- $objValidate->set('Valor MÃínimo', 'valorMinimo')->is_required();
- $ativacoes = $_REQUEST['ativacao'];
- $objValidate->set('Valores Ativação do Produto', $ativacoes)->is_required()->is_arr();
- $mensalidades = $_REQUEST['mensalidade'];
- $objValidate->set('Mensalidades do Produto', $mensalidades)->is_required()->is_arr();
- if (count($velocidades) !== count($tipovelocidades) ||
- count($velocidades) !== count($ativacoes) ||
- count($velocidades) !== count($mensalidades)
- ) {
- throw new \Exception('Há velocidade(s) não preenchida(s).');
- }
- }
- // Anexo BP (Business Planning)
- if(!isset($_FILES["anexoBP"]) || $_FILES["anexoBP"]["error"] != 0) {
- throw new \Exception("Selecione um arquivo .xls ou .xlsx");
- }
- $extensoesPermitidas = array("xls","xlsx");
- $extensao = end(explode(".",$_FILES["anexoBP"]["name"]));
- if(!in_array($extensao,$extensoesPermitidas)) {
- throw new \Exception("Extensão não permitida: ".$extensao);
- }
- $dir = "/mnt/dados/movi/viabilidade/".$_REQUEST['viabilidade'];
- if(!is_dir($dir)) {
- mkdir($dir, 0775);
- }
- if (!is_dir($dir . "/anexoBP")) {
- mkdir($dir . "/anexoBP", 0775);
- }
- if(!move_uploaded_file($_FILES["anexoBP"]["tmp_name"], $dir . "/anexoBP/".$_FILES["anexoBP"]["name"])){
- throw new \Exception("Erro ao enviar arquivo");
- }
- // CaracterÃsticas adicionadas para a LPU
- $caracteristicas = (isset($_REQUEST['caracteristicas'])?$_REQUEST['caracteristicas']:array());
- $ativacaoCaracteristicas = (isset($_REQUEST['ativacaoCaracteristicas'])?$_REQUEST['ativacaoCaracteristicas']:array());
- $mensalidadeCaracteristicas = (isset($_REQUEST['mensalidadeCaracteristicas'])?$_REQUEST['mensalidadeCaracteristicas']:array());
- $quantidadecaracteristicas = (isset($_REQUEST['quantidadeCaracteristicas'])?$_REQUEST['quantidadeCaracteristicas']:array());
- // Atributos obrigatorios foram preenchidos
- $arrayFeatureMandatory = array_filter(array_map(function($obj){
- if($obj->getMandatory()){
- return $obj;
- }
- return false;
- },$objService->getFeatures()->toArray()));
- foreach ($arrayFeatureMandatory as $objFeatureMandatory){
- $arrayFeatureAttribute = array_filter(array_map(function($obj){
- if($obj->getDefaultSelected()){
- return $obj;
- }
- return false;
- },$objFeatureMandatory->getAttributes()->toArray()));
- foreach ($arrayFeatureAttribute as $objFeatureAttribute){
- if(!in_array($objFeatureAttribute->getId(),$caracteristicas)){
- $nome = utf8_decode($objFeatureAttribute->getName());
- if (is_numeric($nome)) {
- $objAtrivalo = $entityFinanceiro->getRepository('Financeiro\Entity\Atributovalor')->find($nome);
- if($objAtrivalo instanceof \Financeiro\Entity\Atributovalor){
- $nome = $objAtrivalo->getAtrivaloValor();
- }
- }
- $objValidate->set(($nome?:utf8_decode($objFeatureMandatory->getName())), NULL)->is_required();
- }
- }
- }
- \Util\Util::getErrors($objValidate);
- // verifica se todos os atributos solicitados, na abertura da viabilidade, foram preenchidos
- if(count($objViable->getFeatures())){
- foreach ($objViable->getFeatures() as $objViableFeature){
- $objFeatureAttribute = $entityPresale->getRepository('Presale\Entity\FeatureAttribute')->find(
- $objViableFeature->getFeatureAttributeId()?:0
- );
- if(!$objFeatureAttribute instanceof \Presale\Entity\FeatureAttribute){
- throw new \Exception('Serviço adicional inválido.');
- }
- $objFeature = $objFeatureAttribute->getFeature();
- if(!in_array($objFeatureAttribute->getId(),$caracteristicas)){
- // Deve deixar obrigatório apenas a feature dos capilares para o produto FIBRA APAGADA
- if ($objService->getName() == "FIBRA APAGADA" && $objFeatureAttribute->getId() != self::FEATURE_ATRIBUTE_CAPILARES) {
- continue;
- }
- $nome = utf8_decode($objFeatureAttribute->getName());
- if (is_numeric($nome)) {
- $objAtrivalo = $entityFinanceiro->getRepository('Financeiro\Entity\Atributovalor')->find($nome);
- if($objAtrivalo instanceof \Financeiro\Entity\Atributovalor){
- $nome = $objAtrivalo->getAtrivaloValor();
- }
- }
- $objValidate->set(($nome?:utf8_decode($objFeature->getName())), NULL)->is_required();
- }
- }
- }
- // foreach (array_count_values($caracteristicas) as $key=>$val){
- // $objFeatureAttribute = $entityPresale->getRepository('Presale\Entity\FeatureAttribute')->find($key);
- // if(!$objFeatureAttribute instanceof \Presale\Entity\FeatureAttribute){
- // throw new \Exception('Serviço adicional inválido.');
- // }
- // $objFeature = $objFeatureAttribute->getFeature();
- // $nome = utf8_decode($objFeatureAttribute->getName());
- // if (is_numeric($nome)) {
- // $objAtrivalo = $entityFinanceiro->getRepository('Financeiro\Entity\Atributovalor')->find($nome);
- // if($objAtrivalo instanceof \Financeiro\Entity\Atributovalor){
- // $nome = $objAtrivalo->getAtrivaloValor();
- // }
- // }
- // $objValidate->set(($nome?:utf8_decode($objFeature->getName())), $val)->max_value(2);
- // }
- // \Util\Util::getErrors($objValidate);
- $objViableApproval = $entityComercial->getRepository('\Comercial\Entity\ViableApproval')->findOneBy(array(
- 'viable' => $objViable,
- 'prevViableStatus' => 3,
- ));
- $entityComercial->beginTransaction();
- if(!$objViableApproval instanceof \Comercial\Entity\ViableApproval){
- $objViableApproval = new \Comercial\Entity\ViableApproval();
- $objViableApproval->setDateRecord(new \DateTime());
- $objViableApproval->setDeadlineApproval(new \DateTime());
- $entityComercial->persist($objViableApproval);
- $oldViableStatus = $objViable->getViableStatus();
- $objViableApproval->setPrevViableStatus($oldViableStatus);
- $objViableApproval->setViable($objViable);
- }
- $objViableApproval->setAuthor($_SESSION['id_user']);
- $objViableApproval->setDateApproval(new \DateTime());
- $objViableApproval->setAttachment($this->getUploadedName($objViableApproval));
- $objViableApproval->setObs($_REQUEST['obs']);
- $objViableApproval->setMinAtivationDays($_REQUEST['prazoAtivacao']?:NULL);
- $tipoRede = $objViable->getNetworkType();
- if(empty($tipoRede)){
- if(empty($_REQUEST['tipoRede'])){
- throw new \Exception('Selecione um tipo de rede.');
- }
- $objViable->setNetworkType($_REQUEST['tipoRede']);
- $entityComercial->persist($objViable);
- }
- // Se for par (colocation) na ponta B grava uma aprovação igual a da Ponta A
- if(!is_null($objViable->getPair())) {
- $objViableApprovalPontaB = new \Comercial\Entity\ViableApproval();
- $objViableApprovalPontaB->setDateRecord(new \DateTime());
- $objViableApprovalPontaB->setDeadlineApproval(new \DateTime());
- $objViableApprovalPontaB->setPrevViableStatus($objViable->getViableStatus());
- $objViableApprovalPontaB->setViable($objViable->getPair());
- $objViableApprovalPontaB->setMinAtivationDays($objViableApproval->getMinAtivationDays());
- $objViableApprovalPontaB->setDateApproval($objViableApproval->getDateApproval());
- $objViableApprovalPontaB->setAuthor($objViableApproval->getAuthor());
- $objViableApprovalPontaB->setObs($objViableApproval->getObs());
- $entityComercial->persist($objViableApprovalPontaB);
- }
- if($objViable->getChance()->getIdProduct()->getName() != "FIBRA APAGADA"){
- // Verifica se houve alteração da engenharia no meio de acesso
- if ($_REQUEST['meio'] != $objViable->getInterface() || $_REQUEST['interface'] != $objViable->getInterfaceReal()) {
- $newViableStatus = $entityComercial->getRepository('\Comercial\Entity\ViableStatus')->find(4);
- $objViableOld= $objViable;
- $objViableOld->setViableStatus($newViableStatus);
- $objViableOld->setActive(false);
- $objViable = new \Comercial\Entity\Viable();
- $objViable->setPreviousViable($objViableOld);
- $objViableOld->setNextViable($objViable);
- $objViable->setActive(true);
- $objViable->setAuthor($objViableOld->getAuthor());
- $objViable->setCep($objViableOld->getCep());
- $objViable->setChance($objViableOld->getChance());
- $objViable->setCity($objViableOld->getCity());
- $objViable->setComplement($objViableOld->getComplement());
- $objViable->setContCodigoid($objViableOld->getContCodigoid());
- $objViable->setDateRecord($objViableOld->getDateRecord());
- $objViable->setDistrict($objViableOld->getDistrict());
- $objViable->setHash($objViableOld->getHash());
- $objViable->setInterface($_REQUEST['meio']);
- $objViable->setInterfaceReal($_REQUEST['interface']);
- $objViable->setLat($objViableOld->getLat());
- $objViable->setLon($objViableOld->getLon());
- $objViable->setNumber($objViableOld->getNumber());
- $objViable->setPriceZone($objViableOld->getPriceZone());
- $objViable->setSpeed($objViableOld->getSpeed());
- $objViable->setSpeedType($objViableOld->getSpeedType());
- $objViable->setSteet($objViableOld->getSteet());
- $objViable->setUf($objViableOld->getUf());
- $objViable->setViable(false);
- foreach ($objViableOld->getFeatures() as $objViableFeatureOld){
- $objViableFeature = new \Comercial\Entity\ViableFeature();
- $objViableFeature->setFeatureattributeId($objViableFeatureOld->getFeatureattributeId());
- $objViableFeature->setViable($objViable);
- $entityComercial->persist($objViableFeature);
- $objViable->addViableFeature($objViableFeature);
- }
- $entityComercial->persist($objViable);
- }
- $objService = $entityPresale->getRepository('\Presale\Entity\Service')->findOneByServCodigoid(
- $objViable->getChance()->getIdProduct()->getServicoContrato()
- );
- if (!$objService instanceof \Presale\Entity\Service) {
- throw new \Exceptio('Tipo de serviço não encontrado.');
- }
- if ($objService->getId() == self::SERVICO_IP_ISP && $objViable->getViable() === false && $objViable->getDeliveryPlace() == 'caixa') {
- $objValidate->set('LAT', $_REQUEST['lat'])->is_required()->is_num();
- $objValidate->set('LON', $_REQUEST['lon'])->is_required()->is_num();
- \Util\Util::getErrors($objValidate);
- $objViable->setLat($_REQUEST['lat']);
- $objViable->setLon($_REQUEST['lon']);
- }
- }
- if ($_REQUEST['totalFO'] != $objViable->getTotalFO()) {
- $objViable->setTotalFO((int) $_REQUEST['totalFO']);
- }
- if(isset($_REQUEST['coordenadas'])){
- $objViable->setCoords($_REQUEST['coordenadas']);
- if($objViable->getPair()){
- $objViable->getPair()->setCoords($_REQUEST['coordenadas']);
- }
- }
- if (isset($_REQUEST['distancia']) || isset($_REQUEST['siglaDistancia'])) {
- $distancia = $_REQUEST['distancia']?:0;
- $siglaDistancia = $_REQUEST['siglaDistancia']?:'';
- if($distancia || $siglaDistancia){
- $objValidate->set('Distancia', $distancia)->is_required()->is_num()->min_value(0);
- $objValidate->set('Distancia', $siglaDistancia)->is_required()->contains(array('km', 'm'));
- $objViable->setFiberDistance($distancia);
- $objViable->setFiberUnit($siglaDistancia);
- if($objViable->getPair()){
- $objViable->getPair()->setFiberDistance($distancia);
- $objViable->getPair()->setFiberUnit($siglaDistancia);
- }
- }
- }
- $newViableStatus = $entityComercial->getRepository('\Comercial\Entity\ViableStatus')->find(6);
- $objViable->setViableStatus($newViableStatus);
- if($objViable->getPair()){
- $objViable->getPair()->setViableStatus($newViableStatus);
- }
- $objViable->setViable(true);
- if($objViable->getPair()) {
- $objViable->getPair()->setViable(true);
- }
- if(isset($_REQUEST['prazoAtivacao'])){
- $objViable->setDaysDeadline($_REQUEST['prazoAtivacao']);
- if($objViable->getPair()) {
- $objViable->getPair()->setDaysDeadline($_REQUEST['prazoAtivacao']);
- }
- }
- $entityComercial->flush();
- $objLpu = new \Presale\Entity\Lpu();
- $objLpu->setActive(false);
- $objLpu->setAuthor($_SESSION['id_user']);
- $objLpu->setDateRecord(new \DateTime());
- $objLpu->setDateValid(new \DateTime());
- $objLpu->setDistance(0);
- $objLpu->setMinContractDeadline($contractDeadline);
- $objLpu->setMinContractUnit($unidadeDeadline);
- $objLpu->setType(self::LPU_TIPO_PADRAO);
- $objLpu->setName('AutoLpuApproval_'.str_pad($objViableApproval->getId(), 8, '0', STR_PAD_LEFT));
- $valorMinimo = floatval(str_replace(',', '.', str_replace('.', '',$_POST["valorMinimo"])));
- $objLpu->setMinimumPrice($valorMinimo);
- $sla = str_replace(array('.', ','), array('', '.'), $_REQUEST['porcentSla']);
- $objLpu->setSla(+$sla);
- $entityPresale->beginTransaction();
- $entityPresale->persist($objLpu);
- $entityPresale->flush();
- $objViable->setShadowLpuId($objLpu->getId());
- if($objViable->getPair()) {
- $objViable->getPair()->setShadowLpuId($objLpu->getId());
- }
- $entityComercial->persist($objViable);
- $objMoviService = $objViable->getChance()->getIdProduct();
- $objPresaleService = $entityPresale->getRepository('\Presale\Entity\Service')->findOneByServCodigoid($objMoviService->getServicoContrato());
- if(!$objPresaleService instanceof \Presale\Entity\Service){
- throw new \Exception('Serviço não cadastrado');
- }
- $objLpu->setService($objPresaleService);
- if(!in_array($objService->getId(),\Util\Param::$arrayServicosSemVelocidadePresale)) {
- $count = count($velocidades);
- for ($i =0; $i < $count; ++$i){
- $ativacao = str_replace(array('.', ','), array('', '.'), $ativacoes[$i]);
- $mensalidade = str_replace(array('.', ','), array('', '.'), $mensalidades[$i]);
- $velocidade = str_replace(array('.', ','), array('', '.'), $velocidades[$i]);
- $tipovelocidade = str_replace(array('.', ','), array('', '.'), $tipovelocidades[$i]);
- $objValidate->set('Ativação da velocidade '.($i+1), $ativacao)->is_integer();
- $objValidate->set('Mensalidade da velocidade '.($i+1), $mensalidade)->is_integer();
- if($objService->getServCodigoid()==17){ // Fibra apagada
- $velocidade = 0;
- $tipovelocidade = 2;
- }else{
- $objValidate->set('Velocidade '.($i+1), $velocidade)->is_integer()->min_value(0);
- $objValidate->set('Tipo de Velocidade '.($i+1), $tipovelocidade)->is_integer()->min_value(0);
- }
- $objLpuVelocidade = new \Presale\Entity\Speed();
- $objLpuVelocidade->setActivationFare($ativacao);
- $objLpuVelocidade->setLpu($objLpu);
- $objLpuVelocidade->setMonthlyCost($mensalidade);
- $objLpuVelocidade->setSpeed($velocidade);
- $objVelocidadeTipo = $entityPresale->getRepository('\Presale\Entity\SpeedType')->find($tipovelocidade);
- $objValidate->set('Tipo de Velocidade '.($i+1), $objVelocidadeTipo)->is_instance_of('\Presale\Entity\SpeedType');
- $objLpuVelocidade->setSpeedType($objVelocidadeTipo);
- $entityPresale->persist($objLpuVelocidade);
- }
- }
- foreach ($caracteristicas as $key=>$features){
- $objFeatureAttribute = $entityPresale->getRepository('Presale\Entity\FeatureAttribute')->find($features);
- if(!$objFeatureAttribute instanceof \Presale\Entity\FeatureAttribute){
- throw new \Exception('Atributo da LPU inválido.');
- }
- $ativacaoCaracteristicas[$key] = (float)str_replace(',','.',str_replace('.','',$ativacaoCaracteristicas[$key]));
- $mensalidadeCaracteristicas[$key] = (float)str_replace(',','.',str_replace('.','',$mensalidadeCaracteristicas[$key]));
- $objLpuFeature = new \Presale\Entity\LpuFeature();
- $objLpuFeature->setActivationFare($ativacaoCaracteristicas[$key]);
- $objLpuFeature->setMonthlyCost($mensalidadeCaracteristicas[$key]);
- $objLpuFeature->setDateRecord(new \DateTime());
- $objLpuFeature->setLpu($objLpu);
- $objLpuFeature->setDateValid($objLpu->getDateValid());
- $objLpuFeature->setFeatureAttribute($objFeatureAttribute);
- $objLpuFeature->setQuantity($quantidadecaracteristicas[$key]);
- $entityPresale->persist($objLpuFeature);
- }
- $this->validaGrupoProdutoViabilidade($objViable, $_POST);
- // Trata os casos em que a equipe de pré-vendas exclui algum produto que foi adicionado pela equipe de engenharia
- $arrayObjViableRequirements = $entityComercial->getRepository('\Comercial\Entity\ViableRequirement')->findBy(array('viable' => $objViable));
- $arrayIdViableRequirementsForDelete = array();
- foreach ($arrayObjViableRequirements as $objViableRequirementExistente) {
- $arrayIdViableRequirementsForDelete[] = $objViableRequirementExistente->getId();
- }
- // Produtos para viabilidade (grupos e produto avulso)
- $count = count($produtos);
- for ($i = 0; $i < $count; ++$i){
- if (!empty($_REQUEST['idViableRequirement'][$i])) {
- //Edição de um produto anteriormente adicionado pela equipe de Engenharia
- $objViableRequirement = $entityComercial->getRepository('\Comercial\Entity\ViableRequirement')->find($_REQUEST['idViableRequirement'][$i]);
- // Como este ViableRequirement foi mantido pela equipe de engenharia, remove da lista de exclusões
- if (($chave = array_search($_REQUEST['idViableRequirement'][$i], $arrayIdViableRequirementsForDelete)) !== false) {
- unset($arrayIdViableRequirementsForDelete[$chave]);
- }
- } else {
- // Novo
- $objViableRequirement = new \Comercial\Entity\ViableRequirement();
- }
- $lumaid = $produtos[$i];
- $objGrupo = NULL;
- $isGrupo = $lumaid[0]=='G';
- if(is_numeric($lumaid) || $isGrupo){
- if($isGrupo) {
- $grip = substr($lumaid, 1);
- $objGroupItem = $entityComercial->getRepository('\Comercial\Entity\GroupItem')->find($grip);
- if(!$objGroupItem instanceof \Comercial\Entity\GroupItem){
- throw new \Exception('Item de Grupo inválido.');
- }
- $lumaid = $objGroupItem->getProductLuma();
- $objGrupo = $objGroupItem->getGroup();
- }
- $objRequirement = $entityComercial->getRepository('\Comercial\Entity\Requirement')->findOneByLumaId($lumaid);
- if(!$objRequirement instanceof \Comercial\Entity\Requirement){
- $objProduct = $entityLuma->getRepository('\Luma\Entity\Produto')->find($lumaid);
- if(!$objProduct instanceof \Luma\Entity\Produto){
- throw new \Exception('Id produto inválido.');
- }
- $objRequirement = new \Comercial\Entity\Requirement();
- $objRequirement->setLumaId($lumaid);
- $objRequirement->setName(utf8_encode($objProduct->getProdNome()));
- $objRequirement->setUnit(utf8_encode($objProduct->getMediCodigoid()->getMediSigla()));
- $entityComercial->persist($objRequirement);
- }
- } elseif($lumaid[0]=='S') {
- $reqid = substr($lumaid, 1);
- $objRequirement = $entityComercial->getRepository('\Comercial\Entity\Requirement')->find($reqid);
- if(!$objRequirement instanceof \Comercial\Entity\Requirement){
- throw new \Exception('Id produto/serviço inválido.');
- }
- } else {
- throw new \Exception('Código inválido.');
- }
- $objValidate->set('Produto No '.($i+1), $objRequirement)->is_instance_of('\Comercial\Entity\Requirement');
- $quantidade = str_replace(array('.', ','), array('', '.'), $quantidades[$i]);
- $objValidate->set('Quantidade Produto No '.($i+1), $quantidade)->is_num()->min_value(0);
- $objViableRequirement->setQuantity($quantidade);
- $objViableRequirement->setRequirement($objRequirement);
- $objViableRequirement->setViable($objViable);
- $finalidade = empty($finalidades[$i]) ? 0 : $finalidades[$i];
- $objViableRequirement->setGoal($finalidade);
- $objViableRequirement->setGroup($objGrupo);
- $price = str_replace(array('.', ','), array('', '.'), $valores[$i]);
- $objViableRequirement->setPrice(number_format($price*$quantidade, 2, ',', ''));
- $entityComercial->persist($objViableRequirement);
- }
- // Deleta do banco os produtos que foram removidos da viabilidade pela equipe de pré-vendas
- foreach ($arrayIdViableRequirementsForDelete as $idViableRequirement) {
- $objViableRequirementDelete = $entityComercial->getRepository('\Comercial\Entity\ViableRequirement')->find($idViableRequirement);
- $entityComercial->remove($objViableRequirementDelete);
- }
- \Util\Util::getErrors($objValidate);
- $entityComercial->flush();
- $entityPresale->flush();
- $entityComercial->commit();
- $entityPresale->commit();
- // Tentará salvar apenas os serviços de terceiros adicionados pela equipe de pré-vendas. O que veio da Engenharia não sofrerá alterações
- $quantidades = array();
- $thirdService = array();
- for ($i = 0; $i <= count($_POST["servico"]); $i++) {
- if (isset($_POST["editavel"][$i]) && $_POST["editavel"][$i] == 'true') {
- $quantidades[] = $_POST["quantidadeServico"][$i];
- $thirdService[] = $_POST["servico"][$i];
- }
- }
- $custos = array(
- "viable" => $_POST["viabilidade"],
- "quantity" => $quantidades,
- "thirdService" => $thirdService
- );
- $cookie = '';
- $cookieName = \Util::getConfigSSO();
- if(is_array($_COOKIE)) {
- foreach($_COOKIE as $key => $value) {
- if($key == $cookieName['cookie_name']){
- $cookie = $key . '=' . $value . '; ';
- }
- }
- }
- $curl = curl_init();
- // USAR PARA DESENVOLVIMENTO SE USA DOCKER
- // curl_setopt($curl, CURLOPT_URL, "http://".$_SERVER['SERVER_ADDR']."/vogel/web/engenharia/terceiros/listarCustoServicos");
- curl_setopt($curl, CURLOPT_URL, "http://".$_SERVER['HTTP_HOST']."/vogel/web/engenharia/terceiros/adicionar/salvarCustos");
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($curl, CURLOPT_POST, true);
- curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($custos));
- curl_setopt($curl, CURLOPT_COOKIE, $cookie);
- $response = curl_exec($curl);
- curl_close($curl);
- $retorno = json_decode($response);
- if($this->notificar($objViableApproval, true)){
- $retorno = array("msg"=> "Sucesso!", "error" => false);
- } else {
- $retorno = array("msg"=> utf8_encode("Viabilidade alterada com sucesso, mas notificação não enviada."), "error" => false);
- }
- $tags = $objViable->getChance()->getTags()->first();
- // se foi uma viabilidade gerada pelo Vendas Online, enviar email de atualiza��o de status
- if (is_object($tags) && $tags->getName() == 'gerada_web') {
- $objProspect = $entityComercial->getRepository('\Comercial\Entity\Prospect')->findOneBy(array(
- 'id' => $objViable->getChance()->getIdProspect(),
- )
- );
- $objCadUsers = $entityStech->getRepository('\Sistech\Entity\CadUsers')->find($objProspect->getIdCliente());
- $arrayEmail = $objCadUsers->getCadUsersEmail()->toArray();
- $objEmail = array_map(function($obj){
- if($obj->getPrincipal()) return $obj->getEmail();
- else return '';
- },$arrayEmail);
- $email = (count($objEmail)?implode('/',array_filter($objEmail)):$objCustomers->getEmail());
- $objTipo = $entityLuma->getRepository("Luma\Entity\Tipo")->find(54);
- // Adiciona email de confirma��o a tabela de envios
- $objEmail = new \Luma\Entity\Email();
- $objEmail->setEmailAnexo(NULL);
- $objEmail->setEmailAssunto('Vogel Telecom - Status de solicitação de viabilidade atualizado!');
- $objEmail->setEmailBcc(NULL);
- $objEmail->setEmailCc(NULL);
- $objEmail->setEmailCorpo('O status da solicitação de sua viabilidade foi atualizado. Verificar em: https://at.vogeltelecom.com/vendas/');
- $objEmail->setEmailDataenvio(new \DateTime());
- $objEmail->setEmailDatainc(new \DateTime());
- $objEmail->setEmailDe('sistemas@vogeltelecom.com');
- $objEmail->setEmailIdoperacao(0);
- $objEmail->setEmailPagina('');
- $objEmail->setEmailPara($email);
- $objEmail->setEmailPrioridade(5);
- $objEmail->setEmailTipooperacao('insert');
- $objEmail->setTipoCodigoid($objTipo);
- $entityLuma->persist($objEmail);
- $entityLuma->flush();
- }
- } catch (\Exception $e) {
- //$entityPresale->rollback();
- //$entityComercial->rollback();
- $retorno = array("msg"=> utf8_encode($e->getMessage()), "error" => true);
- }
- return json_encode($retorno);
- }
- private function notificar(\Comercial\Entity\ViableApproval $objViableApproval) {
- try {
- $entityLuma = $this->getArrayParams('entityLuma');
- $entityStech = $this->getArrayParams('entityStech');
- $entityRh = $this->getArrayParams('entityRh');
- if(trim($objViableApproval->getObs())){
- $motivo = "O motivo alegado foi: \"{$objViableApproval->getObs()}\".";
- } else {
- $motivo = '';
- }
- $objViable = $objViableApproval->getViable();
- if($objViable->getViable()){
- $resposta = "<span style='font-family: Dax-Bold !important; color:#669933;'>Aprovada</span>";
- $tipo = 'Aprova��o';
- }else {
- $resposta = "<span style='font-family: Dax-Bold !important; color:#8C0D0B;'>Reprovada</span>";
- $tipo = 'Rejei��o';
- }
- $lon = number_format($objViable->getLon(), 8);
- $lat = number_format($objViable->getLat(), 8);
- $cidade = $entityStech->getRepository('\Sistech\Entity\AdmCidades')->find($objViable->getCity())->getNome();
- $street = utf8_decode($objViable->getSteet());
- $viabilidade = "({$lat}, {$lon}) {$street}, {$objViable->getNumber()}, {$cidade}, {$objViable->getUf()}";
- $assunto = "Resposta solicitação viabilidade {$viabilidade}";
- $objAutusuario = $entityStech->getRepository('\Sistech\Entity\AutUsuarios')->findOneBy(array(
- 'id' => $objViable->getAuthor(),
- 'ativo' => true,
- ));
- if(!$objAutusuario instanceof \Sistech\Entity\AutUsuarios){
- return false;
- }
- $objRhColaborador = $entityRh->getRepository("Rh\Entity\RhColaborador")->findOneBy(array('idAltUsuarioSistech' => $objAutusuario->getId()));
- if($objRhColaborador instanceof \Rh\Entity\RhColaborador){
- $arrayCadUsersEmail = $entityStech->getRepository("Sistech\Entity\CadUsersEmail")->findBy(array('cadUsers' => $objRhColaborador->getIdCadUserSistech()));
- $objCadUserEmail = array_map(function (\Sistech\Entity\CadUsersEmail $objEmail){
- if(preg_match("/vogeltelecom/", $objEmail->getEmail())){
- return $objEmail->getEmail();
- }
- }, $arrayCadUsersEmail);
- if($objCadUserEmail[0] instanceof \Sistech\Entity\CadUsersEmail){
- $destinatario = $objCadUserEmail[0]->getEmail();
- }else {
- $destinatario = $arrayCadUsersEmail[0]->getEmail();
- }
- }
- $criacao = $objViable->getDateRecord()->format('d/m/Y H:i');
- $objChance = $objViable->getChance();
- $objProspect = $objChance->getIdProspect();
- $cliente = utf8_decode($objProspect->getClientName());
- $objCadUsers = $entityStech->getRepository('\Sistech\Entity\CadUsers')->find($objProspect->getIdCliente());
- if(!$objCadUsers instanceof \Sistech\Entity\CadUsers){
- return false;
- }
- $cnpj = \Util\Util::formataCpfCnpj($objCadUsers->getCnpj()?:$objCadUsers->getCpf());
- $chanceId = $objChance->getId();
- $viabilidadeId = $objViable->getId();
- $html = "A sua solicitação de viabilidade <a href='http://sistech.vogeltelecom.com/movi/proposta/listar/{$chanceId}#{$viabilidadeId}'>\"{$viabilidade}\"</a> para o prospect \"$cliente\" ({$cnpj})".
- ", solicitada em {$criacao}, foi {$resposta}. $motivo";
- \Util\Util::enviarEmail($entityLuma, $assunto, $html, 'sistemas@stech.net.br', $destinatario, '/prevenda/viabilidadeComercial/detalhar/', $objViableApproval->getId(), $tipo, 1);
- return true;
- } catch (Exception $e) {
- return false;
- }
- }
- public function downloadAnexo(){
- try {
- $diretorioAnexo = "/mnt/dados/movi/viabilidade/anexoprevenda/".$_REQUEST["id"];
- $handler = scandir($diretorioAnexo);
- foreach ($handler as $arquivo) {
- if(in_array($arquivo,array(".",".."))){
- continue;
- }
- header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // some day in the past
- header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
- header("Content-type: application/x-download");
- header("Content-Disposition: attachment; filename={$arquivo}");
- return readfile($diretorioAnexo."/".$arquivo);
- break;
- }
- } catch ( \Exception $ex ) {
- throw new \Exception ( $ex->getMessage (), $ex->getCode () );
- }
- }
- private function validaGrupoProdutoViabilidade(\Comercial\Entity\Viable $objViable, $postRequest)
- {
- $entityFinanceiro = $this->getArrayParams('entityFinanceiro');
- $objService = $objViable->getChance()->getIdProduct();
- $objServicoFinanceiro = $entityFinanceiro->getRepository('Financeiro\Entity\Servico')
- ->find($objService->getServicoContrato());
- $config = PrevendasConfig::getConfig();
- $interfacesValidar = array(1, 2);
- if (in_array($objServicoFinanceiro->getServApelido(), $config['servicos']) && (in_array($objViable->getInterfaceReal(), $interfacesValidar))) {
- if ( isset($postRequest['id_grupo_sva']) && ((int)$postRequest['id_grupo_sva'])) {
- // Valida e salva o grupo de produto
- $curlPrevendas = new CurlPrevendas();
- $result = $curlPrevendas->getGrupoProduto($_POST['id_grupo_sva']);
- if ($result['status'] != 200) {
- throw new \Exception('não foi possível encontrar o Grupo de Produtos selecionado no sistema de prevendas.');
- }
- $objViable->setIdGroupSva($result['data']['id']);
- }
- }
- }
- private function getGrupoSva($servico, $viable)
- {
- $speed = $viable->getSpeed();
- $entityPresale = $this->getArrayParams ( 'entityPresale' );
- $speedType = $entityPresale->getRepository('\Presale\Entity\SpeedType')->find($viable->getSpeedType());
- $params = array(
- "interface" => utf8_encode(SVAParamParser::parseInterface($viable->getInterfaceReal())),
- "meio_acesso" => utf8_encode(SVAParamParser::TRANSMISSAO_OPTICO),
- "estado" => $viable->getUf(),
- "velocidade" => SVAParamParser::parseVelocidade($speed, $speedType->getMultiplier()),
- "servico" => $servico->getServApelido()
- );
- $curlPrevendas = new CurlPrevendas();
- $data = $curlPrevendas->getGrupoSva($params);
- if ($data['status'] == 200) {
- return $data['data'];
- } else {
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement