public static function delete($cod_operacao) { $OperacaoDao = new OperacaoDao(); if (is_numeric($cod_operacao)) { try { $OperacaoDao->deleteOperacao($cod_operacao); } catch (ExceptionJSON $e) { $e->enviaJSON(); } } else { Flight::halt(406, 'parametro recusado'); } }
public static function calculaNfe() { $id_empreendimento = $_POST['id_empreendimento']; $id_venda = $_POST['id_venda']; $cod_operacao = $_POST['cod_operacao']; $VendaDao = new VendaDao(); $UsuarioDao = new UsuarioDao(); $ItemVendaDao = new ItemVendaDao(); $EmpreendimentoDao = new EmpreendimentoDao(); $OperacaoDao = new OperacaoDao(); $ProdutoDao = new ProdutoDao(); $EstadoDao = new EstadoDao(); $CidadeDao = new CidadeDao(); $ConfiguracaoDao = new ConfiguracaoDao(); $SerieDocumentoFiscalDao = new SerieDocumentoFiscalDao(); /** * Carregando dados da venda **/ $venda = $VendaDao->getVenda($id_venda); $venda['itens'] = $ItemVendaDao->getItens($id_venda); $venda['cliente'] = $UsuarioDao->getUsuario($id_empreendimento, $venda['id_cliente']); if (isset($venda['cliente']['id_cidade']) && !empty($venda['cliente']['id_cidade'])) { $cidadeDestinatario = $CidadeDao->getCidade($venda['cliente']['id_cidade']); $estadoDestinatario = $EstadoDao->getEstado($venda['cliente']['id_estado']); } else { Flight::halt(406, json_encode(array('mensagem' => 'Estado/Cidade não informado no cadastro do cliente!'))); } $venda['empreendimento'] = $EmpreendimentoDao->getEmpreendimentoByIdAndUF($id_empreendimento, $estadoDestinatario['uf']); $cidadeEmitente = $CidadeDao->getCidade($venda['empreendimento']['cod_cidade']); $estadoEmitente = $EstadoDao->getEstado($venda['empreendimento']['cod_estado']); $venda['operacao'] = $OperacaoDao->getOperacao($cod_operacao); $configuracoes = $ConfiguracaoDao->getConfiguracoes($id_empreendimento); if (!isset($configuracoes['id_serie_padrao_nfe'])) { $erros = array("mensagem" => "Configuração \"Modelo Documento/Série Padrão p/ NF-e\" não encontrada"); Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($erros))->send(); } $SerieDocumentoFiscal = $SerieDocumentoFiscalDao->getByID($configuracoes['id_serie_padrao_nfe']); $dados_emissao = new stdClass(); $dados_emissao->dsc_operacao = $venda['operacao']['dsc_operacao']; $dados_emissao->serie_documento_fiscal = $SerieDocumentoFiscal['serie_documento_fiscal']; $dados_emissao->num_documento_fiscal = $SerieDocumentoFiscal['num_ultimo_documento_fiscal']++; $dados_emissao->cod_venda = $id_venda; $dados_emissao->cod_empreendimento = $id_empreendimento; $dados_emissao->nme_modelo_documento = $SerieDocumentoFiscal['dsc_modelo_documento_fiscal']; /** * Configurando os dados do emitente **/ $emitente = new MotorFiscal\Emitente(); $emitente->identificador = $venda['empreendimento']['id']; $emitente->CNPJ = $venda['empreendimento']['num_cnpj']; $emitente->xNome = $venda['empreendimento']['nme_razao_social']; $emitente->xFant = $venda['empreendimento']['nme_fantasia']; $emitente->IE = $venda['empreendimento']['num_inscricao_estadual']; $emitente->IEST = $venda['empreendimento']['num_inscricao_estadual_st']; $emitente->CRT = $venda['empreendimento']['num_regime_tributario']; $emitente->PercCreditoSimples = $venda['empreendimento']['num_percentual_credito_simples']; $emitente->CEP = $venda['empreendimento']['num_cep']; $emitente->xLgr = $venda['empreendimento']['nme_logradouro']; $emitente->nro = $venda['empreendimento']['num_logradouro']; $emitente->xBairro = $venda['empreendimento']['nme_bairro_logradouro']; $emitente->cMun = $cidadeEmitente['nome']; $emitente->UF = $estadoEmitente['uf']; $emitente->id_cidade = $cidadeEmitente['id']; $emitente->id_estado = $estadoEmitente['id']; $emitente->ContribuinteIPI = $venda['empreendimento']['flg_contribuinte_ipi']; $emitente->num_versao_ibpt = $configuracoes['num_versao_ibpt']; /** * Configurando os dados do destinatário **/ $destinatario = new MotorFiscal\Destinatario(); $destinatario->identificador = $venda['cliente']['id']; $destinatario->CPF = $venda['cliente']['cpf']; $destinatario->idEstrangeiro = $venda['cliente']['num_registro_estrangeiro']; $destinatario->xNome = $venda['cliente']['nome']; $destinatario->email = $venda['cliente']['email']; $destinatario->tipo_cadastro = $venda['cliente']['tipo_cadastro']; $destinatario->CEP = $venda['cliente']['cep']; $destinatario->xLgr = $venda['cliente']['endereco']; $destinatario->nro = $venda['cliente']['numero']; $destinatario->xBairro = $venda['cliente']['bairro']; $destinatario->cMun = $cidadeDestinatario['nome']; $destinatario->UF = $estadoDestinatario['uf']; $destinatario->id_cidade = $cidadeDestinatario['id']; $destinatario->id_estado = $estadoDestinatario['id']; if ($venda['cliente']['tipo_cadastro'] === "pj") { $destinatario->CNPJ = $venda['cliente']['cnpj']; $destinatario->IE = $venda['cliente']['inscricao_estadual']; $destinatario->IEST = $venda['cliente']['inscricao_estadual_st']; $destinatario->IM = $venda['cliente']['num_inscricao_municipal']; $destinatario->xFant = $venda['cliente']['nome_fantasia']; if ((int) $venda['cliente']['flg_contribuinte_icms'] === 1) { // Se for contribuinte de ICMS if ((int) $venda['cliente']['flg_isento_inscricao_estadual'] === 1) { // Se for contribuinte de ICMS ISENTO de incrição $destinatario->indIEDest = 2; } else { $destinatario->indIEDest = 1; } //É contribuinte mas não é ISENTO. } else { $destinatario->indIEDest = 9; } // Se não não é contribuinte do ICMS então ele é igual a nove. } /** * Configurando os dados da operação **/ $operacao = new stdClass(); $operacao->identificador = $venda['operacao']['cod_operacao']; $operacao->CFOPMercadoria = $venda['operacao']['num_cfop_mercadoria']; $operacao->CFOPMercadoriaST = $venda['operacao']['num_cfop_mercadoria_st']; $operacao->CFOPMercadoriaSTSubstituido = $venda['operacao']['num_cfop_mercadoria_st_subst']; $operacao->CFOPProduto = $venda['operacao']['num_cfop_produto']; $operacao->CFOPProdutoST = $venda['operacao']['num_cfop_produto_st']; $operacao->TipoOperacao = 0; $operacao->identificacao = 0; $operacao->finalidade = 0; $operacao->indFinal = 0; $operacao->indPres = 0; $operacao->NaturezaOperacao = ''; /** * Configurando os parâmetros da NF-e **/ self::$NF = new MotorFiscal\DocumentoFiscal($emitente, $destinatario, $operacao); self::$NF->buscaTribFunctionICMS = function ($produto, $operacao, $emitente, $destinatario) { return Trib::ICMS($produto, $operacao, $emitente, $destinatario); }; self::$NF->buscaTribFunctionIPI = function ($produto, $operacao, $emitente, $destinatario) { return Trib::IPI($produto, $operacao, $emitente, $destinatario); }; self::$NF->buscaTribFunctionPIS = function ($produto, $operacao, $emitente, $destinatario) { return Trib::PIS($produto, $operacao, $emitente, $destinatario); }; self::$NF->buscaTribFunctionCOFINS = function ($produto, $operacao, $emitente, $destinatario) { return Trib::COFINS($produto, $operacao, $emitente, $destinatario); }; self::$NF->buscaTribFunctionIBPT = function ($produto, $emitente, $detinatario) { return Trib::IBPT($produto, $emitente, $detinatario); }; self::$NF->itens = array(); // Configurando produtos e calculando impostos foreach ($venda['itens'] as $key => $item) { $item['data'] = $ProdutoDao->getProduto($item['id_produto'], $id_empreendimento); $produto = new MotorFiscal\Produto(); $produto->identificador = $item['data']['id_produto']; $produto->cProd = $item['data']['id']; $produto->cEAN = $item['data']['codigo_barra']; $produto->xProd = $item['data']['nome']; $produto->NCM = $item['data']['cod_ncm']; $produto->EXTIPI = $item['data']['ex_tipi']; $produto->CEST = $item['data']['num_cest']; $produto->uCom = $item['data']['dsc_unidade_medida']; $produto->qCom = $item['qtd']; $produto->vUnCom = $item['vlr_produto']; $produto->cEANTrib = $item['data']['codigo_barra']; $produto->uTrib = $item['data']['dsc_unidade_medida']; $produto->qTrib = $item['qtd']; $produto->vUnTrib = $item['vlr_produto']; $produto->TipoTributacaoIPI = $item['data']['TipoTributacaoIPI']; $produto->FormaAquisicao = $item['data']['FormaAquisicao']; $produto->vProd = $item['qtd'] * $item['vlr_produto']; $produto->vDesc = $item['qtd'] * $item['valor_desconto_real']; // TODO: Dúvidas para sanar com Fischer $produto->NVE = 0; // Como preencher? $produto->CFOP = 0; // Como preencher? $produto->indTot = 1; // Como preencher? $produto->vFrete = 0; // Como preencher? $produto->vOutro = 0; // Como preencher? $produto->vSeg = 0; // Como preencher? $item = self::$NF->addItem($produto); $venda['itens'][$key] = $item; } // Consolidando e totalizando self::$NF->totalizarDocumento(); $dadosNf = array('informacoes_adicionais_contribuinte' => $_POST['informacoes_adicionais_contribuinte'], 'dados_emissao' => $dados_emissao, 'emitente' => $emitente, 'destinatario' => $destinatario, 'itens' => self::$NF->itens, 'ICMSTot' => self::$NF->ICMSTot); Flight::json($dadosNf); }