/** * Método que verifica a integridade dos valores informados nos arquivos * @return bool * @throws Exception */ public function validacao() { // Verifica o contribuinte if (empty($this->oContribuinte)) { throw new Exception("Contribuinte não informado!"); } $sCnpjContribuinte = $this->oContribuinte->getEntity()->getCnpjCpf(); if (substr($sCnpjContribuinte, 0, 8) != $this->oDadosDesif->sCnpj) { throw new Exception('O contribuinte informado inválido!'); } if (empty($this->oDadosDesif->sCompetenciaInicial) || empty($this->oDadosDesif->sCompetenciaFinal)) { throw new Exception('Informe a competencia do arquivo DES-IF!'); } if (empty($this->oDadosDesif->sVersao)) { throw new Exception('Informe o código da versão do DES-IF!'); } // Verifica a competencia informada (0000) $oImportacaoDesif = Contribuinte_Model_ImportacaoDesif::getByAttributes(array('competencia_inicial' => $this->oDadosDesif->sCompetenciaInicial, 'competencia_final' => $this->oDadosDesif->sCompetenciaFinal, 'contribuinte' => $this->oContribuinte->getEntity())); if (!empty($oImportacaoDesif)) { throw new Exception("A competencia de {$this->oDadosDesif->sCompetenciaInicial} à {$this->oDadosDesif->sCompetenciaFinal} já foi importada!"); } if (empty($this->aDadosDesifContas)) { throw new Exception('Dados de conta(0100) estão incorretos!'); } if (empty($this->aDadosDesifTarifas)) { throw new Exception('Dados de receitas(0430) estão incorretos!'); } if (empty($this->aDadosDesifReceitas)) { throw new Exception('Dados de tarifas bancárias(0200) estão incorretos!'); } // Verifica os campos das contas foreach ($this->aDadosDesifContas as $iLinha => $oDesifConta) { if (empty($oDesifConta->sConta)) { throw new Exception('Código da conta não informada na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifConta->sDescricaoConta)) { throw new Exception('Descrição da conta não informada na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifConta->sNome)) { throw new Exception('Nome da conta não informada na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifConta->sContaCosif)) { throw new Exception('Código Conta COS-IF não informada na linha ' . ($iLinha + 1) . '!'); } } // Verifica campos das tarifas bancarias foreach ($this->aDadosDesifTarifas as $iLinha => $oDesifTarifas) { if (empty($oDesifTarifas->sDescricao)) { throw new Exception('Descrição da tarifa bancária não informada na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifTarifas->sConta)) { throw new Exception('Código da conta não informada na tarifa na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifTarifas->sTarifaConta)) { throw new Exception('Código da tarifa bancária não informada na linha ' . ($iLinha + 1) . '!'); } } // Verifica os valores das receitas foreach ($this->aDadosDesifReceitas as $iLinha => $oDesifReceita) { // Verifica se a Inscrição Municipal informada no arquivo é igual ao contribuinte da sessão if ($oDesifReceita->iIm != $this->oContribuinte->getIm()) { throw new Exception('Inscrição municipal informadana é diferente do contribuinte logado na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifReceita->sConta)) { throw new Exception('Código da conta(Sub_Titu) não informada na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifReceita->sCodTribDesif)) { throw new Exception('Código de tributação DES-IF(Cod_Trib_DES-IF) não informado na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifReceita->fValrCredMens)) { throw new Exception('Valor total dos lançamentos a crédito(Valr_Cred_Mens) não informado na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifReceita->fValrDebtMens)) { throw new Exception('Valor total dos lançamentos a débito(Valr_Debt_Mens) não informado na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifReceita->fReceDecl)) { throw new Exception('Valor da receita tributável pelo ISSQN(Rece_Decl) não informado na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifReceita->fBaseCalc)) { throw new Exception('Valor da base de cálculo do ISSQN(Base_Calc) não informado na linha ' . ($iLinha + 1) . '!'); } if (empty($oDesifReceita->fAliqIssqn)) { throw new Exception('Alíquota que se aplica à base de cálculo(Aliq_ISSQN) não informado na linha ' . ($iLinha + 1) . '!'); } } return TRUE; }
/** * @param Contribuinte_Model_Contribuinte $oContribuinte * @param $iAno * @param $iMes * @param null $fAliquota * @return object */ public static function getTotalReceitasCompetencia(Contribuinte_Model_Contribuinte $oContribuinte, $iAno, $iMes, $fAliquota = NULL) { $aReceitasGuia = array(); $aParametros = array('contribuinte' => $oContribuinte->getContribuintes(), 'competencia_inicial' => "{$iAno}{$iMes}"); $aImportacaoDesif = Contribuinte_Model_ImportacaoDesif::getByAttributes($aParametros); /** * Verifica se retornou uma importacao desif */ if (isset($aImportacaoDesif[0])) { $oImportacaoDesif = $aImportacaoDesif[0]->getEntity(); $aReceitasGuia = Contribuinte_Model_ImportacaoDesif::getTotalReceitasGuia($oImportacaoDesif->getId(), TRUE, $fAliquota); } return (object) $aReceitasGuia; }