/** * 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; }
/** * 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; }
/** * Acao Salvar DMS Entrada * * @return mixed bool|json */ public function emissaoManualEntradaSalvarAction() { // Dados Request $aDados = $this->getRequest()->getParams(); // Formulario $oForm = new Contribuinte_Form_DmsEntrada(); $oForm->populate($aDados); // Valida o formulario if ($oForm->isValid($aDados)) { // Verifica se ja existe uma nota com o numero e se tem AIDOF self::emissaoManualEntradaVerificarDocumentoAction(); // 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->getElement('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('e'); } 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->setDataOperacao(new DateTime()); $oDms->setStatus('aberto'); $oDms->setIdContribuinte($this->oContribuinte->getIdUsuarioContribuinte()); $oDms->setIdUsuario($this->usuarioLogado->getId()); // 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 $oGrupoDocumento = Contribuinte_model_nota::getTipoNota($aDados['tipo_documento']); $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->setGrupoDocumento($oGrupoDocumento->codigo_grupo); $oDmsNota->setTipoDocumento($aDados['tipo_documento']); $oDmsNota->setSituacaoDocumento($aDados['situacao_documento']); $oDmsNota->setNaturezaOperacao($aDados['natureza_operacao']); $oDmsNota->setEmiteGuia(TRUE); $oDmsNota->setServicoImpostoRetido($aDados['s_imposto_retido'] == 1); // Se a natureza da operação for 2 (fora da prefeitura), NÃO emite guia if ($aDados['natureza_operacao'] == 2) { $oDmsNota->setEmiteGuia(FALSE); } // Dados Servico $oDataServico = new DateTime(str_replace('/', '-', $aDados['s_data'])); $oDataServico->format('Y-m-d'); // Formata dados $sServicoValorPagar = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_bruto']); $sServicoValorDeducao = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_deducao']); $sServicoValorCondicionado = DBSeller_Helper_Number_Format::toDataBase($aDados['s_vl_condicionado']); $sServicoDescontoIncondicionado = DBSeller_Helper_Number_Format::toDataBase($aDados['s_vl_desc_incondicionado']); $sServicoAliquota = str_replace(',', '.', $aDados['s_aliquota']); $sServicoBaseCalculo = DBSeller_Helper_Number_Format::toDataBase($aDados['s_base_calculo']); $sServicoValorImposto = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_imposto']); $sServicoValorLiquido = DBSeller_Helper_Number_Format::toDataBase($aDados['s_valor_pagar']); // Seta os dados do 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->setDescricaoServico($aDados['s_observacao']); $oDmsNota->setServicoCodigoObra($aDados['s_codigo_obra']); $oDmsNota->setServicoArt($aDados['s_art']); $oDmsNota->setServicoInformacoesComplementares($aDados['s_informacoes_complementares']); if ($this->oContribuinte->getInscricaoMunicipal()) { $oDadosTomador = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($this->oContribuinte->getInscricaoMunicipal()); } else { $oDadosTomador = Contribuinte_Model_ContribuinteEventual::getByCpfCnpj($this->oContribuinte->getCgcCpf()); } $oDmsNota->setTomadorCpfCnpj($oDadosTomador->getCgcCpf()); $oDmsNota->setTomadorInscricaoMunicipal($oDadosTomador->getInscricaoMunicipal()); $oDmsNota->setTomadorInscricaoEstadual($oDadosTomador->getInscricaoEstadual()); $oDmsNota->setTomadorRazaoSocial($oDadosTomador->getNome()); $oDmsNota->setTomadorNomeFantasia($oDadosTomador->getNomeFantasia()); $oDmsNota->setTomadorEnderecoRua($oDadosTomador->getDescricaoLogradouro()); $oDmsNota->setTomadorEnderecoNumero($oDadosTomador->getLogradouroNumero()); $oDmsNota->setTomadorEnderecoComplemento($oDadosTomador->getLogradouroComplemento()); $oDmsNota->setTomadorEnderecoBairro($oDadosTomador->getLogradouroBairro()); $oDmsNota->setTomadorEnderecoCodigoMunicipio($oDadosTomador->getCodigoIbgeMunicipio()); $oDmsNota->setTomadorEnderecoEstado($oDadosTomador->getEstado()); $oDmsNota->setTomadorEnderecoCodigoPais($oDadosTomador->getCodigoPais()); $oDmsNota->setTomadorEnderecoCEP($oDadosTomador->getCep()); $oDmsNota->setTomadorTelefone($oDadosTomador->getTelefone()); $oDmsNota->setTomadorEmail($oDadosTomador->getEmail()); // Dados Tomador $oDadosPrestador = Contribuinte_Model_Empresa::getByCgcCpf($aDados['s_cpf_cnpj']); if (empty($oDadosPrestador->eCidade)) { // Se não for cadastrado no eCidade, salva prestador no NFSE if (empty($oDadosPrestador->eNota) && !empty($aDados['s_cpf_cnpj'])) { $aDadosPrestador['t_cnpjcpf'] = $aDados['s_cpf_cnpj']; $aDadosPrestador['t_razao_social'] = $aDados['s_razao_social']; $oDadosPrestadorNota = new Contribuinte_Model_EmpresaBase(); $oDadosPrestadorNota->persist($aDadosPrestador); } $oDmsNota->setPrestadorCpfCnpj($aDados['s_cpf_cnpj']); $oDmsNota->setPrestadorRazaoSocial($aDados['s_razao_social']); } else { $oDadosPrestadorEcidade = $oDadosPrestador->eCidade[0]; $oDmsNota->setPrestadorCpfCnpj($aDados['s_cpf_cnpj']); $oDmsNota->setPrestadorNomeFantasia($oDadosPrestadorEcidade->attr('nome_fanta')); $oDmsNota->setPrestadorRazaoSocial($oDadosPrestadorEcidade->attr('nome')); $oDmsNota->setPrestadorInscricaoMunicipal($oDadosPrestadorEcidade->attr('inscricao')); $oDmsNota->setPrestadorInscricaoEstadual($oDadosPrestadorEcidade->attr('inscr_est')); $oDmsNota->setPrestadorEnderecoRua($oDadosPrestadorEcidade->attr('endereco')); $oDmsNota->setPrestadorEnderecoNumero($oDadosPrestadorEcidade->attr('numero')); $oDmsNota->setPrestadorEnderecoComplemento($oDadosPrestadorEcidade->attr('complemento')); $oDmsNota->setPrestadorEnderecoBairro($oDadosPrestadorEcidade->attr('bairro')); $oDmsNota->setPrestadorEnderecoCodigoMunicipio($oDadosPrestadorEcidade->attr('cod_ibge')); $oDmsNota->setPrestadorEnderecoEstado($oDadosPrestadorEcidade->attr('uf')); $oDmsNota->setPrestadorEnderecoCodigoPais($oDadosPrestadorEcidade->attr('cod_pais')); $oDmsNota->setPrestadorEnderecoCEP($oDadosPrestadorEcidade->attr('cep')); $oDmsNota->setPrestadorTelefone($oDadosPrestadorEcidade->attr('telefone')); $oDmsNota->setPrestadorEmail($oDadosPrestadorEcidade->attr('email')); } $oDmsNota->setIdUsuario($this->usuarioLogado->getId()); $oDmsNota->setIdContribuinte($this->oContribuinte->getIdUsuarioContribuinte()); $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 retorno $aRetornoJson['status'] = TRUE; $aRetornoJson['success'] = $this->translate->_('Documento lançado com sucesso!'); $aRetornoJson['id_dms'] = $iCodigoDms; // Quando for alteração, configura a mensagem de alteração if (isset($aDados['id']) && $aDados['id']) { $sUrlDmsAlterado = "/contribuinte/dms/emissao-manual-entrada/id_dms/{$iCodigoDms}"; $aRetornoJson['success'] = $this->translate->_('Documento alterado com sucesso!'); $aRetornoJson['url'] = $this->view->baseUrl($sUrlDmsAlterado); } } else { $aRetornoJson['status'] = FALSE; $aRetornoJson['fields'] = array_keys($oForm->getMessages()); $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.'); } echo $this->getHelper('json')->sendJson($aRetornoJson); }