/**
  * 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;
 }
 /**
  * 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;
 }
 /**
  * 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();
 }
예제 #4
0
 /**
  * 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;
 }
예제 #5
0
 /**
  * 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;
 }
 /**
  * Acao Salvar DMS
  *
  * @return boolean
  */
 public function emissaoManualSaidaSalvarAction()
 {
     // Perfil do usuario logado
     $iIdPerfil = $this->oUsuario->getPerfil()->getId();
     // Dados Request
     $aDados = $this->getRequest()->getParams();
     // Prestador eventual
     if ($iIdPerfil == 6) {
         $oForm = new Contribuinte_Form_DmsSaidaEventual();
     } else {
         $oForm = new Contribuinte_Form_DmsSaida();
     }
     // Popula o formulario
     $oForm->populate($aDados);
     // Valida o formulario
     if ($oForm->isValid($aDados)) {
         // Verifica se ja existe uma nota com o numero e se tem AIDOF
         self::emissaoManualSaidaVerificarDocumentoAction();
         // Valida se a data da nota esta no mes corrente
         $oValidaDataNota = new DBSeller_Validator_DateCurrentMonth();
         $oValidaDataNota->setMes($aDados['mes_comp']);
         $oValidaDataNota->setAno($aDados['ano_comp']);
         if (!$oValidaDataNota->isValid($aDados['s_nota_data'])) {
             $aErros = $oValidaDataNota->getMessages();
             $aRetornoJson['status'] = FALSE;
             $aRetornoJson['error'][] = $aErros[$oValidaDataNota::COMPETENCIA_INVALIDA];
             echo $this->getHelper('json')->sendJson($aRetornoJson);
             exit;
         }
         // Aplica filtro de mascaras
         $aDados['s_cpf_cnpj'] = $oForm->s_cpf_cnpj->getValue();
         // SALVAR DADOS DA DMS (INI)
         if (isset($aDados['id_dms']) && !empty($aDados['id_dms'])) {
             $oDms = Contribuinte_Model_Dms::getById($aDados['id_dms']);
         } else {
             $oDms = new Contribuinte_Model_Dms();
             $oDms->setAnoCompetencia($aDados['ano_comp']);
             $oDms->setMesCompetencia($aDados['mes_comp']);
             $oDms->setOperacao(Contribuinte_Model_Dms::SAIDA);
         }
         if (!is_object($oDms)) {
             $aRetornoJson['status'] = FALSE;
             $aRetornoJson['error'][] = $this->translate->_('Código DMS não encontrado.');
             echo $this->getHelper('json')->sendJson($aRetornoJson);
             exit;
         }
         $oDms->setIdContribuinte($this->oContribuinte->getIdUsuarioContribuinte());
         $oDms->setIdUsuario($this->usuarioLogado->getId());
         $oDms->setDataOperacao(new DateTime());
         $oDms->setStatus('aberto');
         // SALVAR DADOS DA DMS (FIM)
         // SALVAR DADOS DA NOTA (INI)
         if (isset($aDados['id']) && !empty($aDados['id'])) {
             $oDmsNota = Contribuinte_Model_DmsNota::getById($aDados['id']);
         } else {
             $oDmsNota = new Contribuinte_Model_DmsNota();
         }
         if (!is_object($oDmsNota)) {
             $aRetornoJson['status'] = FALSE;
             $aRetornoJson['error'][] = $this->translate->_('Código Dms Nota não encontrado.');
             echo $this->getHelper('json')->sendJson($aRetornoJson);
             exit;
         }
         // Dados Nota
         $oDataNota = new DateTime(str_replace('/', '-', $aDados['s_nota_data']));
         $oDataNota->format('Y-m-d');
         $oDmsNota->setNotaNumero($aDados['s_nota']);
         $oDmsNota->setNotaSerie($aDados['s_nota_serie']);
         $oDmsNota->setNotaData($oDataNota);
         $oDmsNota->setSituacaoDocumento($aDados['situacao_documento']);
         $oDmsNota->setNaturezaOperacao($aDados['natureza_operacao']);
         $oDmsNota->setEmiteGuia(TRUE);
         $oDmsNota->setServicoImpostoRetido(FALSE);
         // Verifica o flag para substituição tributária
         if (isset($aDados['s_imposto_retido']) && $aDados['s_imposto_retido'] == 1) {
             $oDmsNota->setServicoImpostoRetido(TRUE);
         }
         // Prestador eventual
         if ($iIdPerfil != 6) {
             $oGrupoDocumento = Contribuinte_Model_Nota::getTipoNota($aDados['tipo_documento']);
             $oDmsNota->setGrupoDocumento($oGrupoDocumento->codigo_grupo);
             $oDmsNota->setTipoDocumento($aDados['tipo_documento']);
             /*
              * Verifica se emite guia:
              *   Se a natureza da operacao for 2 (fora da prefeitura) não emite guia
              *   Se for substituto tributário (retido pelo tomador) não emite guia
              */
             if ($aDados['natureza_operacao'] == 2 || $aDados['s_imposto_retido']) {
                 $oDmsNota->setEmiteGuia(FALSE);
             } else {
                 // Configura o parametro para emitir a guia
                 $oChecaEmissaoGuiaStdClass = new stdClass();
                 $oChecaEmissaoGuiaStdClass->data = $aDados['s_nota_data'];
                 $oChecaEmissaoGuiaStdClass->inscricao_municipal = $this->oContribuinte->getInscricaoMunicipal();
                 $oDmsNota->setEmiteGuia(Contribuinte_Model_EmissorGuia::checarEmissaoGuia($oChecaEmissaoGuiaStdClass));
             }
         } else {
             $oDmsNota->setTipoDocumentoDescricao($aDados['tipo_documento_descricao']);
         }
         // Dados Servico
         $oDataServico = new DateTime(str_replace('/', '-', $aDados['s_data']));
         $oDataServico->format('Y-m-d');
         // Formatando dados
         $sServicoValorPagar = DBSeller_Helper_Number_Format::toFloat($aDados['s_valor_bruto']);
         $sServicoValorDeducao = DBSeller_Helper_Number_Format::toFloat($aDados['s_valor_deducao']);
         $sServicoValorCondicionado = DBSeller_Helper_Number_Format::toFloat($aDados['s_vl_condicionado']);
         $sServicoDescontoIncondicionado = DBSeller_Helper_Number_Format::toFloat($aDados['s_vl_desc_incondicionado']);
         $sServicoAliquota = DBSeller_Helper_Number_Format::toFloat($aDados['s_aliquota']);
         $sServicoBaseCalculo = DBSeller_Helper_Number_Format::toFloat($aDados['s_base_calculo']);
         $sServicoValorImposto = DBSeller_Helper_Number_Format::toFloat($aDados['s_valor_imposto']);
         $sServicoValorLiquido = DBSeller_Helper_Number_Format::toFloat($aDados['s_valor_pagar']);
         // Populando o documento de dms
         $oDmsNota->setNumpre(0);
         $oDmsNota->setServicoData($oDataServico);
         $oDmsNota->setServicoImpostoRetido($aDados['s_imposto_retido']);
         $oDmsNota->setServicoValorPagar($sServicoValorPagar);
         $oDmsNota->setServicoValorDeducao($sServicoValorDeducao);
         $oDmsNota->setServicoValorCondicionado($sServicoValorCondicionado);
         $oDmsNota->setServicoDescontoIncondicionado($sServicoDescontoIncondicionado);
         $oDmsNota->setServicoAliquota($sServicoAliquota);
         $oDmsNota->setServicoBaseCalculo($sServicoBaseCalculo);
         $oDmsNota->setServicoValorImposto($sServicoValorImposto);
         $oDmsNota->setServicoValorLiquido($sServicoValorLiquido);
         $oDmsNota->setServicoCodigoCnae($aDados['s_dados_cod_cnae']);
         $oDmsNota->setServicoCodigoServico($aDados['s_servico_prestado']);
         $oDmsNota->setDescricaoServico($aDados['s_observacao']);
         $oDmsNota->setServicoCodigoObra($aDados['s_codigo_obra']);
         $oDmsNota->setServicoArt($aDados['s_art']);
         $oDmsNota->setServicoInformacoesComplementares($aDados['s_informacoes_complementares']);
         // Dados Prestador eventual
         if ($iIdPerfil == 6) {
             $oDadosPrestador = Contribuinte_Model_ContribuinteEventual::getById($this->oContribuinte->getIdUsuarioContribuinte());
             // Salva o código CNAE do serviço quando for prestador eventual
             $aServicoPrestado = Contribuinte_Model_Servico::getByCodServico($aDados['s_servico_prestado'], FALSE);
             $oServicoPrestado = is_array($aServicoPrestado) ? reset($aServicoPrestado) : $aServicoPrestado;
             $oDmsNota->setServicoCodigoCnae($oServicoPrestado->attr('estrut_cnae'));
         } else {
             $oDadosPrestador = Contribuinte_Model_Contribuinte::getById($this->oContribuinte->getIdUsuarioContribuinte());
         }
         $oDmsNota->setPrestadorCpfCnpj($oDadosPrestador->getCgcCpf());
         $oDmsNota->setPrestadorInscricaoMunicipal($oDadosPrestador->getInscricaoMunicipal());
         $oDmsNota->setPrestadorInscricaoEstadual($oDadosPrestador->getInscricaoEstadual());
         $oDmsNota->setPrestadorRazaoSocial($oDadosPrestador->getNome());
         $oDmsNota->setPrestadorNomeFantasia($oDadosPrestador->getNomeFantasia());
         $oDmsNota->setPrestadorEnderecoRua($oDadosPrestador->getDescricaoLogradouro());
         $oDmsNota->setPrestadorEnderecoNumero($oDadosPrestador->getLogradouroNumero());
         $oDmsNota->setPrestadorEnderecoComplemento($oDadosPrestador->getLogradouroComplemento());
         $oDmsNota->setPrestadorEnderecoBairro($oDadosPrestador->getLogradouroBairro());
         $oDmsNota->setPrestadorEnderecoCodigoMunicipio($oDadosPrestador->getCodigoIbgeMunicipio());
         $oDmsNota->setPrestadorEnderecoEstado($oDadosPrestador->getEstado());
         $oDmsNota->setPrestadorEnderecoCodigoPais($oDadosPrestador->getCodigoPais());
         $oDmsNota->setPrestadorEnderecoCEP($oDadosPrestador->getCep());
         $oDmsNota->setPrestadorTelefone($oDadosPrestador->getTelefone());
         $oDmsNota->setPrestadorEmail($oDadosPrestador->getEmail());
         $oDmsNota->setIdUsuario($this->usuarioLogado->getId());
         $oDmsNota->setIdContribuinte($this->oContribuinte->getIdUsuarioContribuinte());
         // Dados Tomador
         if ($aDados['s_cpf_cnpj'] != NULL) {
             $oDadosTomador = Contribuinte_Model_Empresa::getByCgcCpf($aDados['s_cpf_cnpj']);
         }
         if ($aDados['s_imposto_retido'] && (!isset($oDadosTomador) || !isset($oDadosTomador->eCidade))) {
             $sMensagem = 'Tomador com CPF/CNPJ %s não cadastrado.';
             $sMensagemParametro = '"<b>' . $this->getRequest()->getParam('s_cpf_cnpj') . '</b>"';
             $aRetornoJson['status'] = FALSE;
             $aRetornoJson['fields'] = array_keys($oForm->getMessages());
             $aRetornoJson['error'][] = sprintf($this->translate->_($sMensagem), $sMensagemParametro);
             echo $this->getHelper('json')->sendJson($aRetornoJson);
             exit;
         }
         if (isset($oDadosTomador) && is_object($oDadosTomador) && isset($oDadosTomador->eCidade)) {
             $oDadosTomadorEcidade = $oDadosTomador->eCidade[0];
             $oDmsNota->setTomadorCpfCnpj($aDados['s_cpf_cnpj']);
             $oDmsNota->setTomadorNomeFantasia($oDadosTomadorEcidade->attr('nome_fanta'));
             $oDmsNota->setTomadorRazaoSocial($oDadosTomadorEcidade->attr('nome'));
             $oDmsNota->setTomadorInscricaoMunicipal($oDadosTomadorEcidade->attr('inscricao'));
             $oDmsNota->setTomadorInscricaoEstadual($oDadosTomadorEcidade->attr('inscr_est'));
             $oDmsNota->setTomadorEnderecoRua($oDadosTomadorEcidade->attr('endereco'));
             $oDmsNota->setTomadorEnderecoNumero($oDadosTomadorEcidade->attr('numero'));
             $oDmsNota->setTomadorEnderecoComplemento($oDadosTomadorEcidade->attr('complemento'));
             $oDmsNota->setTomadorEnderecoBairro($oDadosTomadorEcidade->attr('bairro'));
             $oDmsNota->setTomadorEnderecoCodigoMunicipio($oDadosTomadorEcidade->attr('cod_ibge'));
             $oDmsNota->setTomadorEnderecoEstado($oDadosTomadorEcidade->attr('uf'));
             $oDmsNota->setTomadorEnderecoCodigoPais($oDadosTomadorEcidade->attr('cod_pais'));
             $oDmsNota->setTomadorEnderecoCEP($oDadosTomadorEcidade->attr('cep'));
             $oDmsNota->setTomadorTelefone($oDadosTomadorEcidade->attr('telefone'));
             $oDmsNota->setTomadorEmail($oDadosTomadorEcidade->attr('email'));
         } else {
             if ($aDados['s_cpf_cnpj'] && (!isset($oDadosTomador) || !isset($oDadosTomador->eNota))) {
                 $oDadosTomadorNFSE = new Contribuinte_Model_EmpresaBase();
                 $aDadosTomador['t_cnpjcpf'] = $aDados['s_cpf_cnpj'];
                 $aDadosTomador['t_razao_social'] = $aDados['s_razao_social'];
                 $oDadosTomadorNFSE->persist($aDadosTomador);
             }
             $oDmsNota->setTomadorInscricaoMunicipal($aDados['s_inscricao_municipal']);
             $oDmsNota->setTomadorCpfCnpj($aDados['s_cpf_cnpj']);
             $oDmsNota->setTomadorRazaoSocial($aDados['s_razao_social']);
         }
         // Vincula o DMS ao documento
         $oDmsNota->setDms($oDms->getEntity());
         // Adiciona o documento ao DMS
         $oDms->addDmsNotas($oDmsNota->getEntity());
         // Salva o DMS e o Documento
         $iCodigoDms = $oDms->persist();
         // Configura a mensagem de sucesso
         $aRetornoJson['status'] = TRUE;
         $aRetornoJson['success'] = $this->translate->_('Documento lançado com sucesso!');
         $aRetornoJson['id_dms'] = $iCodigoDms;
         // Configura a mensagem para edição
         if (isset($aDados['id']) && $aDados['id']) {
             $aRetornoJson['success'] = $this->translate->_('Documento alterado com sucesso!');
             $aRetornoJson['url'] = $this->view->baseUrl("/contribuinte/dms/emissao-manual-saida/id_dms/{$iCodigoDms}");
         }
     } else {
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['fields'] = array_keys($oForm->getMessages());
         $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.');
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
예제 #7
0
 /**
  * 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;
 }