/** * Gera a guia de DES-IF no eCidade * * @param Contribuinte_Model_Contribuinte $oContribuinte * @param $iAnoCompetencia * @param $iMesCompetencia * @param DateTime $oDataPagamento * @param $fAliquota * @param bool $lGerarPdf * @return bool * @throws Exception */ public static function gerarGuiaDesif(Contribuinte_Model_Contribuinte $oContribuinte, $iAnoCompetencia, $iMesCompetencia, DateTime $oDataPagamento, $fAliquota, $lGerarPdf = TRUE) { // Verifica se já possui uma guia emitida $lTemGuiaEmitida = Contribuinte_Model_Guia::existeGuia($oContribuinte, $iMesCompetencia, $iAnoCompetencia, Contribuinte_Model_Guia::$DOCUMENTO_ORIGEM_NFSE); if ($lTemGuiaEmitida) { throw new Exception('Guia já emitida.'); } $aReceitasDesif = Contribuinte_Model_ImportacaoDesif::getTotalReceitasCompetencia($oContribuinte, $iAnoCompetencia, $iMesCompetencia, $fAliquota); $sDataPagamento = $oDataPagamento->format('d/m/Y'); $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($oContribuinte->getIdUsuarioContribuinte()); $oValidateDate = new Zend_Validate_Date(); $sData = DBSeller_Helper_Date_Date::invertDate($sDataPagamento); $sDataValidacao = DBSeller_Helper_Date_Date::invertDate($sDataPagamento, ''); if ($sDataValidacao < date('Ymd')) { throw new Exception('Informe uma data posterior a data atual!'); } if ($oValidateDate->isValid($sDataPagamento)) { $oData = new DateTime($sData); } else { throw new Exception('Informe uma data para pagamento válida!'); } /** * Alterado o parametro de envio do cpf_cnpj para o e-cidade pois não estava sendo passado corretamente. */ $iCpfCnpj = $oUsuarioContribuinte->getCnpjCpf(); $iCpf = strlen($iCpfCnpj) == 11 ? $iCpfCnpj : NULL; $iCnpj = strlen($iCpfCnpj) == 14 ? $iCpfCnpj : NULL; $oGuiaGerar = new StdClass(); $oGuiaGerar->id_importacao_desif = $aReceitasDesif->id_importacao_desif; $oGuiaGerar->id_importacao_desif_conta = $aReceitasDesif->id_importacao_desif_conta; $oGuiaGerar->inscricao_municipal = $oUsuarioContribuinte->getIm(); $oGuiaGerar->cpf = $iCpf; $oGuiaGerar->cnpj = $iCnpj; $oGuiaGerar->numcgm = $oUsuarioContribuinte->getCgm(); $oGuiaGerar->mes_competencia = $iMesCompetencia; $oGuiaGerar->ano_competencia = $iAnoCompetencia; $aListaReceitas = array(); foreach ($aReceitasDesif->aliquotas_issqn as $fAliquota => $aDadosReceita) { $sNumeroNotaFiscal = date('YmdHs', time()) . $aReceitasDesif->id_importacao_desif . str_replace('.', '', $fAliquota); $oReceita = new stdClass(); $oReceita->numero_nota_fiscal = $sNumeroNotaFiscal; $oReceita->codigo_documento = $aReceitasDesif->id_importacao_desif; $oReceita->data_nota_fiscal = $aReceitasDesif->data_importacao->format('Y-m-d'); $oReceita->serie_nota_fiscal = NULL; $oReceita->valor_base_calculo = $aDadosReceita['total_receita']; $oReceita->valor_deducao = 0; $oReceita->valor_imposto_retido = $aDadosReceita['total_iss']; $oReceita->valor_servico_prestado = $aDadosReceita['total_receita']; $oReceita->aliquota = $fAliquota; $oReceita->data_pagamento = $sDataPagamento; $oReceita->retido = $aDadosReceita['total_iss']; $oReceita->situacao = 1; $oReceita->status = 1; $oReceita->servico_prestado = 'Receita Importada Desif'; $oReceita->cnpj_prestador = $oUsuarioContribuinte->getCnpjCpf(); $oReceita->inscricao_prestador = $oUsuarioContribuinte->getIm(); $oReceita->nome = $oContribuinte->getNome(); $oReceita->operacao = 2; $aListaReceitas[] = $oReceita; } $oGuiaGerar->notas = $aListaReceitas; $aDados = array('planilha' => $oGuiaGerar, 'data_pagamento' => $oData->format('Y-m-d'), 'tipo_debito' => Contribuinte_Model_GuiaEcidade::TIPO_DEBITO_VARIAVEL); $oGuiaGerada = WebService_Model_Ecidade::processar('geraDebitoIssContribribuinte', $aDados); $oGuia = new Contribuinte_Model_Guia(); $oGuia->gerarGuiaDesifPrestador($oContribuinte, $oGuiaGerada, $iAnoCompetencia, $iMesCompetencia, $oDataPagamento); $sArquivoGuiaPdf = $oGuiaGerada->debito->dados_boleto->arquivo_guia; if ($lGerarPdf) { $oGuiaGerada->arquivo_guia = Contribuinte_Model_GuiaEcidade::salvarPdf($sArquivoGuiaPdf, 'guia_substituto'); } return $oGuiaGerada; }