/**
  * Consulta detalhes da empresa
  *
  * @return json
  */
 public function dadosCgmAction()
 {
     $bSubstituto = $this->_getParam('substituto', FALSE);
     $sCgcCpf = $this->_getParam('term', NULL);
     $sCgcCpf = DBSeller_Helper_Number_Format::getNumbers($sCgcCpf);
     $aData = Contribuinte_Model_Empresa::getByCgcCpf($sCgcCpf);
     if (!empty($aData)) {
         if (!empty($aData->eCidade)) {
             $aData = $aData->eCidade;
         } else {
             if (!empty($aData->eNota)) {
                 $aData = $aData->eNota;
             }
         }
         $aRetornoJson = array_map(function ($v) {
             return $v->toObject();
         }, $aData);
     }
     if (strlen($sCgcCpf) < 14) {
         $aRetornoJson[0]->isCpf = true;
     } else {
         $aRetornoJson[0]->isCpf = false;
     }
     // Retorna apenas o primeiro resultado
     if (count($aRetornoJson) > 1) {
         $aRetornoJson = $aRetornoJson[0];
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
예제 #2
0
 /**
  * Verifica se a numeração do documento consta na numeração liberada nos AIDOFs
  *
  * @param  integer $iInscricaoMunicipal
  * @param  integer $iNumeroNota
  * @param  integer $iTipoNota
  * @throws Exception
  * @return boolean
  */
 public function verificarNumeracaoValidaParaEmissaoDocumento($iInscricaoMunicipal, $iNumeroNota, $iTipoNota)
 {
     if (!$iInscricaoMunicipal) {
         throw new Exception('Informe a inscrição municipal.');
     }
     if (!$iNumeroNota) {
         throw new Exception('Informe o número do documento.');
     }
     if (!$iTipoNota) {
         throw new Exception('Informe o tipo de documento.');
     }
     $oWebService = new Administrativo_Lib_Model_WebService();
     $aFiltro = array('inscricao' => $iInscricaoMunicipal, 'tipo_nota' => $iTipoNota);
     $aCampos = array('nota_inicial', 'nota_final');
     $aWebService = $oWebService->consultar('getAidofNumeracaoValidaParaEmissaoNotas', array($aFiltro, $aCampos));
     if (!is_array($aWebService)) {
         throw new Exception('Ocorreu um erro ao verificar numeração do documento no WebService.');
     }
     $iNumeroNota = DBSeller_Helper_Number_Format::getNumbers($iNumeroNota);
     $iNumeracaoInicial = isset($aWebService[0]->nota_inicial) ? $aWebService[0]->nota_inicial : 0;
     $iNumeracaoFinal = isset($aWebService[0]->nota_final) ? $aWebService[0]->nota_final : 0;
     //    return ($iNumeroNota >= $iNumeracaoInicial && $iNumeroNota <= $iNumeracaoFinal);    // Ajuste Rafael em 10/06/2015
     return true;
     // Ajuste Rafael em 10/06/2015
 }
 /**
  * Busca o contribuinte pelo CNPJ/CPF
  */
 public function getContribuinteCnpjAction()
 {
     $aRetorno = NULL;
     $iCnpj = DBSeller_Helper_Number_Format::getNumbers($this->_getParam('term'));
     $aDados = Contribuinte_Model_Contribuinte::getInscricaoMunicipalByCpjCnpj($iCnpj);
     $oContribuinte = Contribuinte_Model_Contribuinte::preencherInstanciaContribuinte($aDados[0]);
     $aRetorno = array('razao_social' => $oContribuinte->getRazaoSocial(), 'login' => $oContribuinte->getCgcCpf(), 'nome' => $oContribuinte->getRazaoSocial(), 'email' => $oContribuinte->getEmail(), 'telefone' => DBSeller_Helper_Number_Format::maskPhoneNumber($oContribuinte->getTelefone()));
     if (is_array($aDados) && count($aDados) > 1) {
         foreach ($aDados as $oDadosContribuinte) {
             $iInscricao = Contribuinte_Model_Contribuinte::preencherInstanciaContribuinte($oDadosContribuinte)->getInscricaoMunicipal();
             $aRetorno['inscricoes'][$iInscricao] = $iInscricao;
         }
     }
     echo $this->getHelper('json')->sendJson($aRetorno);
 }
 /**
  * Geração do relatório de NFSe's
  */
 public function nfseGerarAction()
 {
     parent::noLayout();
     $aValidacaoFormulario = self::validarFormulario();
     if (is_array($aValidacaoFormulario)) {
         exit($this->getHelper('json')->sendJson($aValidacaoFormulario));
     }
     try {
         // Parâmetros do formulário
         $sCompetenciaInicial = $this->getRequest()->getParam('data_competencia_inicial');
         $sCompetenciaFinal = $this->getRequest()->getParam('data_competencia_final');
         $sPrestadorCnpj = $this->getRequest()->getParam('prestador_cnpj');
         $lGuiaEmitida = $this->getRequest()->getParam('guia_emitida') == 1 ? TRUE : FALSE;
         $sGuiaEmitida = $lGuiaEmitida ? 'Sim' : 'Não';
         // Prestador
         $oPrestador = Contribuinte_Model_Contribuinte::getByCpfCnpj($sPrestadorCnpj);
         // Separa os meses e anos
         $iCompetenciaInicialMes = intval(substr($sCompetenciaInicial, 0, 2));
         $iCompetenciaFinalMes = intval(substr($sCompetenciaFinal, 0, 2));
         $iCompetenciaInicialAno = intval(substr($sCompetenciaInicial, -4));
         $iCompetenciaFinalAno = intval(substr($sCompetenciaFinal, -4));
         $sNomeArquivo = 'relatorio_nfse_' . date('YmdHis') . '.pdf';
         $oPdf = new Fiscal_Model_Relatoriopdfmodelo1('P');
         $oPdf->Open(APPLICATION_PATH . "/../public/tmp/{$sNomeArquivo}");
         $oPdf->setLinhaFiltro('Relatório de NFSe');
         $oPdf->setLinhaFiltro('');
         $oPdf->setLinhaFiltro('FILTROS:');
         $oPdf->setLinhaFiltro("  CNPJ Prestador {$sPrestadorCnpj}");
         $oPdf->setLinhaFiltro("  Competência de {$sCompetenciaInicial} à {$sCompetenciaFinal}");
         $oPdf->setLinhaFiltro("  Guia Emitida? {$sGuiaEmitida}");
         $oPdf->carregaDados();
         $oEntityManager = Zend_Registry::get('em');
         $oConexao = $oEntityManager->getConnection();
         try {
             $lExistemRegistros = FALSE;
             // Prepara a consulta na base de dados
             $sSql = self::getSqlRelatorio2($lGuiaEmitida);
             $oStatement = $oConexao->prepare($sSql);
             // Limpa as máscaras do CNPJ
             $sPrestadorCnpj = DBSeller_Helper_Number_Format::getNumbers($sPrestadorCnpj);
             // Varre os anos
             for ($iAno = 0; $iAno <= $iCompetenciaFinalAno - $iCompetenciaInicialAno; $iAno++) {
                 $iAnoLoop = intval($iCompetenciaInicialAno) + $iAno;
                 // Varre os meses
                 for ($iMesLoop = 1; $iMesLoop <= 12; $iMesLoop++) {
                     // Ignora os meses anteriores e seguintes aos meses inicial e final
                     if ($iAnoLoop == $iCompetenciaInicialAno && $iMesLoop < $iCompetenciaInicialMes || $iAnoLoop == $iCompetenciaFinalAno && $iMesLoop > $iCompetenciaFinalMes) {
                         continue;
                     }
                     // Executa a consulta na base de dados com os parâmetros: cnpj, mês e ano da competência
                     $oStatement->execute(array($iMesLoop, $iAnoLoop, $sPrestadorCnpj, $iMesLoop, $iAnoLoop, $sPrestadorCnpj));
                     // Ignora loop caso não possua registros
                     if ($oStatement->rowCount() < 1) {
                         continue;
                     }
                     $lExistemRegistros = TRUE;
                     // Zera os dados
                     $aRelatorio = NULL;
                     $aDadosRelatorio = NULL;
                     // Monta os dados do relatório com o índice para ordenação
                     do {
                         // Busca os dados na base de dados
                         $aRelatorio = $oStatement->fetch();
                         // Ignora a busca caso não existam resultados
                         if (empty($aRelatorio)) {
                             continue;
                         }
                         // Dados do Prestador
                         $sPrestadorCnpjCpf = $aRelatorio['prestador_cnpjcpf'];
                         $sPrestadorCnpjCpf = DBSeller_Helper_Number_Format::maskCPF_CNPJ($sPrestadorCnpjCpf);
                         $sPrestadorInscricaoMunicipal = $aRelatorio['prestador_inscricao_municipal'];
                         $sPrestadorRazaoSocial = $aRelatorio['prestador_razao_social'];
                         $sPrestadorRazaoSocial = DBSeller_Helper_String_Format::wordsCap($sPrestadorRazaoSocial);
                         $sPrestadorMunicipioUf = $aRelatorio['prestador_endereco_municipio'];
                         $sPrestadorMunicipioUf = DBSeller_Helper_String_Format::wordsCap($sPrestadorMunicipioUf);
                         $sPrestadorMunicipioUf = "{$sPrestadorMunicipioUf}/{$aRelatorio['prestador_endereco_uf']}";
                         $sPrestadorTelefone = $aRelatorio['prestador_contato_telefone'];
                         $sPrestadorTelefone = DBSeller_Helper_Number_Format::maskPhoneNumber($sPrestadorTelefone);
                         $sPrestadorDocumentoNumero = $aRelatorio['prestador_documento_numero'];
                         $oPrestadorDocumentoData = new DateTime($aRelatorio['prestador_documento_data']);
                         $sPrestadorDocumentoTipo = $aRelatorio['prestador_documento_tipo'];
                         $sPrestadorDocumentoValor = $aRelatorio['prestador_valor_servico'];
                         $sPrestadorDocumentoValor = DBSeller_Helper_Number_Format::toMoney($sPrestadorDocumentoValor, 2);
                         $sPrestadorDocumentoAliquota = $aRelatorio['prestador_valor_aliquota'];
                         $sPrestadorDocumentoAliquota = DBSeller_Helper_Number_Format::toMoney($sPrestadorDocumentoAliquota, 2);
                         $sPrestadorDocumentoIss = $aRelatorio['prestador_valor_iss'];
                         $sPrestadorDocumentoIss = DBSeller_Helper_Number_Format::toMoney($sPrestadorDocumentoIss, 2);
                         $sPrestadorDocumentoIssRetido = $aRelatorio['prestador_iss_retido'] ? 'Não' : 'Sim';
                         // Dados Tomador
                         $sTomadorCnpjCpf = $aRelatorio['tomador_cnpjcpf'];
                         $sTomadorCnpjCpf = DBSeller_Helper_Number_Format::maskCPF_CNPJ($sTomadorCnpjCpf);
                         $sTomadorInscricaoMunicipal = $aRelatorio['tomador_inscricao_municipal'];
                         $sTomadorRazaoSocial = $aRelatorio['tomador_razao_social'];
                         $sTomadorRazaoSocial = DBSeller_Helper_String_Format::wordsCap($sTomadorRazaoSocial);
                         $sTomadorMunicipioUf = $aRelatorio['tomador_endereco_municipio'];
                         $sTomadorMunicipioUf = DBSeller_Helper_String_Format::wordsCap($sTomadorMunicipioUf);
                         $sTomadorMunicipioUf = "{$sTomadorMunicipioUf}/{$aRelatorio['tomador_endereco_uf']}";
                         $sTomadorTelefone = $aRelatorio['tomador_contato_telefone'];
                         $sTomadorTelefone = DBSeller_Helper_Number_Format::maskPhoneNumber($sTomadorTelefone);
                         $sTomadorDocumentoNumero = $aRelatorio['tomador_documento_numero'];
                         $oTomadorDocumentoData = new DateTime($aRelatorio['tomador_documento_data']);
                         $sTomadorDocumentoTipo = $aRelatorio['tomador_documento_tipo'];
                         $sTomadorDocumentoValor = $aRelatorio['tomador_valor_servico'];
                         $sTomadorDocumentoValor = DBSeller_Helper_Number_Format::toMoney($sTomadorDocumentoValor, 2);
                         $sTomadorDocumentoAliquota = $aRelatorio['tomador_valor_aliquota'];
                         $sTomadorDocumentoAliquota = DBSeller_Helper_Number_Format::toMoney($sTomadorDocumentoAliquota, 2);
                         $sTomadorDocumentoIss = $aRelatorio['tomador_valor_iss'];
                         $sTomadorDocumentoIss = DBSeller_Helper_Number_Format::toMoney($sTomadorDocumentoIss, 2);
                         $sTomadorDocumentoIssRetido = $aRelatorio['tomador_iss_retido'] ? 'Sim' : 'Não';
                         // Descrição do tipo de documento
                         $oPrestadorDocumentoTipo = Contribuinte_Model_Nota::getTipoNota($sPrestadorDocumentoTipo);
                         $sPrestadorDocumentoTipo = DBSeller_Helper_String_Format::wordsCap($oPrestadorDocumentoTipo->descricao);
                         $oTomadorDocumentoTipo = Contribuinte_Model_Nota::getTipoNota($sTomadorDocumentoTipo);
                         $sTomadorDocumentoTipo = DBSeller_Helper_String_Format::wordsCap($oTomadorDocumentoTipo->descricao);
                         // Indice para evitar a repetição do cabeçalho por prestador+tomador
                         $sIndiceRelatorio = "{$aRelatorio['prestador_cnpjcpf']}_{$aRelatorio['tomador_cnpjcpf']}";
                         // Dados do relatório
                         $aDadosRelatorio[$sIndiceRelatorio]['prestador_cnpjcpf'] = $sPrestadorCnpjCpf;
                         $aDadosRelatorio[$sIndiceRelatorio]['prestador_inscricao_municipal'] = $sPrestadorInscricaoMunicipal;
                         $aDadosRelatorio[$sIndiceRelatorio]['prestador_razao_social'] = utf8_decode($sPrestadorRazaoSocial);
                         $aDadosRelatorio[$sIndiceRelatorio]['prestador_municipio_uf'] = utf8_decode($sPrestadorMunicipioUf);
                         $aDadosRelatorio[$sIndiceRelatorio]['prestador_telefone'] = $sPrestadorTelefone;
                         $aDadosRelatorio[$sIndiceRelatorio]['tomador_cnpjcpf'] = $sTomadorCnpjCpf;
                         $aDadosRelatorio[$sIndiceRelatorio]['tomador_inscricao_municipal'] = $sTomadorInscricaoMunicipal;
                         $aDadosRelatorio[$sIndiceRelatorio]['tomador_razao_social'] = utf8_decode($sTomadorRazaoSocial);
                         $aDadosRelatorio[$sIndiceRelatorio]['tomador_municipio_uf'] = utf8_decode($sTomadorMunicipioUf);
                         $aDadosRelatorio[$sIndiceRelatorio]['tomador_telefone'] = $sTomadorTelefone;
                         $aDadosRelatorio[$sIndiceRelatorio]['documentos'][] = array('prestador_doc_numero' => utf8_decode($sPrestadorDocumentoNumero), 'prestador_doc_data' => $oPrestadorDocumentoData, 'prestador_doc_tipo' => utf8_decode($sPrestadorDocumentoTipo), 'prestador_doc_valor_servico' => utf8_decode($sPrestadorDocumentoValor), 'prestador_doc_valor_aliquota' => utf8_decode($sPrestadorDocumentoAliquota), 'prestador_doc_valor_iss' => utf8_decode($sPrestadorDocumentoIss), 'prestador_doc_iss_retido' => utf8_decode($sPrestadorDocumentoIssRetido), 'tomador_doc_numero' => utf8_decode($sTomadorDocumentoNumero), 'tomador_doc_data' => $oTomadorDocumentoData, 'tomador_doc_tipo' => utf8_decode($sTomadorDocumentoTipo), 'tomador_doc_valor_servico' => utf8_decode($sTomadorDocumentoValor), 'tomador_doc_valor_aliquota' => utf8_decode($sTomadorDocumentoAliquota), 'tomador_doc_valor_iss' => utf8_decode($sTomadorDocumentoIss), 'tomador_doc_iss_retido' => utf8_decode($sTomadorDocumentoIssRetido));
                     } while ($aRelatorio);
                     // Ordena a lista de documentos por número
                     $aDocumentosOrdenados = DBSeller_Helper_Array_Abstract::ordenarPorIndice($aDadosRelatorio[$sIndiceRelatorio]['documentos'], 'prestador_doc_numero');
                     $aDadosRelatorio[$sIndiceRelatorio]['documentos'] = $aDocumentosOrdenados;
                     // Ordena os dados do relatorio
                     if (isset($aDadosRelatorio) && is_array($aDadosRelatorio)) {
                         $aDadosRelatorio = DBSeller_Helper_Array_Abstract::ordenarPorIndice($aDadosRelatorio, 'prestador_cnpjcpf');
                     } else {
                         throw new Exception($this->translate->_('Erro ao gerar o relatório.'));
                     }
                     // Calcula a metade da página
                     $iMeiaPaginaX = $oPdf->w / 2 - $oPdf->lMargin;
                     // Percorre os dados do relatório
                     foreach ($aDadosRelatorio as $aRelatorioOrdenado) {
                         // Formata o texto da competência
                         $sCompetencia = str_pad($iMesLoop, 2, 0, STR_PAD_LEFT) . "/{$iAnoLoop}";
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell(20, 5, utf8_decode('Competência: '));
                         $oPdf->SetFont('Arial', '', 8);
                         $oPdf->Cell(22, 5, $sCompetencia);
                         // Dados da guia do prestador
                         if ($lGuiaEmitida) {
                             $oGuiaPrestador = Contribuinte_Model_Guia::getByCompetenciaAndContribuinte($iAnoLoop, $iMesLoop, $oPrestador, Contribuinte_Model_Guia::$PRESTADOR);
                             if (is_array($oGuiaPrestador) && count($oGuiaPrestador) > 0 && $oGuiaPrestador[0] instanceof Contribuinte_Model_Guia) {
                                 $oGuiaPrestador = reset($oGuiaPrestador);
                                 $oPdf->SetFont('Arial', 'B', 8);
                                 $oPdf->Cell(13, 5, utf8_decode('Numpre: '));
                                 $oPdf->SetFont('Arial', '', 8);
                                 $oPdf->Cell(20, 5, $oGuiaPrestador->getNumpre());
                             }
                         }
                         $oPdf->Ln();
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell($iMeiaPaginaX, 5, 'PRESTADOR', 1, 0, 'L', 1);
                         $oPdf->Cell($iMeiaPaginaX, 5, 'TOMADOR', 1, 0, 'L', 1);
                         $oPdf->Ln();
                         $oPdf->Rect($oPdf->GetX(), $oPdf->GetY(), $iMeiaPaginaX, 25);
                         $oPdf->Rect($iMeiaPaginaX + $oPdf->lMargin, $oPdf->GetY(), $iMeiaPaginaX, 25);
                         $oPdf->Ln(2);
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell(28, 4, utf8_decode('Inscrição Municipal:'));
                         $oPdf->SetFont('Arial', '', 8);
                         $oPdf->Cell($iMeiaPaginaX - 28, 4, $aRelatorioOrdenado['prestador_inscricao_municipal']);
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell(28, 4, utf8_decode('Inscrição Municipal:'));
                         $oPdf->SetFont('Arial', '', 8);
                         $oPdf->Cell($iMeiaPaginaX - 28, 4, $aRelatorioOrdenado['tomador_inscricao_municipal']);
                         $oPdf->Ln();
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell(16, 4, 'CPNJ/CPF:');
                         $oPdf->SetFont('Arial', '', 8);
                         $oPdf->Cell($iMeiaPaginaX - 16, 4, $aRelatorioOrdenado['prestador_cnpjcpf']);
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell(16, 4, 'CPNJ/CPF:');
                         $oPdf->SetFont('Arial', '', 8);
                         $oPdf->Cell($iMeiaPaginaX - 16, 4, $aRelatorioOrdenado['tomador_cnpjcpf']);
                         $oPdf->Ln();
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell(20, 4, utf8_decode('Razão Social:'));
                         $oPdf->SetFont('Arial', '', 8);
                         $oPdf->Cell($iMeiaPaginaX - 20, 4, $aRelatorioOrdenado['prestador_razao_social']);
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell(20, 4, utf8_decode('Razão Social:'));
                         $oPdf->SetFont('Arial', '', 8);
                         $oPdf->Cell($iMeiaPaginaX - 20, 4, $aRelatorioOrdenado['tomador_razao_social']);
                         $oPdf->Ln();
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell(20, 4, utf8_decode('Município/UF:'));
                         $oPdf->SetFont('Arial', '', 8);
                         $oPdf->Cell($iMeiaPaginaX - 20, 4, $aRelatorioOrdenado['prestador_municipio_uf']);
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell(20, 4, utf8_decode('Município/UF:'));
                         $oPdf->SetFont('Arial', '', 8);
                         $oPdf->Cell($iMeiaPaginaX - 20, 4, $aRelatorioOrdenado['tomador_municipio_uf']);
                         $oPdf->Ln(5);
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell(14, 4, utf8_decode('Telefone:'));
                         $oPdf->SetFont('Arial', '', 8);
                         $oPdf->Cell($iMeiaPaginaX - 14, 4, $aRelatorioOrdenado['prestador_telefone']);
                         $oPdf->SetFont('Arial', 'B', 8);
                         $oPdf->Cell(14, 4, utf8_decode('Telefone:'));
                         $oPdf->SetFont('Arial', '', 8);
                         $oPdf->Cell($iMeiaPaginaX - 14, 4, $aRelatorioOrdenado['tomador_telefone']);
                         $oPdf->Ln(5);
                         if (count($aRelatorioOrdenado['documentos']) > 0) {
                             $aLarguraColuna = array(25, 14, 16, 51, 26, 18, 27, 13);
                             $oPdf->SetFont('Arial', 'B', 8);
                             $oPdf->Cell($aLarguraColuna[0], 5, utf8_decode('Nº do Documento'), 1, 0, 'C', 1);
                             $oPdf->Cell($aLarguraColuna[1], 5, utf8_decode('Origem'), 1, 0, 'L', 1);
                             $oPdf->Cell($aLarguraColuna[2], 5, utf8_decode('Data'), 1, 0, 'L', 1);
                             $oPdf->Cell($aLarguraColuna[3], 5, utf8_decode('Tipo de Documento'), 1, 0, 'L', 1);
                             $oPdf->Cell($aLarguraColuna[4], 5, utf8_decode('Valor Serviço (R$)'), 1, 0, 'R', 1);
                             $oPdf->Cell($aLarguraColuna[5], 5, utf8_decode('Alíquota (%)'), 1, 0, 'R', 1);
                             $oPdf->Cell($aLarguraColuna[6], 5, utf8_decode('Valor Imposto (R$)'), 1, 0, 'R', 1);
                             $oPdf->Cell($aLarguraColuna[7], 5, utf8_decode('Retido'), 1, 0, 'L', 1);
                             $oPdf->Ln(5);
                             // Flag para exibir a cor de fundo nas células
                             $iFundoLinha = 0;
                             // Percorre a lista de documentos
                             foreach ($aRelatorioOrdenado['documentos'] as $aDocumento) {
                                 $lFundoLinha = $iFundoLinha++ % 2 == 0 ? 0 : 1;
                                 // Cor de fundo das linhas (zebra)
                                 $oPdf->SetFont('Arial', '', 8);
                                 $oPdf->MultiCell($aLarguraColuna[0], 10, $aDocumento['prestador_doc_numero'], 1, 'C', $lFundoLinha);
                                 $oPdf->SetY($oPdf->getY() - 10);
                                 $oPdf->SetX($oPdf->getX() + $aLarguraColuna[0]);
                                 $oPdf->Cell($aLarguraColuna[1], 5, 'Prestador', 1, 0, 'L', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[2], 5, $aDocumento['prestador_doc_data']->format('d/m/Y'), 1, 0, 'L', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[3], 5, $aDocumento['prestador_doc_tipo'], 1, 0, 'L', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[4], 5, $aDocumento['prestador_doc_valor_servico'], 1, 0, 'R', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[5], 5, $aDocumento['prestador_doc_valor_aliquota'], 1, 0, 'R', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[6], 5, $aDocumento['prestador_doc_valor_iss'], 1, 0, 'R', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[7], 5, $aDocumento['prestador_doc_iss_retido'], 1, 0, 'L', $lFundoLinha);
                                 $oPdf->Ln(5);
                                 $oPdf->Cell($aLarguraColuna[0], 5, '');
                                 $oPdf->Cell($aLarguraColuna[1], 5, 'Tomador', 1, 0, 'L', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[2], 5, $aDocumento['tomador_doc_data']->format('d/m/Y'), 1, 0, 'L', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[3], 5, $aDocumento['tomador_doc_tipo'], 1, 0, 'L', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[4], 5, $aDocumento['tomador_doc_valor_servico'], 1, 0, 'R', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[5], 5, $aDocumento['tomador_doc_valor_aliquota'], 1, 0, 'R', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[6], 5, $aDocumento['tomador_doc_valor_iss'], 1, 0, 'R', $lFundoLinha);
                                 $oPdf->Cell($aLarguraColuna[7], 5, $aDocumento['tomador_doc_iss_retido'], 1, 0, 'L', $lFundoLinha);
                                 $oPdf->Ln(5);
                             }
                             $oPdf->Ln();
                         }
                     }
                 }
             }
         } catch (Exception $oErro) {
             throw new Exception($oErro->getMessage());
         }
         // Verifica se existem registro para gerar o relatório
         if ($lExistemRegistros) {
             $oPdf->Output();
         } else {
             throw new Exception($this->translate->_('Nenhum registro encontrado.'));
         }
         $aRetornoJson['status'] = TRUE;
         $aRetornoJson['url'] = $this->view->baseUrl("/tmp/{$sNomeArquivo}");
         $aRetornoJson['success'] = $this->translate->_('Relatório gerado com sucesso.');
     } catch (Exception $oErro) {
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['error'][] = $oErro->getMessage();
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 /**
  * Trata os dados do formulário para serem salvos no banco de dados
  *
  * @param array $aDados
  * @return $this|bool
  */
 public function persist(array $aDados = NULL)
 {
     if (!is_array($aDados)) {
         return self::persistUsuario();
     }
     if (empty($aDados['senha'])) {
         unset($aDados['senha']);
     }
     $aValidaDados = $this->isValid($aDados);
     if ($aValidaDados['valid']) {
         // seta atributos para serem salvos no banco, habilitado sempre inicia como true
         if (isset($aDados['nome'])) {
             $this->entity->setNome($aDados['nome']);
         }
         if (isset($aDados['fone'])) {
             $this->entity->setTelefone(DBSeller_Helper_Number_Format::getNumbers($aDados['fone']));
         }
         if (isset($aDados['login'])) {
             $this->entity->setLogin($aDados['login']);
         }
         if (isset($aDados['senha'])) {
             $this->entity->setSenha($aDados['senha']);
         }
         if (isset($aDados['email'])) {
             $this->entity->setEmail($aDados['email']);
         }
         if (isset($aDados['habilitado'])) {
             $this->entity->setHabilitado(true);
         }
         if (isset($aDados['administrativo'])) {
             $this->entity->setAdministrativo($aDados['administrativo']);
         }
         if (isset($aDados['tipo'])) {
             $this->entity->setTipo($aDados['tipo']);
         }
         if (isset($aDados['cgm'])) {
             $this->entity->setCgm(DBSeller_Helper_Number_Format::getNumbers($aDados['cgm']));
         }
         if (isset($aDados['cnpj'])) {
             $this->entity->setCnpj(DBSeller_Helper_Number_Format::getNumbers($aDados['cnpj']));
         }
         if (isset($aDados['perfil'])) {
             if (is_numeric($aDados['perfil'])) {
                 $aDados['perfil'] = Administrativo_Model_Perfil::getById($aDados['perfil'])->getEntity();
             }
             $this->entity->setPerfil($aDados['perfil']);
         }
         if ($this->getId() === NULL) {
             // Verifica se o tipo de usuário é Contador e e se for vincula as empresas enviadas pelo e-cidade
             if ($this->getTipo() == Administrativo_Model_TipoUsuario::$CONTADOR) {
                 $aEmpresas = Administrativo_Model_Empresa::getByCnpj($this->getCnpj());
                 // Vincula ações de contribuintes
                 $this->vinculaEmpresas($aEmpresas);
             }
             // Verifica se o usuário é do tipo Contribuinte para vincular a empresa
             if ($this->getTipo() == Administrativo_Model_TipoUsuario::$CONTRIBUINTE) {
                 $oEmpresa = Contribuinte_Model_Contribuinte::getByCpfCnpj($this->getCnpj());
                 $oUsuarioContribuinte = new Administrativo_Model_UsuarioContribuinte();
                 $oUsuarioContribuinte->setIm($oEmpresa->getInscricaoMunicipal());
                 $oUsuarioContribuinte->setCnpjCpf($oEmpresa->getCgcCpf());
                 $oUsuarioContribuinte->setUsuario($this->entity);
                 $oUsuarioContribuinte->setHabilitado(true);
                 // Verifica a inscrição municipal informada
                 if (!empty($aDados['insc_municipal'])) {
                     $oUsuarioContribuinte->setIm($aDados['insc_municipal']);
                 }
                 $this->addUsuarioContribuinte($oUsuarioContribuinte);
                 // Salva os dados complementares do usuário contribuinte
                 if ($oEmpresa instanceof Contribuinte_Model_Contribuinte) {
                     self::salvarDadosComplementaresUsuarioContribuinte($oEmpresa->getInscricaoMunicipal());
                 }
             }
             // Vincula ações administrativas
             $aAcoes = $this->getPerfil()->getAcoes();
             $aAcoesAdministrativas = array();
             foreach ($aAcoes as $oAcao) {
                 $aAcoesAdministrativas[] = $oAcao;
             }
             $this->adicionaAcoes($aAcoesAdministrativas);
         }
         $this->em->persist($this->entity);
         $this->em->flush();
         return $this;
     } else {
         return $aValidaDados['errors'];
     }
 }
 /**
  * Método que busca do e-cidade os dados da empresa agruapada por Inscrição Municipal
  * @param  string $sCnpj
  * @return array  $aContribuinte
  * @throws Exception
  */
 public function getInscricaoMunicipalByCpjCnpj($sCnpj)
 {
     try {
         if ($sCnpj != NULL) {
             // Limpa máscaras
             $iCnpj = DBSeller_Helper_Number_Format::getNumbers($sCnpj);
             // Consulta WebService
             $aParametros = array(array('cnpj' => $iCnpj), self::$aCampos['getDadosEmpresa']);
             $aContribuinte = WebService_Model_Ecidade::consultar('getDadosEmpresa', $aParametros);
             return $aContribuinte;
         }
     } catch (Exception $oError) {
         DBSeller_Plugin_Notificacao::addErro('W009', "Erro ao consultar as Inscrições Municipais do Contribuinte: {$oError->getMessage()}");
         throw new Exception("Erro ao consultar as Inscrições Municipais do Contribuinte: {$oError->getMessage()}");
     }
 }
 /**
  * Verifica se ja existe uma nota com o numero [Json]
  *
  * @return boolean
  */
 public function emissaoManualEntradaVerificarDocumentoAction()
 {
     parent::noLayout();
     // Parametros request
     $sCnpjPrestador = $this->getRequest()->getParam('s_cpf_cnpj', NULL);
     $iTipoDocumento = $this->getRequest()->getParam('tipo_documento', NULL);
     $sNumeroDocumento = $this->getRequest()->getParam('s_nota', NULL);
     $iIdNota = $this->getRequest()->getParam('id', NULL);
     // Valida numeracao repetida
     if ($iTipoDocumento && $sNumeroDocumento && $sCnpjPrestador) {
         // Parametros para consultar se o documento já existe na base de dados
         $sCnpjPrestador = DBSeller_Helper_Number_Format::getNumbers($sCnpjPrestador);
         // Limpa mascara
         $oParametro = new stdClass();
         $oParametro->oContribuinte = $this->oContribuinte;
         $oParametro->sCnpjPrestador = $sCnpjPrestador;
         $oParametro->iTipoDocumento = $iTipoDocumento;
         $oParametro->sNumeroDocumento = $sNumeroDocumento;
         $oParametro->iCodigoDocumento = $iIdNota;
         $lNotaEmitida = Contribuinte_Model_DmsNota::checarDocumentoEmitidoServicosTomados($oParametro);
         if ($lNotaEmitida) {
             $aRetornoJson['status'] = FALSE;
             $aRetornoJson['error'][] = $this->translate->_("Já existe um documento com o número {$sNumeroDocumento}.");
             echo $this->getHelper('json')->sendJson($aRetornoJson);
             return FALSE;
         }
     }
     return TRUE;
 }