/** * Retorna os totalizadores da importação para geraçao das guias * * @param integer $iCodigoImportacaoDesif * @param bool $lDetalhes * @param null $fAliquota * @return array */ public static function getTotalReceitasGuia($iCodigoImportacaoDesif, $lDetalhes = FALSE, $fAliquota = NULL) { $aReceitaAgrupadas = array(); $aParametros = array('importacao_desif' => $iCodigoImportacaoDesif, 'guia' => NULL); $aReceitaAgrupadas = NULL; $aContasImportacaoGuia = Contribuinte_Model_DesifContaGuia::getByAttributes($aParametros); /** * Percorre as contas selecionadas que irá gerar as guias */ foreach ($aContasImportacaoGuia as $oDesifContaGuia) { $aParametros = array('importacao_desif' => $iCodigoImportacaoDesif, 'importacao_desif_conta' => $oDesifContaGuia->getImportacaoDesifConta()->getId()); /** * Filtro por aliquota */ if (!empty($fAliquota)) { $aParametros['aliq_issqn'] = "{$fAliquota}"; } $aDesifReceita = Contribuinte_Model_ImportacaoDesifReceita::getByAttributes($aParametros); $fValorTotal = 0; $fValorIss = 0; /** * Percore as receitas de cada importação */ foreach ($aDesifReceita as $oDesifReceita) { $fValor = $oDesifReceita->getValrCredMens(); $fAliqIssqn = DBSeller_Helper_Number_Format::toFloat($oDesifReceita->getAliqIssqn()); /** * Soma os totais por aliquota com detalhamento */ if ($lDetalhes) { if (isset($aAliqIssqnAgrupadas[$fAliqIssqn])) { $aAliqIssqnAgrupadas[$fAliqIssqn]['total_receita'] = $aAliqIssqnAgrupadas[$fAliqIssqn]['total_receita'] + $fValor; } else { $aAliqIssqnAgrupadas[$fAliqIssqn]['total_receita'] = $fValor; } $fValorTotal = $aAliqIssqnAgrupadas[$fAliqIssqn]['total_receita']; $aAliqIssqnAgrupadas[$fAliqIssqn]['total_iss'] = $fValorTotal * ($fAliqIssqn / 100); $aReceitaAgrupadas['id_importacao_desif'] = $iCodigoImportacaoDesif; $aReceitaAgrupadas['id_importacao_desif_conta'][] = $oDesifReceita->getImportacaoDesifConta()->getId(); $aReceitaAgrupadas['data_importacao'] = $oDesifReceita->getImportacaoDesif()->getDataImportacao(); $aReceitaAgrupadas['aliquotas_issqn'] = $aAliqIssqnAgrupadas; } else { $fValorTotal = $fValorTotal + $fValor; $fValorIss = $fValorIss + $fValor * ($fAliqIssqn / 100); } } /** * Retorna os valores totais das receitas e iss totalizadas */ if (!$lDetalhes) { $aReceitaAgrupadas['total_receita'] = $aReceitaAgrupadas['total_receita'] + $fValorTotal; $aReceitaAgrupadas['total_iss'] = $aReceitaAgrupadas['total_iss'] + $fValorIss; } } return $aReceitaAgrupadas; }
/** * Metodo para renderizar o formulario de cadastro/alteracao dos parametros do contribuinte. * * Retorna para a view a instancia do formulario Contribuinte_Form_ParametrosContribuinte */ public function contribuinteAction() { $oForm = new Contribuinte_Form_ParametrosContribuinte(); $oParametroContribuinte = $this->buscaParametroContribuinte($this->view->contribuinte->getIdUsuarioContribuinte()); $aDados = $this->getRequest()->getPost(); if ($this->getRequest()->isPost() && $oForm->isValid($aDados)) { try { $oDoctrine = Zend_Registry::get('em'); $oDoctrine->getConnection()->beginTransaction(); $oParametroContribuinte->setAvisofimEmissaoNota($aDados["avisofim_emissao_nota"]); $oParametroContribuinte->setCofins(DBSeller_Helper_Number_Format::toDataBase($aDados["cofins"])); $oParametroContribuinte->setCsll(DBSeller_Helper_Number_Format::toDataBase($aDados["csll"])); $oParametroContribuinte->setIdContribuinte($this->view->contribuinte->getIdUsuarioContribuinte()); $oParametroContribuinte->setInss(DBSeller_Helper_Number_Format::toDataBase($aDados["inss"])); $oParametroContribuinte->setIr(DBSeller_Helper_Number_Format::toDataBase($aDados["ir"])); $oParametroContribuinte->setMaxDeducao(DBSeller_Helper_Number_Format::toDataBase($aDados["max_deducao"])); $oParametroContribuinte->setPis(DBSeller_Helper_Number_Format::toDataBase($aDados["pis"])); $oParametroContribuinte->setValorIssFixo(DBSeller_Helper_Number_Format::toDataBase($aDados["valor_iss_fixo"])); $oParametroContribuinte->salvar(); $oDoctrine->getConnection()->commit(); $this->view->messages[] = array('success' => 'Parâmetros modificados com sucesso.'); $oArquivoUpload = new Zend_File_Transfer(); $oArquivoUpload->receive(); $iInscricaoMunicipal = $this->view->contribuinte->getInscricaoMunicipal(); Administrativo_Model_Empresa::setLogoByIm($iInscricaoMunicipal, $oArquivoUpload->getFileInfo()); } catch (Exception $oErro) { $oDoctrine->getConnection()->rollback(); $this->view->messages[] = array('error' => $oErro->getMessage()); } } $oDados->im = $this->view->contribuinte->getInscricaoMunicipal(); $oDados->nome_contribuinte = $this->view->contribuinte->getNome(); $oDados->avisofim_emissao_nota = $oParametroContribuinte->getAvisofimEmissaoNota(); $oDados->cofins = $oParametroContribuinte->getCofins(); $oDados->csll = $oParametroContribuinte->getCsll(); $oDados->inss = $oParametroContribuinte->getInss(); $oDados->ir = $oParametroContribuinte->getIr(); $oDados->max_deducao = $oParametroContribuinte->getMaxDeducao(); $oDados->pis = $oParametroContribuinte->getPis(); $oDados->valor_iss_fixo = $oParametroContribuinte->getValorIssFixo(); $oForm->preenche($oDados); $this->view->sLogoPrestador = Administrativo_Model_Empresa::getLogoByIm($oDados->im); $this->view->form = $oForm; }
/** * Geração do relatório de insconstências nas declarações */ public function inconsistenciasDeclaracoesGerarAction() { parent::noLayout(); $aValidacaoFormulario = self::validarFormulario(); if (is_array($aValidacaoFormulario)) { exit($this->getHelper('json')->sendJson($aValidacaoFormulario)); } try { // Parâmetros do formulário $sCompetencia = $this->getRequest()->getParam('data_competencia_inicial'); // Separa os meses e anos $iCompetenciaMes = intval(substr($sCompetencia, 0, 2)); $iCompetenciaAno = intval(substr($sCompetencia, -4)); $sNomeArquivo = 'relatorio_inconsistencias_declaracoes_' . date('YmdHis') . '.pdf'; $oPdf = new Fiscal_Model_Relatoriopdfmodelo1('P'); $oPdf->SetFillColor(220, 220, 220); $oPdf->Open(APPLICATION_PATH . "/../public/tmp/{$sNomeArquivo}"); $oPdf->setLinhaFiltro('Relatório de Inconsistências nas Declarações'); $oPdf->setLinhaFiltro(''); $oPdf->setLinhaFiltro("FILTRO: Competência {$sCompetencia}"); $oPdf->carregaDados(); $oEntityManager = Zend_Registry::get('em'); $oConexao = $oEntityManager->getConnection(); try { $sSql = self::getSqlRelatorio(); $oStatement = $oConexao->prepare($sSql); $oStatement->execute(array($iCompetenciaMes, $iCompetenciaAno)); if ($oStatement->rowCount() < 1) { throw new Exception($this->translate->_('Nenhum registro encontrado.')); } $aRelatorio = NULL; // Monta os dados do relatório com o índice para ordenação do { $aRelatorio = $oStatement->fetch(); if (empty($aRelatorio)) { continue; } // Dados do Prestador $sPrestadorCnpjCpf = $aRelatorio['prestador_cnpjcpf']; $sPrestadorCnpjCpf = DBSeller_Helper_Number_Format::maskCPF_CNPJ($sPrestadorCnpjCpf); $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']; $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'] ? 'Sim' : 'Não'; // Dados Tomador $sTomadorCnpjCpf = $aRelatorio['tomador_cnpjcpf']; $sTomadorCnpjCpf = DBSeller_Helper_Number_Format::maskCPF_CNPJ($sTomadorCnpjCpf); $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']; $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'; // Pega a descrição do documento tomado, pois NFSE não tem tipo definido $sPrestadorDocumentoTipo = $sPrestadorDocumentoTipo ?: $sTomadorDocumentoTipo; // 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'] = utf8_decode($sPrestadorCnpjCpf); $aDadosRelatorio[$sIndiceRelatorio]['prestador_razao_social'] = utf8_decode($sPrestadorRazaoSocial); $aDadosRelatorio[$sIndiceRelatorio]['prestador_municipio_uf'] = utf8_decode($sPrestadorMunicipioUf); $aDadosRelatorio[$sIndiceRelatorio]['prestador_telefone'] = utf8_decode($sPrestadorTelefone); $aDadosRelatorio[$sIndiceRelatorio]['tomador_cnpjcpf'] = utf8_decode($sTomadorCnpjCpf); $aDadosRelatorio[$sIndiceRelatorio]['tomador_razao_social'] = utf8_decode($sTomadorRazaoSocial); $aDadosRelatorio[$sIndiceRelatorio]['tomador_municipio_uf'] = utf8_decode($sTomadorMunicipioUf); $aDadosRelatorio[$sIndiceRelatorio]['tomador_telefone'] = utf8_decode($sTomadorTelefone); $aDadosRelatorio[$sIndiceRelatorio]['documentos'][] = array('prestador_doc_numero' => utf8_decode($sPrestadorDocumentoNumero), '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_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 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.')); } $iMeiaPaginaX = $oPdf->w / 2 - $oPdf->lMargin; // Percorre os dados do relatório foreach ($aDadosRelatorio as $aRelatorioOrdenado) { $oPdf->SetFont('Arial', 'B', 8); $oPdf->Cell($iMeiaPaginaX, 5, 'PRESTADOR'); $oPdf->Cell($iMeiaPaginaX, 5, 'TOMADOR'); $oPdf->Ln(); $oPdf->Rect($oPdf->GetX(), $oPdf->GetY(), $iMeiaPaginaX, 15); $oPdf->Rect($iMeiaPaginaX + $oPdf->lMargin, $oPdf->GetY(), $iMeiaPaginaX, 15); $oPdf->Ln(2); $oPdf->SetFont('Arial', 'B', 8); $oPdf->Cell(20, 4, 'CPNJ/CPF:'); $oPdf->SetFont('Arial', '', 8); $oPdf->Cell($iMeiaPaginaX - 20, 4, $aRelatorioOrdenado['prestador_cnpjcpf']); $oPdf->SetFont('Arial', 'B', 8); $oPdf->Cell(20, 4, 'CPNJ/CPF:'); $oPdf->SetFont('Arial', '', 8); $oPdf->Cell($iMeiaPaginaX - 20, 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); if (count($aRelatorioOrdenado['documentos']) > 0) { $aLarguraColuna = array(28, 15, 64, 26, 19, 27, 11); $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('Tipo de Documento'), 1, 0, 'L', 1); $oPdf->Cell($aLarguraColuna[3], 5, utf8_decode('Valor Serviço (R$)'), 1, 0, 'R', 1); $oPdf->Cell($aLarguraColuna[4], 5, utf8_decode('Alíquota (%)'), 1, 0, 'R', 1); $oPdf->Cell($aLarguraColuna[5], 5, utf8_decode('Valor Imposto (R$)'), 1, 0, 'R', 1); $oPdf->Cell($aLarguraColuna[6], 5, utf8_decode('Subst.'), 1, 0, 'L', 1); $oPdf->Ln(5); $iFundo = 0; // Alterador do fundo da linha (Zebra) // Percorre os documentos do relatório foreach ($aRelatorioOrdenado['documentos'] as $aDocumento) { $lFundoLinha = $iFundo++ % 2 == 0 ? 0 : 1; $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_tipo'], 1, 0, 'L', $lFundoLinha); $oPdf->Cell($aLarguraColuna[3], 5, $aDocumento['prestador_doc_valor_servico'], 1, 0, 'R', $lFundoLinha); $oPdf->Cell($aLarguraColuna[4], 5, $aDocumento['prestador_doc_valor_aliquota'], 1, 0, 'R', $lFundoLinha); $oPdf->Cell($aLarguraColuna[5], 5, $aDocumento['prestador_doc_valor_iss'], 1, 0, 'R', $lFundoLinha); $oPdf->Cell($aLarguraColuna[6], 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_tipo'], 1, 0, 'L', $lFundoLinha); $oPdf->Cell($aLarguraColuna[3], 5, $aDocumento['tomador_doc_valor_servico'], 1, 0, 'R', $lFundoLinha); $oPdf->Cell($aLarguraColuna[4], 5, $aDocumento['tomador_doc_valor_aliquota'], 1, 0, 'R', $lFundoLinha); $oPdf->Cell($aLarguraColuna[5], 5, $aDocumento['tomador_doc_valor_iss'], 1, 0, 'R', $lFundoLinha); $oPdf->Cell($aLarguraColuna[6], 5, $aDocumento['tomador_doc_iss_retido'], 1, 0, 'L', $lFundoLinha); $oPdf->Ln(5); } $oPdf->Ln(); } } } catch (Exception $oErro) { throw new Exception($oErro->getMessage()); } $oPdf->Output(); $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); }
/** * Cabeçalho do relatórios * * @throws Exception */ public function Header() { $sTarjaSemValorFiscal = APPLICATION_PATH . '/../public/administrativo/img/nfse/tarja_sem_valor.png'; $sAmbiente = getenv('APPLICATION_ENV'); if (file_exists($sTarjaSemValorFiscal) && $sAmbiente != 'production') { $this->Image($sTarjaSemValorFiscal, 70, 20); } $this->SetCreator(utf8_decode('Sistema: EcidadeOnline2 - DBSeller Sistemas Integrados')); $sLogotipoPrefeitura = APPLICATION_PATH . '/../public/global/img/brasao.jpg'; if (file_exists($sLogotipoPrefeitura)) { $this->Image($sLogotipoPrefeitura, $this->rMargin, $this->tMargin, 20); } $sNomePrefeitura = utf8_decode($this->oDadosPrefeitura->getNome()); $sRua = utf8_decode(trim($this->oDadosPrefeitura->getEndereco())); $sNumero = utf8_decode(trim($this->oDadosPrefeitura->getNumero())); $sMunicipio = utf8_decode(trim($this->oDadosPrefeitura->getMunicipio())); $sEstado = utf8_decode(trim($this->oDadosPrefeitura->getUf())); $sTelefone = utf8_decode(trim($this->oDadosPrefeitura->getTelefone())); $sTelefone = DBSeller_Helper_Number_Format::maskPhoneNumber($sTelefone); $sCnpj = utf8_decode(trim($this->oDadosPrefeitura->getCnpj())); $sCnpj = DBSeller_Helper_Number_Format::maskCPF_CNPJ($sCnpj); $sUrl = utf8_decode(trim($this->oDadosPrefeitura->getUrl())); $sEmail = utf8_decode(trim($this->oDadosPrefeitura->getEmail())); if (strlen($sNomePrefeitura) > 42) { $iTamanhoFonte = 8; } else { $iTamanhoFonte = 9; } $this->SetFont('Arial', 'BI', $iTamanhoFonte); $this->Text($this->rMargin + 22, $this->tMargin + 5, $sNomePrefeitura); $this->SetFont('Arial', 'I', 8); $sComplento = ''; if ($this->oDadosPrefeitura->getComplemento()) { $sComplento = ', ' . substr(trim($this->oDadosPrefeitura->getComplemento()), 0, 20); } $this->Text($this->rMargin + 22, $this->tMargin + 8, "{$sRua}, {$sNumero} {$sComplento}"); $this->Text($this->rMargin + 22, $this->tMargin + 11, "{$sMunicipio} - {$sEstado}"); $this->Text($this->rMargin + 22, $this->tMargin + 14, "{$sTelefone} - CNPJ : {$sCnpj}"); $this->Text($this->rMargin + 22, $this->tMargin + 17, $sEmail); $this->Text($this->rMargin + 22, $this->tMargin + 20, $sUrl); $this->SetFont('Arial', '', 7); $iComprimento = $this->w - $this->rMargin - $this->lMargin; if ($this->CurOrientation == 'L') { $iTamanhoRetangulo = $iComprimento - 200; $iRMargemRetangulo = $this->rMargin + 200; $iComprimento = $iComprimento - 6; } else { $iTamanhoRetangulo = $iComprimento - 120; $iRMargemRetangulo = $this->rMargin + 120; } $this->line($this->rMargin, $this->tMargin + 25, $iComprimento + $this->rMargin, $this->tMargin + 25); $this->setfillcolor(255); if (!empty($this->oCabecalho)) { if (count($this->oCabecalho->aLinhas) > 7) { throw new Exception('Número de Registro do Header é maior que o permitido.'); } foreach ($this->oCabecalho->aLinhas as $iLinha => $sHeader) { $this->SetXY($iComprimento - 60, $this->tMargin + 2 + $iLinha * 3); $this->Cell(70, 3, utf8_decode($sHeader), 0, 1, 'J', TRUE); } } $this->Rect($iRMargemRetangulo, $this->tMargin, $iTamanhoRetangulo, 25); $this->setY(35); $this->ln(5); }
/** * Grava os parâmetros da prefeitura na base de dados * * @param array $aDados */ public function persist(array $aDados) { $oEntity = $this->getEm(); if (isset($aDados['ibge'])) { $this->setIbge($aDados['ibge']); } if (isset($aDados['nome'])) { $this->setNome($aDados['nome']); } if (isset($aDados['controle_aidof'])) { $this->setControleAidof($aDados['controle_aidof']); } if (isset($aDados['avisofim_emissao_nota'])) { $this->setQuantidadeAvisoFimEmissao($aDados['avisofim_emissao_nota']); } if (isset($aDados['verifica_autocadastro'])) { $this->setVerificaAutocadastro($aDados['verifica_autocadastro']); } if (isset($aDados['nota_retroativa'])) { $this->setNotaRetroativa($aDados['nota_retroativa']); } if (isset($aDados['cnpj'])) { $this->setCnpj($aDados['cnpj']); } if (isset($aDados['nome_relatorio'])) { $this->setNomeRelatorio($aDados['nome_relatorio']); } if (isset($aDados['endereco'])) { $this->setEndereco($aDados['endereco']); } if (isset($aDados['numero'])) { $this->setNumero($aDados['numero']); } if (isset($aDados['complemento'])) { $this->setComplemento($aDados['complemento']); } if (isset($aDados['bairro'])) { $this->setBairro($aDados['bairro']); } if (isset($aDados['municipio'])) { $this->setMunicipio($aDados['municipio']); } if (isset($aDados['uf'])) { $this->setUf($aDados['uf']); } if (isset($aDados['cep'])) { $this->setCep($aDados['cep']); } if (isset($aDados['telefone'])) { $this->setTelefone($aDados['telefone']); } if (isset($aDados['fax'])) { $this->setFax($aDados['fax']); } if (isset($aDados['email'])) { $this->setEmail($aDados['email']); } if (isset($aDados['url'])) { $this->setUrl($aDados['url']); } if (isset($aDados['modelo_impressao_nfse'])) { $this->setModeloImpressaoNfse($aDados['modelo_impressao_nfse']); } if (isset($aDados['informacoes_complementares_nfse'])) { $this->setInformacoesComplementaresNfse($aDados['informacoes_complementares_nfse']); } if (isset($aDados['modelo_importacao_rps'])) { $this->setModeloImportacaoRps($aDados['modelo_importacao_rps']); } if (isset($aDados['setor'])) { $this->setSetor($aDados['setor']); } if (isset($aDados['secretaria'])) { $this->setSecretaria($aDados['secretaria']); } if (isset($aDados['valor_iss_fixo'])) { $this->setValorIssFixo(DBSeller_Helper_Number_Format::toFloat($aDados['valor_iss_fixo'])); } if (isset($aDados['solicita_cancelamento'])) { $this->setSolicitaCancelamento($aDados['solicita_cancelamento']); } if (isset($aDados['reter_pessoa_fisica'])) { $this->setReterPessoaFisica($aDados['reter_pessoa_fisica']); } // Registra na base de dados $oEntity->persist($this->entity); // Confirma a gravação na base de dados $oEntity->flush(); }
/** * Geração do relatório de retenções */ public function comparativoRetencoesGerarAction() { parent::noLayout(); // Parâmetros do formulário $sOrdenacaoCampo = $this->getRequest()->getParam('ordenacao'); $sOrdenacaoDirecao = $this->getRequest()->getParam('ordem'); $sTipoRelatorio = $this->getRequest()->getParam('tipo_relatorio'); $sCompetencia = $this->getRequest()->getParam('data_competencia_inicial'); // Valida formulário $aValidacaoFormulario = self::validarFormulario($sTipoRelatorio); if (is_array($aValidacaoFormulario)) { exit($this->getHelper('json')->sendJson($aValidacaoFormulario)); } try { // Separa os meses e anos $iCompetenciaMes = intval(substr($sCompetencia, 0, 2)); $iCompetenciaAno = intval(substr($sCompetencia, -4)); $sNomeArquivo = 'comparativo_retencoes_' . date('YmdHis') . '.pdf'; $aDescricaoFiltros = array('cabecalho_contribuinte_cnpjcpf' => 'CNPJ/CPF', 'cabecalho_contribuinte_razao_social' => 'Nome/Razão', 'asc' => 'Crescente', 'desc' => 'Decrescente'); $aDescricaoRelatorio[Fiscal_Form_Relatorio4::TIPO9] = array('titulo' => 'Documentos Não retidos pelo Tomador e retidos pelo Prestador', 'descricao_cabecalho' => 'Tomador', 'descricao_lista' => 'Prestador'); $aDescricaoRelatorio[Fiscal_Form_Relatorio4::TIPO10] = array('titulo' => 'Documentos Não retidos pelo Prestador e retidos pelo Tomador', 'descricao_cabecalho' => 'Prestador', 'descricao_lista' => 'Tomador'); $oPdf = new Fiscal_Model_Relatoriopdfmodelo1('L'); $oPdf->Open(APPLICATION_PATH . "/../public/tmp/{$sNomeArquivo}"); $oPdf->setLinhaFiltro('Relatório Comparativo de Retenções'); $oPdf->setLinhaFiltro($aDescricaoRelatorio[$sTipoRelatorio]['titulo']); $oPdf->setLinhaFiltro(''); $oPdf->setLinhaFiltro("FILTRO: Competência {$sCompetencia}"); $oPdf->setLinhaFiltro("ORDEM: {$aDescricaoFiltros[$sOrdenacaoCampo]} ({$aDescricaoFiltros[$sOrdenacaoDirecao]})"); $oPdf->carregaDados(); $oEntityManager = Zend_Registry::get('em'); $oConexao = $oEntityManager->getConnection(); try { $sSql = self::getSqlRelatorio($sTipoRelatorio); $oStatement = $oConexao->prepare($sSql); $oStatement->execute(array($iCompetenciaMes, $iCompetenciaAno)); if ($oStatement->rowCount() < 1) { throw new Exception($this->translate->_('Nenhum registro encontrado.')); } $aRelatorio = NULL; // Varre os registros do relatório do { $aRelatorio = $oStatement->fetch(); if (empty($aRelatorio)) { continue; } $sContribuinteCnpj = $aRelatorio['cabecalho_contribuinte_cnpjcpf']; $oTipoNota = Contribuinte_Model_Nota::getTipoNota($aRelatorio['lista_documento_tipo']); $aDadosRelatorio[$sContribuinteCnpj]['cabecalho_contribuinte_cnpjcpf'] = $sContribuinteCnpj; $aDadosRelatorio[$sContribuinteCnpj]['cabecalho_contribuinte_razao_social'] = DBSeller_Helper_String_Format::wordsCap($aRelatorio['cabecalho_contribuinte_razao_social']); $aDadosRelatorio[$sContribuinteCnpj]['documentos'][] = array('lista_documento_numero' => $aRelatorio['lista_documento_numero'], 'lista_documento_tipo' => DBSeller_Helper_String_Format::wordsCap($oTipoNota->descricao), 'lista_contribuinte_cnpjcpf' => DBSeller_Helper_Number_Format::maskCPF_CNPJ($aRelatorio['lista_contribuinte_cnpjcpf']), 'lista_contribuinte_razao_social' => DBSeller_Helper_String_Format::wordsCap($aRelatorio['lista_contribuinte_razao_social']), 'lista_contribuinte_contato_telefone' => DBSeller_Helper_Number_Format::maskPhoneNumber($aRelatorio['lista_contribuinte_contato_telefone']), 'lista_servico_valor_servicos' => DBSeller_Helper_Number_Format::toMoney($aRelatorio['lista_servico_valor_servicos'], 2)); } while ($aRelatorio); // Dados do relatorio na ordem informada if (isset($aDadosRelatorio) && is_array($aDadosRelatorio)) { $aDadosRelatorioOrdenado = DBSeller_Helper_Array_Abstract::ordenarPorIndice($aDadosRelatorio, $sOrdenacaoCampo, $sOrdenacaoDirecao, FALSE); } else { throw new Exception($this->translate->_('Erro ao gerar o relatório.')); } // Percorre os dados do relatório foreach ($aDadosRelatorioOrdenado as $aRelatorioOrdenado) { $sContribuinteCnpj = DBSeller_Helper_Number_Format::maskCPF_CNPJ($aRelatorioOrdenado['cabecalho_contribuinte_cnpjcpf']); $sContribuinteRazao = $aRelatorioOrdenado['cabecalho_contribuinte_razao_social']; $sDescricaoCabecalho = $aDescricaoRelatorio[$sTipoRelatorio]['descricao_cabecalho']; // Divisor com as informações do tomador $oPdf->SetFont('Arial', 'B', 8); $oPdf->Cell(30, 5, utf8_decode("CPNJ/CPF {$sDescricaoCabecalho}:")); $oPdf->SetFont('Arial', '', 8); $oPdf->Cell(30, 5, utf8_decode($sContribuinteCnpj)); $oPdf->SetFont('Arial', 'B', 8); $oPdf->Cell(33, 5, utf8_decode("Razão Social {$sDescricaoCabecalho}:")); $oPdf->SetFont('Arial', '', 8); $oPdf->Cell(0, 5, utf8_decode($sContribuinteRazao)); $oPdf->Ln(); if (count($aRelatorioOrdenado['documentos']) > 0) { $sDescricaoLista = $aDescricaoRelatorio[$sTipoRelatorio]['descricao_lista']; $oPdf->SetFont('Arial', 'B', 8); $oPdf->Cell(28, 5, utf8_decode('Nº do Documento'), 1, 0, 'C'); $oPdf->Cell(50, 5, utf8_decode('Tipo de Documento'), 1, 0, 'L'); $oPdf->Cell(35, 5, utf8_decode("CNPJ/CPF do {$sDescricaoLista}"), 1, 0, 'L'); $oPdf->Cell(110, 5, utf8_decode("Razão Social do {$sDescricaoLista}"), 1, 0, 'L'); $oPdf->Cell(30, 5, utf8_decode('Telefone'), 1, 0, 'L'); $oPdf->Cell(24, 5, utf8_decode('Valor (R$)'), 1, 0, 'R'); $oPdf->Ln(5); foreach ($aRelatorioOrdenado['documentos'] as $aRelatorioDocumento) { $oPdf->SetFont('Arial', '', 8); $oPdf->Cell(28, 5, utf8_decode($aRelatorioDocumento['lista_documento_numero']), 1, 0, 'C'); $oPdf->Cell(50, 5, utf8_decode($aRelatorioDocumento['lista_documento_tipo']), 1, 0, 'L'); $oPdf->Cell(35, 5, utf8_decode($aRelatorioDocumento['lista_contribuinte_cnpjcpf']), 1, 0, 'L'); $oPdf->Cell(110, 5, utf8_decode($aRelatorioDocumento['lista_contribuinte_razao_social']), 1, 0, 'L'); $oPdf->Cell(30, 5, utf8_decode($aRelatorioDocumento['lista_contribuinte_contato_telefone']), 1, 0, 'L'); $oPdf->Cell(24, 5, utf8_decode($aRelatorioDocumento['lista_servico_valor_servicos']), 1, 0, 'R'); $oPdf->Ln(5); } $oPdf->Ln(); } } } catch (Exception $oErro) { throw new Exception($oErro->getMessage()); } $oPdf->Output(); $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); }
/** * 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); }
/** * Calcula Valores para Dms * * @param boolean $lTomadorRetemImposto * @param string $fValorServico * @param string $fValorDeducao * @param string $fValorDescontoCondicionado * @param string $fValorDescontoIncondicionado * @param string $fPercentualAliquota * @return Array $aRetorno */ public static function emissaoManualCalculaValoresDms($lTomadorRetemImposto, $fValorServico, $fValorDeducao, $fValorDescontoCondicionado, $fValorDescontoIncondicionado, $fPercentualAliquota) { $fValorServico = DBSeller_Helper_Number_Format::toDataBase($fValorServico); $fValorDeducao = DBSeller_Helper_Number_Format::toDataBase($fValorDeducao); $fValorDescontoCondicionado = DBSeller_Helper_Number_Format::toDataBase($fValorDescontoCondicionado); $fValorDescontoIncondicionado = DBSeller_Helper_Number_Format::toDataBase($fValorDescontoIncondicionado); $fPercentualAliquota = str_replace(',', '.', $fPercentualAliquota); // Validacao if ($fValorDeducao >= $fValorServico) { $fValorDeducao = 0; } if ($fValorDescontoCondicionado >= $fValorServico) { $fValorDescontoCondicionado = 0; } if ($fValorDescontoIncondicionado >= $fValorServico) { $fValorDescontoIncondicionado = 0; } // Calculos $fValorBaseCalculo = $fValorServico - $fValorDeducao - $fValorDescontoIncondicionado; $fValorImposto = $fValorBaseCalculo * ($fPercentualAliquota / 100); $fValorLiquido = $fValorServico - $fValorDescontoCondicionado - $fValorDescontoIncondicionado; if ($lTomadorRetemImposto == 1) { $fValorLiquido -= $fValorImposto; } // Retorno Json $aRetorno['s_valor_bruto'] = DBSeller_Helper_Number_Format::toMoney($fValorServico); $aRetorno['s_valor_deducao'] = DBSeller_Helper_Number_Format::toMoney($fValorDeducao); $aRetorno['s_vl_condicionado'] = DBSeller_Helper_Number_Format::toMoney($fValorDescontoCondicionado); $aRetorno['s_vl_desc_incondicionado'] = DBSeller_Helper_Number_Format::toMoney($fValorDescontoIncondicionado); $aRetorno['s_base_calculo'] = DBSeller_Helper_Number_Format::toMoney($fValorBaseCalculo); $aRetorno['s_valor_imposto'] = DBSeller_Helper_Number_Format::toMoney($fValorImposto); $aRetorno['s_valor_pagar'] = DBSeller_Helper_Number_Format::toMoney($fValorLiquido); return $aRetorno; }
/** * Busca a aliquota por servico [Json] */ public function emissaoManualBuscarDadosServicoAction() { try { // Perfil do usuario $iIdPerfil = $this->oUsuario->getPerfil()->getId(); $iIdServico = $this->getParam('id_servico'); $aRetornoJson = array(); // Ignora se for prestador eventual if ($iIdPerfil != 6) { $aServicos = Contribuinte_Model_Servico::getByIm($this->oContribuinte->getInscricaoMunicipal(), FALSE); if (is_array($aServicos)) { foreach ($aServicos as $oServico) { if ($oServico->attr('cod_atividade') == $iIdServico) { $aRetornoJson = array('item_servico' => $oServico->attr('desc_item_servico'), 'cod_item_servico' => $oServico->attr('cod_item_servico'), 'estrut_cnae' => $oServico->attr('estrut_cnae'), 'deducao' => $oServico->attr('deducao'), 'aliq' => DBSeller_Helper_Number_Format::toMoney($oServico->attr('aliq'))); break; } } } } echo $this->getHelper('json')->sendJson($aRetornoJson); } catch (Exception $e) { $aRetorno['erro'] = TRUE; if ($e->getCode() == Global_Lib_Model_WebService::CODIGO_ERRO_CONSULTA_WEBSERVICE) { $aRetorno['mensagem'] = "E-cidade temporariamente insdisponível. Emissão bloqueada!"; } else { $aRetorno['mensagem'] = $e->getMessage(); } echo $this->getHelper('json')->sendJson($aRetorno); } }
/** * Define os dados dos documentos substituídos * * @param \Doctrine\DBAL\Statement $oStatement * @param array $aParametros * @throws Exception */ public function setDadosDocumentosSubstituidos(Doctrine\DBAL\Statement $oStatement, array $aParametros) { $this->SetFont('Arial', 'B', 8); $this->SetFillColor(201, 201, 201); $this->Cell(0, 5, utf8_decode('LANÇAMENTOS RETIDOS'), 1, 1, 'C', TRUE); $this->Ln(1); $aLarguraCelulas = array(6, 13, 10, 50, 25, 9, 12, 20, 20, 27, 85); $this->SetFillColor(230, 230, 230); $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Dia'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[1], 5, utf8_decode('Número'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[2], 5, utf8_decode('Série'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[3], 5, utf8_decode('Tipo'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[4], 5, utf8_decode('Situação'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[5], 5, utf8_decode('Cod.'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[6], 5, utf8_decode('Aliq.(%)'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[7], 5, utf8_decode('Base(R$)'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[8], 5, utf8_decode('ISS(R$)'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[9], 5, utf8_decode('CNPJ Tomador'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[10], 5, utf8_decode('Razão Tomador'), 1, NULL, NULL, TRUE); $this->SetFont('Arial', NULL, 8); try { // Processa o query $oStatement->execute($aParametros); if ($oStatement->rowCount() > 0) { $fTotalBase = 0; $fTotalIss = 0; // Varre a lista de documentos while ($aNota = $oStatement->fetch()) { // Define o dia da emissão do documento $sDiaEmissaoDocumento = substr($aNota['documento_data'], -2); $this->Ln(); $this->Cell($aLarguraCelulas[0], 5, $sDiaEmissaoDocumento, 1, 0, 'C'); $this->Cell($aLarguraCelulas[1], 5, $aNota['documento_numero'], 1, 0, 'R'); $this->Cell($aLarguraCelulas[2], 5, $aNota['documento_serie'], 1, 0, 'R'); // Tipo de documento if ($aNota['documento_classe'] == 'nfse') { $sTipoNota = 'NFSe'; if ($aNota['documento_tipo']) { $aTipoNota = Contribuinte_Model_Nota::getDescricaoTipoNota($aNota['documento_tipo']); $sTipoNota = $aTipoNota[$aNota['documento_tipo']]; } $this->Cell($aLarguraCelulas[3], 5, $sTipoNota, 1); } else { if ($aNota['documento_classe'] == 'dms' && $aNota['documento_tipo']) { if ($aNota['documento_tipo_descricao']) { $sTipoNota = $aNota['documento_tipo_descricao']; } else { $aTipoNota = Contribuinte_Model_Nota::getDescricaoTipoNota($aNota['documento_tipo']); $sTipoNota = $aTipoNota[$aNota['documento_tipo']]; } $this->Cell($aLarguraCelulas[3], 5, $sTipoNota, 1); } else { $this->Cell($aLarguraCelulas[3], 5, '-', 1); } } // Formata dados $sServicoValorAliquota = DBSeller_Helper_Number_Format::toMoney($aNota['servico_valor_aliquota']); $sServicoValorBaseCalculo = DBSeller_Helper_Number_Format::toMoney($aNota['servico_valor_base_calculo']); $sServicoValorIss = DBSeller_Helper_Number_Format::toMoney($aNota['servico_valor_iss']); $sTomadorCnpjCpf = DBSeller_Helper_Number_Format::maskCPF_CNPJ($aNota['tomador_cnpjcpf']); $sTomadorRazaoSocial = utf8_decode($aNota['tomador_razao_social']); $sTomadorRazaoSocial = substr($sTomadorRazaoSocial, 0, 50); // Trata a situação do documento switch (strtoupper($aNota['documento_situacao'])) { case 'T': $sSituacaoDocumento = utf8_decode('Tributado'); break; case 'R': $sSituacaoDocumento = utf8_decode('Retido'); break; case 'IS': $sSituacaoDocumento = utf8_decode('Isento'); break; case 'E': $sSituacaoDocumento = utf8_decode('Extraviado'); break; default: $sSituacaoDocumento = '-'; } // ALtera a situação do documento quando a natureza for fora do município if ($aNota['documento_natureza_operacao'] == 2) { $sSituacaoDocumento = utf8_decode('Fora do Município'); } // Nota cancelada if ($aNota['documento_status_cancelamento'] == 't' || $aNota['documento_situacao'] == 'c') { $sSituacaoDocumento = utf8_decode('Cancelado'); } // Nota substituida if (!empty($aNota['documento_id_nota_substituta'])) { $sSituacaoDocumento = utf8_decode('Substituida'); } // Verifica se a nota foi substituida ou cancelada não soma os valores totais if ($aNota['documento_status_cancelamento'] != 't' && empty($aNota['documento_id_nota_substituta'])) { $fTotalBase += $aNota['servico_valor_base_calculo']; $fTotalIss += $aNota['servico_valor_iss']; } $this->Cell($aLarguraCelulas[4], 5, $sSituacaoDocumento, 1, 0, 'L', NULL); $this->Cell($aLarguraCelulas[5], 5, $aNota['servico_item_lista_servico'], 1, 0, 'L', NULL); $this->Cell($aLarguraCelulas[6], 5, $sServicoValorAliquota, 1, 0, 'R', NULL); $this->Cell($aLarguraCelulas[7], 5, $sServicoValorBaseCalculo, 1, 0, 'R', NULL); $this->Cell($aLarguraCelulas[8], 5, $sServicoValorIss, 1, 0, 'R', NULL); $this->Cell($aLarguraCelulas[9], 5, $sTomadorCnpjCpf, 1, 0, 'L', NULL); $this->Cell($aLarguraCelulas[10], 5, $sTomadorRazaoSocial, 1, 0, 'L', NULL); } $this->SetFont('Arial', 'B', 8); $this->Ln(); $this->Cell(113); $this->Cell($aLarguraCelulas[6], 5, 'Total:', 1); $this->Cell($aLarguraCelulas[7], 5, DBSeller_Helper_Number_Format::toMoney($fTotalBase), 1, 0, 'R'); $this->Cell($aLarguraCelulas[8], 5, DBSeller_Helper_Number_Format::toMoney($fTotalIss), 1, 0, 'R'); } else { $this->Ln(); $this->Cell(0, 5, utf8_decode('Sem Lançamentos no Período'), 1, NULL, 'C'); } $oStatement->closeCursor(); } catch (Exception $oErro) { throw new Exception($oErro->getMessage()); } }
/** * Prenche os= Formulario com os dados * @param stdClass $oDados stdClass com as propriedades do formulario a serem preenchidas * @return Contribuinte_Form_ParametrosContribuinte */ public function preenche(stdClass $oDados) { if (!is_object($oDados)) { return $this; } $this->im->setValue($oDados->im); if (!empty($oDados->nome_contribuinte)) { $this->nome_contribuinte->setValue($oDados->nome_contribuinte); } if ($oDados->avisofim_emissao_nota != '') { $this->avisofim_emissao_nota->setValue($oDados->avisofim_emissao_nota); } else { $this->avisofim_emissao_nota->setValue('0'); } if (!empty($oDados->max_deducao)) { $this->max_deducao->setValue($oDados->max_deducao); } else { $this->max_deducao->setValue('0'); } if (!empty($oDados->pis)) { $this->pis->setValue($oDados->pis); } if (!empty($oDados->cofins)) { $this->cofins->setValue($oDados->cofins); } if (!empty($oDados->inss)) { $this->inss->setValue($oDados->inss); } if (!empty($oDados->ir)) { $this->ir->setValue($oDados->ir); } if (!empty($oDados->csll)) { $this->csll->setValue($oDados->csll); } if (!empty($oDados->valor_iss_fixo)) { $this->valor_iss_fixo->setValue(DBSeller_Helper_Number_Format::toMoney($oDados->valor_iss_fixo)); } return $this; }
/** * Geração do relatório de declarações sem movimento */ public function comparativoDeclaracoesGerarAction() { parent::noLayout(); $aValidacaoFormulario = self::validarFormulario(); if (is_array($aValidacaoFormulario)) { exit($this->getHelper('json')->sendJson($aValidacaoFormulario)); } try { // Parâmetros do formulário $sOrdenacaoCampo = $this->getRequest()->getParam('ordenacao'); $sOrdenacaoDirecao = $this->getRequest()->getParam('ordem'); $sCompetencia = $this->getRequest()->getParam('data_competencia_inicial'); // Separa os meses e anos $iCompetenciaMes = intval(substr($sCompetencia, 0, 2)); $iCompetenciaAno = intval(substr($sCompetencia, -4)); $sNomeArquivo = 'relatorio_comparativo_declaracoes_' . date('YmdHis') . '.pdf'; $aDescricaoFiltros = array('tomador_cnpjcpf' => 'CPF/CNPJ', 'tomador_razao_social' => 'Nome/Razão Social Tomador', 'asc' => 'Crescente', 'desc' => 'Decrescente'); $oPdf = new Fiscal_Model_Relatoriopdfmodelo1('L'); $oPdf->Open(APPLICATION_PATH . "/../public/tmp/{$sNomeArquivo}"); $oPdf->setLinhaFiltro('Relatório Comparativo de Declarações'); $oPdf->setLinhaFiltro(''); $oPdf->setLinhaFiltro("FILTRO: Competência {$sCompetencia}"); $oPdf->setLinhaFiltro("ORDEM: {$aDescricaoFiltros[$sOrdenacaoCampo]} ({$aDescricaoFiltros[$sOrdenacaoDirecao]})"); $oPdf->carregaDados(); $oEntityManager = Zend_Registry::get('em'); $oConexao = $oEntityManager->getConnection(); try { $sSql = self::getSqlRelatorio(); $oStatement = $oConexao->prepare($sSql); $oStatement->execute(array(Contribuinte_Model_Dms::ENTRADA, $iCompetenciaMes, $iCompetenciaAno)); if ($oStatement->rowCount() < 1) { throw new Exception('Nenhum registro encontrado.'); } $aRelatorio = NULL; // Monta o array com o registros formatados do { $aRelatorio = $oStatement->fetch(); if (empty($aRelatorio)) { continue; } // Tipo de documento $oDocumentoTipo = Contribuinte_Model_Nota::getTipoNota($aRelatorio['documento_tipo']); $sDocumentoTipo = DBSeller_Helper_String_Format::wordsCap($oDocumentoTipo->descricao); // Formata os dados $iTomadorCnpj = $aRelatorio['tomador_cnpjcpf']; $sTomadorRazaoSocial = DBSeller_Helper_String_Format::wordsCap($aRelatorio['tomador_razao_social']); $sPrestadorCnpjCpf = DBSeller_Helper_Number_Format::maskCPF_CNPJ($aRelatorio['prestador_cnpjcpf']); $sPrestadorRazaoSocial = DBSeller_Helper_String_Format::wordsCap($aRelatorio['prestador_razao_social']); $sPrestadorTelefone = $aRelatorio['prestador_contato_telefone']; $sPrestadorTelefone = DBSeller_Helper_Number_Format::maskPhoneNumber($sPrestadorTelefone); $sValorServico = DBSeller_Helper_Number_Format::toMoney($aRelatorio['servico_valor_servicos'], 2); // Dados do relatorio organizado por índice $aDadosRelatorio[$iTomadorCnpj]['tomador_cnpjcpf'] = $iTomadorCnpj; $aDadosRelatorio[$iTomadorCnpj]['tomador_razao_social'] = $sTomadorRazaoSocial; $aDadosRelatorio[$iTomadorCnpj]['documentos'][] = array('documento_numero' => $aRelatorio['documento_numero'], 'documento_tipo' => $sDocumentoTipo, 'prestador_cnpjcpf' => $sPrestadorCnpjCpf, 'prestador_razao_social' => $sPrestadorRazaoSocial, 'prestador_contato_telefone' => $sPrestadorTelefone, 'servico_valor_servicos' => $sValorServico); } while ($aRelatorio); // Dados do relatorio na ordem informada $aDadosRelatorioOrdenado = DBSeller_Helper_Array_Abstract::ordenarPorIndice($aDadosRelatorio, $sOrdenacaoCampo, $sOrdenacaoDirecao, FALSE); // Percorre os dados do relatório, já ordenado foreach ($aDadosRelatorioOrdenado as $aRelatorioOrdenado) { $sCpfCnpjTomador = DBSeller_Helper_Number_Format::maskCPF_CNPJ($aRelatorioOrdenado['tomador_cnpjcpf']); $sRazaoTomador = $aRelatorioOrdenado['tomador_razao_social']; // Divisor com as informações do tomador $oPdf->SetFont('Arial', 'B', 8); $oPdf->Cell(29, 5, utf8_decode('CPNJ/CPF Tomador:')); $oPdf->SetFont('Arial', '', 8); $oPdf->Cell(30, 5, utf8_decode($sCpfCnpjTomador)); $oPdf->SetFont('Arial', 'B', 8); $oPdf->Cell(32, 5, utf8_decode('Razão Social Tomador:')); $oPdf->SetFont('Arial', '', 8); $oPdf->Cell(0, 5, utf8_decode($sRazaoTomador)); $oPdf->Ln(); // Cabeçalho com a lista de documentos do tomador if (count($aRelatorioOrdenado['documentos']) > 0) { $oPdf->SetFont('Arial', 'B', 8); $oPdf->Cell(28, 5, utf8_decode('Nº do Documento'), 1, 0, 'C'); $oPdf->Cell(50, 5, utf8_decode('Tipo de Documento'), 1, 0, 'L'); $oPdf->Cell(35, 5, utf8_decode('CNPJ/CPF do Prestador'), 1, 0, 'L'); $oPdf->Cell(110, 5, utf8_decode('Razão Social do Prestador'), 1, 0, 'L'); $oPdf->Cell(30, 5, utf8_decode('Telefone'), 1, 0, 'L'); $oPdf->Cell(24, 5, utf8_decode('Valor (R$)'), 1, 0, 'R'); $oPdf->Ln(5); // Percorre os documentos do tomador foreach ($aRelatorioOrdenado['documentos'] as $aRelatorioDocumento) { $oPdf->SetFont('Arial', '', 8); $oPdf->Cell(28, 5, utf8_decode($aRelatorioDocumento['documento_numero']), 1, 0, 'C'); $oPdf->Cell(50, 5, utf8_decode($aRelatorioDocumento['documento_tipo']), 1, 0, 'L'); $oPdf->Cell(35, 5, utf8_decode($aRelatorioDocumento['prestador_cnpjcpf']), 1, 0, 'L'); $oPdf->Cell(110, 5, utf8_decode($aRelatorioDocumento['prestador_razao_social']), 1, 0, 'L'); $oPdf->Cell(30, 5, utf8_decode($aRelatorioDocumento['prestador_contato_telefone']), 1, 0, 'L'); $oPdf->Cell(24, 5, utf8_decode($aRelatorioDocumento['servico_valor_servicos']), 1, 0, 'R'); $oPdf->Ln(5); } $oPdf->Ln(); } } } catch (Exception $oErro) { throw new Exception($oErro->getMessage()); } // Renderiza o arquivo PDF $oPdf->Output(); // Mensagem de retorno com o link do arquivo PDF $aRetornoJson['status'] = TRUE; $aRetornoJson['url'] = $this->view->baseUrl("tmp/{$sNomeArquivo}"); $aRetornoJson['success'] = $this->translate->_('Arquivo importado com sucesso.'); } catch (Exception $oErro) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $oErro->getMessage(); } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Método para confirmação do usuário eventual [json] * * @throws Exception * @return void */ public function confirmarAction() { $oFiltro = new Zend_Filter_Digits(); $aDados = $this->getRequest()->getParams(); $sCpfCnpj = DBSeller_Helper_Number_Format::unmaskCPF_CNPJ($aDados['cnpjcpf']); // Popula o formulario $oForm = new Default_Form_LiberacaoCadastro(); $oForm->populate($aDados); // Valida o formulario if ($oForm->isValid($aDados)) { if ($aDados['hash'] == NULL || $sCpfCnpj == NULL) { throw new Exception($this->translate->_('Campo(s) obrigatório(s) não informado(s).')); } $oDoctrine = Zend_Registry::get('em'); $oDoctrine->getConnection()->beginTransaction(); try { $oCadastroPessoa = Contribuinte_Model_CadastroPessoa::getByAttribute('hash', $aDados['hash']); if ($oCadastroPessoa == NULL) { $sMensagemErro = 'Dados informados não encontrados. Favor entrar em contato com o suporte da prefeitura.'; throw new Exception($this->translate->_($sMensagemErro)); } $iTipoLiberacaoUsuarioBloqueado = Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_BLOQUEADO; if ($oCadastroPessoa->getTipoLiberacao() == $iTipoLiberacaoUsuarioBloqueado) { $sMensagemErro = 'Cadastro foi recusado. Favor entrar em contato com o setor de fiscalização.'; throw new Exception($this->translate->_($sMensagemErro)); } if ($sCpfCnpj != $oCadastroPessoa->getCpfcnpj()) { throw new Exception($this->translate->_('CNPJ/CPF informado não é o mesmo informado no cadastro.')); } $oUsuarioCadastrado = Administrativo_Model_Usuario::getByAttribute('email', $oCadastroPessoa->getEmail()); if ($oUsuarioCadastrado instanceof Administrativo_Model_Usuario) { $sLink = '<a href="' . $this->view->serverUrl('/auth/login/esqueci-minha-senha/') . '">Clique Aqui</a>'; $sMensagemErro = "Já encontramos um cadastro com este email.<br>Caso tenha esquecido sua senha. {$sLink}"; throw new Exception($this->translate->_($sMensagemErro)); } $oCgm = Contribuinte_Model_Cgm::getDadosCgm($sCpfCnpj); if ($oCadastroPessoa->getTipoLiberacao() == Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO && $oCgm == NULL) { $sErro = $this->translate->_('Parametros estão inválidos (CGM não existe), '); $sErro .= $this->translate->_('favor entrar em contato com o setor de fiscalização.'); throw new Exception($sErro); } if ($oCadastroPessoa->getTipoLiberacao() == Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_CGM && $oCgm == NULL) { $oNovoCgm = new Contribuinte_Model_Cgm(); if (strlen($oCadastroPessoa->getCpfCnpj()) >= 14) { $oNovoCgm->setJuridico(TRUE); $oNovoCgm->setCNPJ($oCadastroPessoa->getCpfCnpj()); } else { $oNovoCgm->setJuridico(FALSE); $oNovoCgm->setCPF($oCadastroPessoa->getCpfCnpj()); } $sDescricaoMunicipio = Default_Model_Cadendermunicipio::getById($oCadastroPessoa->getCidade())->getNome(); $oNovoCgm->setNome($oCadastroPessoa->getNome()); $oNovoCgm->setEmail($oCadastroPessoa->getEmail()); $oNovoCgm->setCodigoIbgeCidade($oCadastroPessoa->getCidade()); $oNovoCgm->setDescricaoMunicipio($sDescricaoMunicipio); $oNovoCgm->setEstado($oCadastroPessoa->getEstado()); $oNovoCgm->setTelefone($oFiltro->filter($oCadastroPessoa->getTelefone())); $oNovoCgm->setCep($oFiltro->filter($oCadastroPessoa->getCep())); $oNovoCgm->setEnderecoEcidade(FALSE); if ($oCadastroPessoa->getCodBairro()) { $oNovoCgm->setEnderecoEcidade(TRUE); } $oNovoCgm->setCodigoBairro($oCadastroPessoa->getCodBairro()); $oNovoCgm->setCodigoLogradouro($oCadastroPessoa->getCodEndereco()); $oNovoCgm->setDescricaoBairro($oCadastroPessoa->getBairro()); $oNovoCgm->setDescricaoLogradouro($oCadastroPessoa->getEndereco()); $oNovoCgm->setNumeroLogradouro($oCadastroPessoa->getNumero()); $oNovoCgm->setComplemento($oCadastroPessoa->getComplemento()); $oCodigoCgm = $oNovoCgm->persist(); $iCodigoCgm = $oCodigoCgm->codigo_cgm; } else { $iCodigoCgm = $oCgm->getCodigoCgm(); } $aArraTipoLiberacao = array(Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_CGM, Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO); if (in_array($oCadastroPessoa->getTipoLiberacao(), $aArraTipoLiberacao)) { // Usuário do sistema $oUsuarioSistema = new Administrativo_Model_Usuario(); $oUsuarioSistema->setNome($oCadastroPessoa->getNome()); $oUsuarioSistema->setTelefone($oFiltro->filter($oCadastroPessoa->getTelefone())); $oUsuarioSistema->setLogin($oCadastroPessoa->getCpfCnpj()); $oUsuarioSistema->setSenha($aDados['senha']); $oUsuarioSistema->setEmail($oCadastroPessoa->getEmail()); $oUsuarioSistema->setHabilitado(TRUE); $oUsuarioSistema->setAdministrativo(FALSE); $oUsuarioSistema->setTipo(Administrativo_Model_TipoUsuario::$CONTRIBUINTE); $oUsuarioSistema->setCgm($iCodigoCgm); $oUsuarioSistema->setCnpj($oCadastroPessoa->getCpfCnpj()); $oUsuarioSistema->setPerfil($oCadastroPessoa->getPerfil()->getEntity()); $oUsuarioSistema->adicionaAcoes($oCadastroPessoa->getPerfil()->getAcoes()); $oUsuarioSistema->persist(); // Criamos o usuario eventual; $oUsuarioEventual = new Administrativo_Model_UsuarioContribuinte(); $oUsuarioEventual->setCGM($iCodigoCgm); $oUsuarioEventual->setHabilitado(TRUE); $oUsuarioEventual->setTipoContribuinte(2); $oUsuarioEventual->setCnpjCpf($oCadastroPessoa->getCpfCnpj()); $oUsuarioEventual->setUsuario($oUsuarioSistema->getEntity()); $oUsuarioEventual->copiaPerfilAcoes($oCadastroPessoa->getPerfil()); $oUsuarioEventual->persist(); // Cadastro de Pessoa $oCadastroPessoa->setHash(NULL); $oCadastroPessoa->persist(); } $oDoctrine->getConnection()->commit(); $aRetornoJson['status'] = TRUE; $aRetornoJson['success'] = $this->translate->_('Cadastro efetuado com sucesso.'); $aRetornoJson['url'] = $this->view->serverUrl(); } catch (Exception $oErro) { $oDoctrine->getConnection()->rollback(); if (isset($oCodigoCgm) && isset($oCodigoCgm->codigo_cgm) && Contribuinte_Model_Cgm::removerCgm($oCodigoCgm->codigo_cgm)) { $oLog = Zend_Registry::get('logger'); $oLog->log("Erro ao excluir o CGM: {$oCodigoCgm->codigo_cgm}", Zend_Log::INFO, ' '); } $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $oErro->getMessage(); } } else { $aRetornoJson['status'] = FALSE; $aRetornoJson['fields'] = array_keys($oForm->getMessages()); $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.'); } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Verifica se o contribuinte é optante pelo simples na data especificada * Utiliza o mesmo método utilizado no DMS * * @see Contribuinte_Lib_Controller_AbstractController::verificarContribuinteOptanteSimplesAction() * @throws Exception */ public function verificarContribuinteOptanteSimplesAction() { try { $sData = $this->getRequest()->getParam('data'); if (!$sData) { throw new Exception('Informe a data para verificar.'); } $oDataSimples = new DateTime(DBSeller_Helper_Date_Date::invertDate($sData, '-')); if (!$oDataSimples instanceof DateTime) { throw new Exception('Data inválida'); } $oContribuinte = $this->_session->contribuinte; $oParametros = Contribuinte_Model_ParametroContribuinte::getById($oContribuinte->getIdUsuarioContribuinte()); $aRetorno['optante_simples_nacional'] = $oContribuinte->isOptanteSimples($oDataSimples) ? TRUE : FALSE; $aRetorno['optante_simples_categoria'] = $oContribuinte->getOptanteSimplesCategoria(); if ($oParametros instanceof Contribuinte_Model_ParametroContribuinte) { $fAliquota = $oParametros->getEntity()->getValorIssFixo(); $aRetorno['valor_iss_fixo'] = DBSeller_Helper_Number_Format::toMoney($fAliquota); } echo $this->getHelper('json')->sendJson($aRetorno); } catch (Exception $oError) { $aRetorno['erro'] = TRUE; $aRetorno['mensagem'] = $oError->getMessage(); echo $this->getHelper('json')->sendJson($aRetorno); } }
/** * Reorganiza o array com os dados copiados de uma nota, para preencher o form da emissão de nota * * @param array $aDados * @return array */ public function organizaDadosCopia($aDados) { // Verifica se os dados são de uma nota copiada if (isset($aDados['id_copia_nota'])) { $this->getElement('s_dados_cod_tributacao_copia')->setValue($aDados['s_dados_cod_tributacao']); // Ajusta os dados do Tomador/Empresa $aDados['logradouro'] = $aDados['t_endereco']; $aDados['telefone'] = $aDados['t_telefone']; $aDados['complemento'] = $aDados['t_endereco_comp']; $aDados['numero'] = $aDados['t_endereco_comp']; $aDados['email'] = $aDados['t_email']; $aDados['nome'] = $aDados['t_cod_municipio']; $aDados['bairro'] = $aDados['t_bairro']; $aDados['cep'] = $aDados['t_cep']; $aDados['logradouro'] = $aDados['t_endereco']; $aDados['estado'] = $aDados['t_uf']; $aDados['pais'] = $aDados['p_cod_pais']; // Ajusta os dados do Serviço $aDados['estado'] = $aDados['p_uf']; $aDados['descricao'] = $aDados['s_dados_discriminacao']; $aDados['s_vl_servicos'] = DBSeller_Helper_Number_Format::toFloat($aDados['s_vl_servicos']); if ($aDados['s_dados_iss_retido'] == 1) { $aDados['s_dados_iss_retido'] = '0'; } else { if ($aDados['s_dados_iss_retido'] == 2) { $aDados['s_dados_iss_retido'] = '1'; } } } return $aDados; }
/** * 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); }
/** * Converte o valor para o formato: 999.999.999,99 * * @param string $sValor * @return string */ private function converterValor($sValor) { return DBSeller_Helper_Number_Format::toMoney($sValor); }
/** * Define CNPJ * @param string $sCnpj */ public function setCNPJ($sCnpj) { $this->cnpj = DBSeller_Helper_Number_Format::unmaskCPF_CNPJ($sCnpj); }
/** * 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 valores por atividade / serviço */ public function valoresAtividadeServicoGerarAction() { parent::noLayout(); try { $aValidacaoFormulario = self::validarFormulario(Fiscal_Form_Relatorio1::TIPO5); if (is_array($aValidacaoFormulario)) { exit($this->getHelper('json')->sendJson($aValidacaoFormulario)); } $sNomeArquivo = 'evolucao_arrecadacao_ ' . date('YmdHis') . '.pdf'; $sCaminhoArquivo = APPLICATION_PATH . "/../public/tmp/{$sNomeArquivo}"; $aParametros = $this->getRequest()->getParams(); $aFiltros = array('atividade_servico' => 'Atividade / Serviço'); $sOrdenacao = 'Crescente'; if (strtoupper($aParametros['ordem']) == 'DESC') { $sOrdenacao = 'Decrescente'; } $sFiltro = "Competência {$aParametros['data_competencia_inicial']} até {$aParametros['data_competencia_final']}"; $sOrdem = $aFiltros[$aParametros['ordenacao']] . " ({$sOrdenacao})"; $oFpdf = new Fiscal_Model_Relatoriopdfmodelo1('L'); $oFpdf->setLinhaFiltro('Relatório Evolução de Arrecadação por Atividade/Serviço'); $oFpdf->setLinhaFiltro(''); $oFpdf->setLinhaFiltro("FILTRO : {$sFiltro}"); $oFpdf->setLinhaFiltro("ORDEM : {$sOrdem}"); $oFpdf->Open($sCaminhoArquivo); $oFpdf->carregadados(); $aDataCompetenciaInicial = explode('/', $aParametros['data_competencia_inicial']); $aDataCompetenciaFinal = explode('/', $aParametros['data_competencia_final']); $sSql = "SELECT SUM(servico_valor_iss) AS valor_imposto,\n servico_codigo_cnae,\n documento_competencia_ano,\n documento_competencia_mes\n FROM view_nota_mais_dms\n WHERE documento_emite_guia = TRUE\n AND (dms_operacao = 's' OR dms_operacao IS NULL)\n AND documento_situacao NOT IN ('c', 'e')\n AND documento_status_cancelamento = FALSE\n AND (documento_competencia_ano || LPAD(CAST(documento_competencia_mes AS VARCHAR), 2, '0'))\n BETWEEN ? AND ?\n GROUP BY servico_codigo_cnae,\n documento_competencia_ano,\n documento_competencia_mes "; $aDadosRelatorio = array(); $oEntityManager = Zend_Registry::get('em'); $oConexao = $oEntityManager->getConnection(); $oStatement = $oConexao->prepare($sSql); $oStatement->execute(array("{$aDataCompetenciaInicial[1]}{$aDataCompetenciaInicial[0]}", "{$aDataCompetenciaFinal[1]}{$aDataCompetenciaFinal[0]}")); if ($oStatement->rowCount() < 1) { throw new Exception('Nenhum Registro encontrado.'); } while ($aNota = $oStatement->fetch()) { $oServicos = Contribuinte_Model_Servico::getServicoPorCnae($aNota['servico_codigo_cnae']); if (!$oServicos) { throw new Exception("Erro: {$aNota['servico_codigo_cnae']}"); } $sIndice = md5($aNota['servico_codigo_cnae'] . $oServicos->attr('atividade')); $aDadosRelatorio[$sIndice]['estrutural'] = $oServicos->attr('estrutural'); $aDadosRelatorio[$sIndice]['descricao'] = DBSeller_Helper_String_Format::wordsCap($oServicos->attr('atividade')); if (!isset($aDadosRelatorio[$sIndice]['totalAnoMes'][$aNota['documento_competencia_ano']][$aNota['documento_competencia_mes']])) { $aDadosRelatorio[$sIndice]['totalAnoMes'][$aNota['documento_competencia_ano']][$aNota['documento_competencia_mes']] = 0; } $aDadosRelatorio[$sIndice]['totalAnoMes'][$aNota['documento_competencia_ano']][$aNota['documento_competencia_mes']] += $aNota['valor_imposto']; if (!isset($aDadosRelatorio[$sIndice]['totalAcumulado'])) { $aDadosRelatorio[$sIndice]['totalAcumulado'] = 0; } $aDadosRelatorio[$sIndice]['totalAcumulado'] += $aNota['valor_imposto']; } switch ($aParametros['ordenacao']) { case 'atividade_servico': $sOrdenacao = 'estrutural'; break; case 'valor_total': $sOrdenacao = 'totalAcumulado'; break; } $iComprimentoPagina = $oFpdf->w - $oFpdf->rMargin - $oFpdf->lMargin; $aDadosRelatorio = DBSeller_Helper_Array_Abstract::ordenarPorIndice($aDadosRelatorio, $sOrdenacao, $aParametros['ordem'], TRUE); // Percorre os registros do relatório foreach ($aDadosRelatorio as $aRegistro) { $sAtividadeServico = "Atividade / Serviço: {$aRegistro['estrutural']} - {$aRegistro['descricao']}"; $oFpdf->SetFont('Arial', 'B', 8); $oFpdf->Cell($iComprimentoPagina, 5, utf8_decode($sAtividadeServico), 0, 1, 'J'); $oFpdf->SetFont('Arial', '', 8); $aMeses = DBSeller_Helper_Date_Date::getMesesArray(); $iTamanhoMes = $iComprimentoPagina / count($aMeses); // Ordena a lista pelo índice ksort($aRegistro['totalAnoMes']); // Percorre a lista pelo total por ano/mes foreach ($aRegistro['totalAnoMes'] as $iAno => $aAnos) { // Percorre os meses para gerar o cabeçalho de meses foreach ($aMeses as $iMes => $sDescricaoMes) { $oFpdf->SetFont('Arial', 'B', 8); $oFpdf->Cell($iTamanhoMes, 5, utf8_decode(substr($aMeses[$iMes], 0, 3)) . '/' . $iAno . '(R$)', 1, 0, 'C'); } $oFpdf->ln(); // Percorre os meses para gerar os dados por mês foreach ($aMeses as $iMes => $sMes) { $oFpdf->SetFont('Arial', '', 8); if (!empty($aAnos[$iMes])) { $oFpdf->Cell($iTamanhoMes, 5, DBSeller_Helper_Number_Format::toMoney($aAnos[$iMes], 2), 1, 0, 'R'); } else { $oFpdf->Cell($iTamanhoMes, 5, 'S / M', 1, 0, 'C'); } } $oFpdf->proximaPagina(1); if (!$oFpdf->lQuebrouPagina) { $oFpdf->Ln(6); } } if (!$oFpdf->lQuebrouPagina) { $oFpdf->Ln(2); } } $oFpdf->Output(); $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'][] = $this->translate->_($oErro->getMessage()); } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Retorna os valores da NFSE calculado * * @param stdClass $oParametros * $oParametros->perc_deducao; // Percentual Deducao * $oParametros->perc_inss; // Percentual INSS * $oParametros->perc_pis; // Percentual PIS * $oParametros->perc_cofins; // Percentual COFINS * $oParametros->perc_ir; // Percentual IR * $oParametros->perc_csll; // Percentual CSLL * $oParametros->perc_aliquota; // Percentual Aliquota * $oParametros->vlr_servico; // Valor Bruto do Serviço * $oParametros->vlr_outras_retencoes; // Valor Outras Retenções * $oParametros->vlr_desc_condicionado; // Valor Desconto Condicionado * $oParametros->vlr_desc_incondicionado; // Valor Desconto Incondicionado * $oParametros->imposto_retido_tomador; // Imposto retido pelo tomador * $oParametros->deducao_editavel; // Habilita edição da dedução * $oParametros->formatar_valores_ptbr; // Retorna os valores em formato PTBR * @throws Exception * @see DBSeller_Helper_Number_Format * @return object stdClass */ public static function calcularValores($oParametros) { if (!is_object($oParametros)) { throw new Exception('O parâmetro deve ser um objeto com os valores.'); } // Limpa máscaras $oParametros->vlr_servico = DBSeller_Helper_Number_Format::toFloat($oParametros->vlr_servico); $oParametros->s_vl_deducoes = DBSeller_Helper_Number_Format::toFloat($oParametros->s_vl_deducoes); $oParametros->perc_aliquota = DBSeller_Helper_Number_Format::toFloat($oParametros->perc_aliquota); $oParametros->vlr_inss = DBSeller_Helper_Number_Format::toFloat($oParametros->vlr_inss); $oParametros->vlr_pis = DBSeller_Helper_Number_Format::toFloat($oParametros->vlr_pis); $oParametros->vlr_cofins = DBSeller_Helper_Number_Format::toFloat($oParametros->vlr_cofins); $oParametros->vlr_ir = DBSeller_Helper_Number_Format::toFloat($oParametros->vlr_ir); $oParametros->vlr_csll = DBSeller_Helper_Number_Format::toFloat($oParametros->vlr_csll); $oParametros->vlr_outras_retencoes = DBSeller_Helper_Number_Format::toFloat($oParametros->vlr_outras_retencoes); $oParametros->vlr_desc_condicionado = DBSeller_Helper_Number_Format::toFloat($oParametros->vlr_desc_condicionado); $oParametros->vlr_desc_incondicionado = DBSeller_Helper_Number_Format::toFloat($oParametros->vlr_desc_incondicionado); /* * Calculo dos os valores */ $oParametros->vlr_base = $oParametros->vlr_servico - $oParametros->s_vl_deducoes; $oParametros->vlr_base -= $oParametros->vlr_desc_incondicionado; $oParametros->vlr_iss = DBSeller_Helper_Number_Format::toFloat($oParametros->vlr_base * ($oParametros->perc_aliquota / 100)); $oParametros->vlr_liquido = $oParametros->vlr_servico; $oParametros->vlr_liquido -= $oParametros->vlr_inss; $oParametros->vlr_liquido -= $oParametros->vlr_pis; $oParametros->vlr_liquido -= $oParametros->vlr_cofins; $oParametros->vlr_liquido -= $oParametros->vlr_ir; $oParametros->vlr_liquido -= $oParametros->vlr_csll; $oParametros->vlr_liquido -= $oParametros->vlr_outras_retencoes; $oParametros->vlr_liquido -= $oParametros->vlr_desc_condicionado; $oParametros->vlr_liquido -= $oParametros->vlr_desc_incondicionado; // Desconta o valor do imposto quando retido pelo tomador if (isset($oParametros->imposto_retido_tomador) && $oParametros->imposto_retido_tomador) { $oParametros->vlr_liquido -= $oParametros->vlr_iss; } // Configura para o formato de moeda PTBR if (isset($oParametros->formatar_valores_ptbr) || $oParametros->formatar_valores_ptbr) { $oParametros->vlr_servico = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_servico); $oParametros->vlr_liquido = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_liquido); $oParametros->s_vl_deducoes = DBSeller_Helper_Number_Format::toMoney($oParametros->s_vl_deducoes); $oParametros->vlr_base = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_base); $oParametros->vlr_iss = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_iss); $oParametros->vlr_pis = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_pis); $oParametros->vlr_cofins = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_cofins); $oParametros->vlr_inss = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_inss); $oParametros->vlr_ir = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_ir); $oParametros->vlr_csll = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_csll); $oParametros->vlr_outras_retencoes = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_outras_retencoes); $oParametros->vlr_desc_condicionado = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_desc_condicionado); $oParametros->vlr_desc_incondicionado = DBSeller_Helper_Number_Format::toMoney($oParametros->vlr_desc_incondicionado); } return $oParametros; }
/** * Valida a importação de arquivo do tipo RPS modelo 1 (ABRASF 1.0) */ public function validaArquivoCarregado() { $oSessao = new Zend_Session_Namespace('nfse'); if (empty($this->oDadosPrefeitura)) { $aParametrosPrefeitura = Administrativo_Model_ParametroPrefeitura::getAll(0, 1); if (count($aParametrosPrefeitura) == 0) { throw new Exception('Parâmetros da prefeitura não configurados. Processamento Abortado'); } $this->oDadosPrefeitura = $aParametrosPrefeitura[0]; } if (empty($this->oArquivoXmlRetorno->lote->numero)) { $this->setMensagemErro('E88'); } if (empty($this->oArquivoXmlRetorno->lote->cnpj)) { $this->setMensagemErro('E46'); } $oContribuinte = Contribuinte_Model_Contribuinte::getByCpfCnpj($this->oArquivoXmlRetorno->lote->cnpj); if (empty($oContribuinte)) { $this->setMensagemErro('E45', 'Contribuinte: ' . $this->oArquivoXmlRetorno->lote->cnpj); } else { if ($oContribuinte->getCgcCpf() != $oSessao->contribuinte->getCgcCpf()) { $this->setMensagemErro('E156', '', true); } } if ($this->oArquivoXmlRetorno->lote->quantidade_rps != count($this->oArquivoXmlRetorno->rps)) { $this->setMensagemErro('E69'); } if (strlen($this->oArquivoXmlRetorno->lote->quantidade_rps) > 4) { $this->setMensagemErro('E72'); } $aNumeracaoRPS = array(); foreach ($this->oArquivoXmlRetorno->rps as $oRps) { if ($this->oArquivoXmlRetorno->lote->inscricao_municipal != $oRps->prestador->inscricao_municipal) { $this->setMensagemErro('E70', 'RPS: ' . $oRps->numero); } if (empty($oRps->numero)) { $this->setMensagemErro('E11'); } else { if (is_int($oRps->numero) && strlen($oRps->numero) > 15) { $this->setMensagemErro('E96', 'RPS: ' . $oRps->numero); } if (in_array($oRps->numero, $aNumeracaoRPS)) { $this->setMensagemErro('E71', 'RPS: ' . $oRps->numero); } $aNumeracaoRPS[$oRps->numero] = NULL; } if (strlen($oRps->serie) > 5) { $this->setMensagemErro('E97', 'RPS: ' . $oRps->numero); } if (empty($oRps->tipo)) { $this->setMensagemErro('E12', 'RPS: ' . $oRps->numero); } if (empty($oRps->natureza_operacao)) { $this->setMensagemErro('E3', 'RPS: ' . $oRps->numero); } else { if (!in_array($oRps->natureza_operacao, array(1, 2, 3, 4, 5, 6))) { $this->setMensagemErro('E144', 'RPS: ' . $oRps->numero); } } if (empty($oRps->optante_simples_nacional)) { $this->setMensagemErro('E8', 'RPS: ' . $oRps->numero); } else { if (!in_array($oRps->optante_simples_nacional, array(1, 2))) { $this->setMensagemErro('E146', 'RPS: ' . $oRps->numero); } } if (empty($oRps->incentivador_cultural)) { $this->setMensagemErro('E9', 'RPS: ' . $oRps->numero); } else { if (!in_array($oRps->incentivador_cultural, array(1, 2))) { $this->setMensagemErro('E147', 'RPS: ' . $oRps->numero); } } if (empty($oRps->data_emissao)) { $this->setMensagemErro('E14', 'RPS: ' . $oRps->numero); } if (!in_array($oRps->status, array(1, 2))) { $this->setMensagemErro('E68', 'RPS: ' . $oRps->numero); } if ($oRps->data_emissao->format('Ymd') > date('Ymd')) { $this->setMensagemErro('E16', 'RPS: ' . $oRps->numero); } if ($oRps->prestador->cnpj == $oRps->tomador->cpf_cnpj) { $this->setMensagemErro('E52', 'RPS: ' . $oRps->numero); } // validação dos valores se float $oNumeroFloat = new Zend_Validate_Float(); if ($oRps->servico->valores->valor_servicos <= 0) { $this->setMensagemErro('E18', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_servicos)) { $this->setMensagemErro('E100', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_servicos <= 0) { $this->setMensagemErro('E18', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_deducoes > $oRps->servico->valores->valor_servicos) { $this->setMensagemErro('E19', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_deducoes < 0) { $this->setMensagemErro('E20', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_deducoes)) { $this->setMensagemErro('E101', 'RPS: ' . $oRps->numero); } $fTotalDesconto = $oRps->servico->valores->desconto_incondicionado + $oRps->servico->valores->desconto_condicionado; if ($fTotalDesconto > $oRps->servico->valores->valor_servicos) { $this->setMensagemErro('E21', 'RPS: ' . $oRps->numero); } if ($fTotalDesconto < 0) { $this->setMensagemErro('E22', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($fTotalDesconto)) { $this->setMensagemErro('E102', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_pis < 0) { $this->setMensagemErro('E23', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_pis)) { $this->setMensagemErro('E103', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_cofins < 0) { $this->setMensagemErro('E24', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_cofins)) { $this->setMensagemErro('E103', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_inss < 0) { $this->setMensagemErro('E25', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_inss)) { $this->setMensagemErro('E103', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_ir < 0) { $this->setMensagemErro('E26', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_ir)) { $this->setMensagemErro('E103', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->valor_csll < 0) { $this->setMensagemErro('E27', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_csll)) { $this->setMensagemErro('E103', 'RPS: ' . $oRps->numero); } if (!in_array($oRps->servico->valores->iss_retido, array(1, 2))) { $this->setMensagemErro('E36', 'RPS: ' . $oRps->numero); } if ($oRps->servico->valores->iss_retido == 1) { if ($oRps->servico->valores->valor_iss_retido <= 0) { $this->setMensagemErro('E40', 'RPS: ' . $oRps->numero); } if (!$oNumeroFloat->isValid($oRps->servico->valores->valor_iss_retido)) { $this->setMensagemErro('E153', 'RPS: ' . $oRps->numero); } if (strlen(DBSeller_Helper_Number_Format::unmaskCPF_CNPJ($oRps->tomador->cpf_cnpj)) != 14) { $this->setMensagemErro('E39', 'RPS: ' . $oRps->numero . ". Serviços tomados por pessoa Física não pode reter iss"); } } if ($oRps->servico->valores->iss_retido == 1 && $oRps->servico->valores->valor_iss_retido > $oRps->servico->valores->valor_servicos) { $this->setMensagemErro('E99', 'RPS: ' . $oRps->numero); } if (empty($oRps->servico->discriminacao)) { $this->setMensagemErro('E41', 'RPS: ' . $oRps->numero); } if (!empty($oContribuinte)) { $iInscricaoMunicipal = $oContribuinte->getInscricaoMunicipal(); $aServicos = Contribuinte_Model_Servico::getByIm($iInscricaoMunicipal); // Valida se o prestador de serviço pode atuar no município if (empty($aServicos)) { $this->setMensagemErro('E17', 'RPS: ' . $oRps->numero); } // Valida se o prestador do serviço é emissor de NFSE $iTipoEmissaoNfse = Contribuinte_Model_ContribuinteAbstract::TIPO_EMISSAO_NOTA; if ($oContribuinte->getTipoEmissao($iInscricaoMunicipal) != $iTipoEmissaoNfse) { $this->setMensagemErro('E138', 'RPS: ' . $oRps->numero); } // Valida a competência $oCompetencia = new Contribuinte_Model_Competencia($oRps->data_emissao->format('Y'), $oRps->data_emissao->format('m'), $oContribuinte); if (empty($oCompetencia) || $oCompetencia->existeGuiaEmitida()) { $this->setMensagemErro(null, "A competência da RPS \"{$oRps->numero}\" é inválida, já existe Guia Emitida."); } } // Valida se a data é maior que a atual if ($oRps->data_emissao->format('Y-m') > date('Y-m')) { $this->setMensagemErro('E2', 'RPS: ' . $oRps->numero); } // Valida se já existe na base de dados $oTipoRps = Administrativo_Model_ParametroPrefeituraRps::getByTipoNfse($oRps->tipo); $iTipoRps = 0; // Valida o tipo de RPS if (is_object($oTipoRps)) { $iTipoRps = $oTipoRps->getEntity()->getTipoEcidade($oRps->tipo); } if ($iTipoRps == 0) { $this->setMensagemErro('E13', 'RPS: ' . $oRps->numero); } // Verifica se a numeração do AIDOF é válida $oAidof = new Administrativo_Model_Aidof(); $lVerificaNumeracaoRps = $oAidof->verificarNumeracaoValidaParaEmissaoDocumento($oSessao->contribuinte->getInscricaoMunicipal(), $oRps->numero, $iTipoRps); if ($lVerificaNumeracaoRps === FALSE) { $this->setMensagemErro('E90', 'RPS: ' . $oRps->numero); } $lExisteRps = Contribuinte_Model_Nota::existeRps($oSessao->contribuinte, $oRps->numero, $oRps->tipo); if ($lExisteRps) { $this->setMensagemErro('E10', 'RPS: ' . $oRps->numero); } if (empty($oRps->servico->atividade)) { $this->setMensagemErro('E31', 'RPS: ' . $oRps->numero); } else { if (strlen($oRps->servico->atividade) > 5) { $this->setMensagemErro('E104', 'RPS: ' . $oRps->numero); } // Valida Grupo de Serviço/Atividade if (!empty($iInscricaoMunicipal)) { $oServico = Contribuinte_Model_Servico::getServicoPorAtividade($iInscricaoMunicipal, $oRps->servico->atividade); if (!$oServico) { $this->setMensagemErro('E30', 'RPS: ' . $oRps->numero); } } } if (empty($oRps->servico->codigo_cnae)) { $this->setMensagemErro('E33', 'RPS: ' . $oRps->numero); } else { if (strlen($oRps->servico->codigo_cnae) > 7) { $this->setMensagemErro('E105', 'RPS: ' . $oRps->numero); } } if (!empty($oRps->servico->ibge_municipio)) { if (strlen($oRps->servico->ibge_municipio) > 7) { $this->setMensagemErro('E108', 'RPS: ' . $oRps->numero); } // 2 = fora do municipio if ($oRps->natureza_operacao == 2 && $oRps->servico->ibge_municipio == $this->oDadosPrefeitura->getIbge()) { $this->setMensagemErro('E110', 'RPS: ' . $oRps->numero); } } // Validar IBGE Prefeitura if ($oRps->natureza_operacao == 1 && $this->oDadosPrefeitura->getIbge() !== $oRps->servico->ibge_municipio) { $this->setMensagemErro('E42', 'RPS: ' . $oRps->numero); } if (strlen($oRps->construcao_civil->art) > 15) { $this->setMensagemErro('E130', 'RPS: ' . $oRps->numero); } if (strlen($oRps->construcao_civil->codigo_obra) > 15) { $this->setMensagemErro('E129', 'Rps: ' . $oRps->numero); } if (count($this->aMensagensErroValidacao) >= 50) { $this->setMensagemErro('E49', '', TRUE); } } // Se existirem erros executa uma exceção com a lista de erros if (count($this->aMensagensErroValidacao) > 0) { return FALSE; } return TRUE; }
/** * 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 }
/** * 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()}"); } }
/** * Carrega dos Dados das Receitas * * @param array $aDadosApuracaoMensal * @return bool */ protected function carregarDadosReceitas(array $aDadosApuracaoMensal) { foreach ($aDadosApuracaoMensal as $iLinha => $sDados) { $aDados = explode('|', $sDados); if (is_array($aDados)) { $iCodigoRegistro = trim($aDados[1]); if ($iCodigoRegistro == '0430') { $oReceita = new StdClass(); $oReceita->iIm = (int) $aDados[2]; $oReceita->sConta = $aDados[3]; $oReceita->sCodTribDesif = $aDados[4]; $oReceita->fValrCredMens = DBSeller_Helper_Number_Format::toFloat($aDados[5]); $oReceita->fValrDebtMens = DBSeller_Helper_Number_Format::toFloat($aDados[6]); $oReceita->fReceDecl = DBSeller_Helper_Number_Format::toFloat($aDados[7]); $oReceita->fDeduReceDecl = DBSeller_Helper_Number_Format::toFloat($aDados[8]); $oReceita->fDescDedu = trim($aDados[9]); $oReceita->fBaseCalc = DBSeller_Helper_Number_Format::toFloat($aDados[10]); $oReceita->fAliqIssqn = DBSeller_Helper_Number_Format::toFloat($aDados[11]); $oReceita->fInctFisc = DBSeller_Helper_Number_Format::toFloat($aDados[12]); $this->aDadosDesifReceitas[$iLinha] = $oReceita; } } } return TRUE; }
/** * Método responsável pelo envio de email no cancelamento ou na solicitação do mesmo * * @param $oNota * @param $oSolicitacao * @param $sJustificativaFiscal * @return null|string */ public function enviarEmailRejeicao($oNota, $oSolicitacao, $sJustificativaFiscal) { //Retorna os usuarios do tipo fiscal $aUsuariosFiscal = Administrativo_Model_Usuario::getByAttribute('tipo', Administrativo_Model_Usuario::USUARIO_TIPO_FISCAL); //Remove o usuário admin do array if ($aUsuariosFiscal[0]->getAdministrativo()) { unset($aUsuariosFiscal[0]); } $aEmailBCC = array(); //Pega os emails cadastrados dos usuarios fiscais foreach ($aUsuariosFiscal as $oUsuarioFiscal) { $sEmail = $oUsuarioFiscal->getEmail(); if (!is_null($sEmail) && $sEmail != '') { $aEmailBCC[] = $sEmail; } } $oValidadorEmail = new Zend_Validate_EmailAddress(); $emailTO = $oNota->getT_email(); $sMensagemRetorno = NULL; $sEmailTomador = $oSolicitacao->getEmailTomador(); if ($oValidadorEmail->isValid($emailTO) || !empty($sEmailTomador) && $oValidadorEmail->isValid($sEmailTomador) || count($aEmailBCC) > 0) { $iInscricaoMunicipal = $oNota->getP_im(); $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($iInscricaoMunicipal); $this->view->nota = $oNota; $this->view->justificativa_fiscal = $sJustificativaFiscal; $this->view->tomadorNome = $oNota->getT_razao_social(); $this->view->prestadorNome = $oContribuinte->getNome(); $this->view->prestadorCnpj = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf()); $this->view->nfseNumero = $oNota->getNota(); $this->view->nfseUrl = $oNota->getUrlVerificacaoNota(); $this->mensagem = $this->view->render('nota/email-rejeicao-cancelamento.phtml'); // Verifica se foi mudado o e-mail do Tomador para enviar uma cópia oculta do cancelamento if (!empty($sEmailTomador) && $sEmailTomador != $oNota->getT_email() && $oValidadorEmail->isValid($sEmailTomador)) { $emailTO = $sEmailTomador; if ($oValidadorEmail->isValid($oNota->getT_email())) { $aEmailBCC[] = $oNota->getT_email(); } $sMensagemRetorno = "Cancelamento rejeitado com sucesso.<br>Email foi enviado para {$emailTO}"; } // Caso não haja email cadastrado na nota e nem email informado no cancelamento, // ou se for uma solicitação de cancelamento, o primeiro email de fiscal é colocado // como destinatário principal para que seja possível o envio if (is_null($emailTO) || empty($emailTO)) { $emailTO = $aEmailBCC[0]; unset($aEmailBCC[0]); $sMensagemRetorno = "Cancelamento efetuado com sucesso.<br>Email foi enviado para {$emailTO}"; } // Envia Email DBSeller_Helper_Mail_Mail::send($emailTO, "Nota Fiscal Eletrônica nº {$oNota->getNota()}", $this->mensagem, 'utf-8', $aEmailBCC); } return $sMensagemRetorno; }
/** * Método para retornar os dados das contas em formato json para a DBJqGrid * * @param array $aParametros * @param bool $bDetalhes * @return array */ protected function retornaContasGuiaDesif(array $aParametros, $bDetalhes = FALSE) { $aRecord = array(); $iLimit = $aParametros['rows']; $iPage = $aParametros['page']; $sSord = $aParametros['sord']; $oContribuinte = $this->_session->contribuinte; $sCodigosContribuintes = NULL; $oPaginatorAdapter = new DBSeller_Controller_Paginator(Contribuinte_Model_ImportacaoDesif::getQuery(), 'Contribuinte_Model_ImportacaoDesif', 'Contribuinte\\ImportacaoDesif'); foreach ($oContribuinte->getContribuintes() as $iIdContribuinte) { if ($sCodigosContribuintes == NULL) { $sCodigosContribuintes .= $iIdContribuinte; } else { $sCodigosContribuintes .= ',' . $iIdContribuinte; } } $oPaginatorAdapter->where("e.contribuinte in ({$sCodigosContribuintes})"); if (isset($aParametros['id'])) { $oPaginatorAdapter->andWhere("e.id = {$aParametros['id']}"); } $oPaginatorAdapter->orderBy("e.competencia_inicial, e.competencia_final", $sSord); /** * Monta a paginação do GridPanel */ $oResultado = new Zend_Paginator($oPaginatorAdapter); $oResultado->setItemCountPerPage($iLimit); $oResultado->setCurrentPageNumber($iPage); foreach ($oResultado as $oDesif) { $aValores = Contribuinte_Model_ImportacaoDesif::getTotalReceitasGuia($oDesif->getId(), $bDetalhes); /** * Verifica se for para exibir as aliquotas detalhadas */ if ($bDetalhes) { foreach ($aValores['aliquotas_issqn'] as $iAliqIssqn => $aReceitas) { $aRecord[] = array('id_importacao_desif' => $oDesif->getId(), 'aliq_issqn' => DBSeller_Helper_Number_Format::toFloat($iAliqIssqn), 'total_receita' => DBSeller_Helper_Number_Format::toMoney($aReceitas['total_receita'], 2, 'R$ '), 'total_iss' => DBSeller_Helper_Number_Format::toMoney($aReceitas['total_iss'], 2, 'R$ ')); } } else { if ($aValores['total_receita'] > 0 && $aValores['total_iss'] > 0) { $aRecord[] = array('id' => $oDesif->getId(), 'competencia_inicial' => $oDesif->getCompetenciaInicial(), 'competencia_final' => $oDesif->getCompetenciaFinal(), 'total_receita' => DBSeller_Helper_Number_Format::toMoney($aValores['total_receita'], 2, 'R$ '), 'total_iss' => DBSeller_Helper_Number_Format::toMoney($aValores['total_iss'], 2, 'R$ '), 'aValores' => $aValores); } } } $iTotal = $oResultado->getTotalItemCount(); $iTotalPages = $iTotal > 0 && $iLimit > 0 ? ceil($iTotal / $iLimit) : 0; /** * Parametros de retorno do AJAX */ $aRetornoJson = array('total' => $iTotalPages, 'page' => $iPage, 'records' => $iTotal, 'rows' => $aRecord); return $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 monta o pdf para o relatório de guias * * @return array $aRetorno */ public function montaRelatorio() { $sNomeArquivo = '/relatorio_guias_' . date('YmsdHis') . '.pdf'; $sCaminhoArquivo = TEMP_PATH . $sNomeArquivo; $this->Open($sCaminhoArquivo); $this->AddPage(); $this->SetFont('Arial', 'B', 8); $this->Cell(20, 6, utf8_decode('Competência'), "T L R B", 0, 'C'); $this->Cell(23, 6, utf8_decode('Valor Total'), "T L R B", 0, 'C'); $this->Cell(23, 6, utf8_decode('Valor ISS'), "T L R B", 0, 'C'); $this->Cell(70, 6, utf8_decode('Contribuinte'), "T L R B", 0, 'C'); $this->Cell(20, 6, utf8_decode('Inscrição'), "T L R B", 0, 'C'); $this->Cell(35, 6, utf8_decode('CPF/CNPJ'), "T L R B", 1, 'C'); $this->SetFont('Arial', '', 8); foreach ($this->aDados as $oDados) { $oDados->cnpj = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oDados->cnpj); if (strlen($oDados->razaoSocial) > 35) { $oDados->razaoSocial = trim(substr($oDados->razaoSocial, 0, 35)) . "..."; } $this->Cell(20, 6, utf8_decode($oDados->competencia), "T L R B", 0, 'C'); $this->Cell(23, 6, utf8_decode($oDados->valorTotal), "T L R B", 0, 'C'); $this->Cell(23, 6, utf8_decode($oDados->valorIss), "T L R B", 0, 'C'); $this->Cell(70, 6, utf8_decode(trim($oDados->razaoSocial)), "T L R B", 0, 'L'); $this->Cell(20, 6, utf8_decode($oDados->im), "T L R B", 0, 'C'); $this->Cell(35, 6, utf8_decode($oDados->cnpj), "T L R B", 1, 'C'); } $this->Output(); // Opções de retorno $aRetorno = array('location' => $sCaminhoArquivo, 'filename' => $sNomeArquivo, 'type' => 'application/pdf'); return $aRetorno; }
/** * Método que cria relatório de importação DES-If * @param array $aReceitas */ public function setDadosReceitas($aReceitas) { // Notas Válidas $this->SetFont('Arial', 'B', 8); $this->SetFillColor(201, 201, 201); $this->Cell(0, 5, utf8_decode('RECEITAS'), 1, 1, 'C', TRUE); $this->Ln(1); $aLarguraCelulas = array(25, 77); $this->SetFillColor(230, 230, 230); $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Código Cosif'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[1], 5, utf8_decode('Descrição da Conta'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Aliq.(%)'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Ins. Fiscal(R$)'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Total Cred.(R$)'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Total Debto.(R$)'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Receita (R$)'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Ded. Receita(R$)'), 1, NULL, NULL, TRUE); $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Base(R$)'), 1, NULL, NULL, TRUE); $this->SetFont('Arial', NULL, 8); if (count($aReceitas) > 0) { foreach ($aReceitas as $iChave => $oReceita) { if (strlen($oReceita['descricao_conta']) >= 40) { $oReceita['descricao_conta'] = substr($oReceita['descricao_conta'], 0, 40) . "..."; } $oReceita['aliq_issqn'] = DBSeller_Helper_Number_Format::toMoney($oReceita['aliq_issqn'], 2, NULL, '%'); $oReceita['inct_fisc'] = DBSeller_Helper_Number_Format::toMoney($oReceita['inct_fisc'], 2, 'R$'); $oReceita['valr_cred_mens'] = DBSeller_Helper_Number_Format::toMoney($oReceita['valr_cred_mens'], 2, 'R$'); $oReceita['valr_debt_mens'] = DBSeller_Helper_Number_Format::toMoney($oReceita['valr_debt_mens'], 2, 'R$'); $oReceita['rece_decl'] = DBSeller_Helper_Number_Format::toMoney($oReceita['rece_decl'], 2, 'R$'); $oReceita['dedu_rece_decl'] = DBSeller_Helper_Number_Format::toMoney($oReceita['dedu_rece_decl'], 2, 'R$'); $oReceita['base_calc'] = DBSeller_Helper_Number_Format::toMoney($oReceita['base_calc'], 2, 'R$'); $this->Ln(); $this->Cell($aLarguraCelulas[0], 5, utf8_decode($oReceita['conta_abrasf']), 1, NULL, NULL); $this->Cell($aLarguraCelulas[1], 5, utf8_decode($oReceita['descricao_conta']), 1, NULL, NULL); $this->Cell($aLarguraCelulas[0], 5, utf8_decode($oReceita['aliq_issqn']), 1, NULL, NULL); $this->Cell($aLarguraCelulas[0], 5, utf8_decode($oReceita['inct_fisc']), 1, NULL, NULL); $this->Cell($aLarguraCelulas[0], 5, utf8_decode($oReceita['valr_cred_mens']), 1, NULL, NULL); $this->Cell($aLarguraCelulas[0], 5, utf8_decode($oReceita['valr_debt_mens']), 1, NULL, NULL); $this->Cell($aLarguraCelulas[0], 5, utf8_decode($oReceita['rece_decl']), 1, NULL, NULL); $this->Cell($aLarguraCelulas[0], 5, utf8_decode($oReceita['dedu_rece_decl']), 1, NULL, NULL); $this->Cell($aLarguraCelulas[0], 5, utf8_decode($oReceita['base_calc']), 1, NULL, NULL); } } else { $this->Ln(); $this->Cell(0, 5, utf8_decode('Sem receitas neste Período'), 1, NULL, 'C'); } }