public static function saveEmpreendimento() { date_default_timezone_set('America/Sao_Paulo'); // Preparando objetos $EmpreendimentoTO = new EmpreendimentoTO(); $EmpreendimentoTO->nome_empreendimento = isset($_POST['nome_empreendimento']) ? $_POST['nome_empreendimento'] : ''; $EmpreendimentoTO->flg_teste = isset($_POST['flg_teste']) && ((int) $_POST['flg_teste'] == 1 || (int) $_POST['flg_teste'] == 0) ? (int) $_POST['flg_teste'] : NULL; $EmpreendimentoTO->qtd_dias_teste = isset($_POST['qtd_dias_teste']) ? $_POST['qtd_dias_teste'] : NULL; $EmpreendimentoTO->dta_cadastro = date('Y-m-d H:i:s'); $EmpreendimentoTO->num_cnpj = isset($_POST['num_cnpj']) ? $_POST['num_cnpj'] : ''; $EmpreendimentoTO->num_inscricao_estadual = isset($_POST['num_inscricao_estadual']) ? $_POST['num_inscricao_estadual'] : ''; $EmpreendimentoTO->nme_razao_social = isset($_POST['nme_razao_social']) ? $_POST['nme_razao_social'] : ''; $EmpreendimentoTO->nme_fantasia = isset($_POST['nme_fantasia']) ? $_POST['nme_fantasia'] : ''; $EmpreendimentoTO->nme_logradouro = isset($_POST['nme_logradouro']) ? $_POST['nme_logradouro'] : ''; $EmpreendimentoTO->num_logradouro = isset($_POST['num_logradouro']) ? $_POST['num_logradouro'] : ''; $EmpreendimentoTO->nme_bairro_logradouro = isset($_POST['nme_bairro_logradouro']) ? $_POST['nme_bairro_logradouro'] : ''; $EmpreendimentoTO->cod_cidade = isset($_POST['cod_cidade']) ? $_POST['cod_cidade'] : NULL; $EmpreendimentoTO->cod_estado = isset($_POST['cod_estado']) ? $_POST['cod_estado'] : NULL; $EmpreendimentoTO->cod_regime_tributario = isset($_POST['cod_regime_tributario']) && is_numeric($_POST["cod_regime_tributario"]) ? $_POST['cod_regime_tributario'] : NULL; $EmpreendimentoTO->cod_regime_pis_cofins = isset($_POST['cod_regime_pis_cofins']) && is_numeric($_POST["cod_regime_pis_cofins"]) ? $_POST['cod_regime_pis_cofins'] : NULL; $EmpreendimentoTO->cod_tipo_empresa = isset($_POST['cod_tipo_empresa']) && is_numeric($_POST["cod_tipo_empresa"]) ? $_POST['cod_tipo_empresa'] : NULL; $EmpreendimentoTO->flg_contribuinte_icms = isset($_POST['flg_contribuinte_icms']) ? (int) $_POST['flg_contribuinte_icms'] : 0; $EmpreendimentoTO->flg_contribuinte_ipi = isset($_POST['flg_contribuinte_ipi']) ? (int) $_POST['flg_contribuinte_ipi'] : 0; $EmpreendimentoTO->cod_zoneamento = isset($_POST['cod_zoneamento']) && is_numeric($_POST["cod_zoneamento"]) ? $_POST['cod_zoneamento'] : NULL; $EmpreendimentoTO->num_percentual_credito_simples = isset($_POST['num_percentual_credito_simples']) && is_numeric($_POST["num_percentual_credito_simples"]) ? $_POST['num_percentual_credito_simples'] : NULL; $EmpreendimentoTO->num_cep = isset($_POST['num_cep']) ? $_POST['num_cep'] : NULL; $EmpreendimentoTO->num_inscricao_estadual_st = isset($_POST['num_inscricao_estadual_st']) ? $_POST['num_inscricao_estadual_st'] : NULL; $UsuarioEmpreendimentoTO = new UsuarioEmpreendimentoTO(); $UsuarioEmpreendimentoTO->id_usuario = isset($_POST['id_usuario']) ? $_POST['id_usuario'] : ''; $regime_especial = isset($_POST['regime_especial']) ? $_POST['regime_especial'] : array(); // Validação de campos obrigatórios $validator = new DataValidator(); $validator->set_msg('O nome do Empreendimento é obrigatório')->set('nome_empreendimento', $EmpreendimentoTO->nome_empreendimento)->is_required(); $validator->set_msg('O ID do usuario é obrigatório')->set('id_usuario', $UsuarioEmpreendimentoTO->id_usuario)->is_required(); if ($EmpreendimentoTO->flg_teste == 1) { $validator->set_msg('A quantidade de dias para teste é obrigatória')->set('qtd_dias_teste', $EmpreendimentoTO->qtd_dias_teste)->is_required()->set_msg('Este campo é obrigatóriamente numérico')->is_num()->set_msg('Este campo deve ser obrigatóriamente maior que 0 (zero)')->min_value(1, true); } else { $EmpreendimentoTO->qtd_dias_teste = null; } if (!$validator->validate()) { Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send(); return; } try { $EmpreendimentoDao = new EmpreendimentoDao(); $last_id_empreendimento = $EmpreendimentoDao->saveEmpreendimento($EmpreendimentoTO); if (!$last_id_empreendimento) { Flight::halt(500, 'erro ao salvar empreendimento'); } else { $RegimeEspecialDao = new RegimeEspecialDao(); $RegimeEspecialDao->saveRegimeEmpreendimento($regime_especial, $last_id_empreendimento); $arrConfigs = array(); $arrConfigs['id_plano_fechamento_caixa'] = "-1"; $arrConfigs['id_plano_caixa'] = "-1"; $arrConfigs['id_fornecedor_movimentacao_caixa'] = "-1"; $arrConfigs['id_cliente_movimentacao_caixa'] = "-1"; $arrConfigs['path_logo_rel'] = "-1"; $arrConfigs['id_produto_debito_anterior_cliente'] = "-1"; $arrConfigs['id_conta_bancaria_padrao_fechamento_automatico'] = "-1"; $arrConfigs['id_usuario_venda_vitrine'] = "-1"; $arrConfigs['time_zone'] = "America/Sao_Paulo"; // salvar id_cliente_movimentacao_caixa = CLIENTE LOJA FÍSICA $cliMovCaixaTO = new ClienteTO(); $cliMovCaixaTO->nome = "CLIENTE LOJA FÍSICA"; $cliMovCaixaTO->id_perfil = 6; $cliMovCaixaTO->id_empreendimento = $last_id_empreendimento; $cliMovCaixaDao = new ClienteDao(); $last_id_cliMovCaixa = $cliMovCaixaDao->saveCliente($cliMovCaixaTO); if (!$last_id_cliMovCaixa) { Flight::halt(500, 'erro ao criar [CLIENTE LOJA FÍSICA] padrão para o empreendimento [$last_id_empreendimento]'); } $UsuarioEmpreendimentoTO->id_usuario = $last_id_cliMovCaixa; $UsuarioEmpreendimentoTO->id_empreendimento = $last_id_empreendimento; if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) { Flight::halt(500, 'erro ao associar [CLIENTE LOJA FÍSICA] ao empreendimento'); } $arrConfigs['id_cliente_movimentacao_caixa'] = $last_id_cliMovCaixa; // salvar id_usuario_venda_vitrine = CLIENTE LOJA VIRTUAL $cliVenVitrineTO = new ClienteTO(); $cliVenVitrineTO->nome = "CLIENTE LOJA VIRTUAL"; $cliVenVitrineTO->id_perfil = 6; $cliVenVitrineTO->id_empreendimento = $last_id_empreendimento; $cliVenVitrineDao = new ClienteDao(); $last_id_cliVenVitrine = $cliVenVitrineDao->saveCliente($cliVenVitrineTO); if (!$last_id_cliVenVitrine) { Flight::halt(500, 'erro ao criar [CLIENTE LOJA VIRTUAL] padrão para o empreendimento [$last_id_empreendimento]'); } $UsuarioEmpreendimentoTO->id_usuario = $last_id_cliVenVitrine; $UsuarioEmpreendimentoTO->id_empreendimento = $last_id_empreendimento; if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) { Flight::halt(500, 'erro ao associar [CLIENTE LOJA VIRTUAL] ao empreendimento'); } $arrConfigs['id_usuario_venda_vitrine'] = $last_id_cliVenVitrine; // salvar id_fornecedor_movimentacao_caixa = CLIENTE LOJA FÍSICA $forMovCaixaTO = new FornecedorTO(); $forMovCaixaTO->nome_fornecedor = "FORNECEDOR MOVIMENTACÃO DE CAIXA "; $forMovCaixaTO->id_empreendimento = $last_id_empreendimento; $forMovCaixaDao = new FornecedorDao(); $last_id_forMovCaixa = $forMovCaixaDao->saveFornecedor($forMovCaixaTO); if (!$last_id_forMovCaixa) { Flight::halt(500, 'erro ao criar [CLIENTE LOJA VIRTUAL] padrão para o empreendimento [$last_id_empreendimento]'); } $arrConfigs['id_fornecedor_movimentacao_caixa'] = $last_id_forMovCaixa; // id_produto_debito_anterior_cliente = DÉBITO ANTERIOR $prodDebAnteriorTO = new ProdutoTO(); $prodDebAnteriorTO->nome = "DÉBITO ANTERIOR"; $prodDebAnteriorDao = new ProdutoDao(); $last_id_prodDebAnterior = $prodDebAnteriorDao->saveProduto($prodDebAnteriorTO); if (!$last_id_prodDebAnterior) { Flight::halt(500, 'erro ao criar [DÉBITO ANTERIOR] padrão para o empreendimento [$last_id_empreendimento]'); } $ProdutoEmpreendimentoTO = new ProdutoEmpreendimentoTO(); $ProdutoEmpreendimentoTO->id_produto = $last_id_prodDebAnterior; $ProdutoEmpreendimentoTO->id_empreendimento = $last_id_empreendimento; if (!$prodDebAnteriorDao->produtoEmpreendimento($ProdutoEmpreendimentoTO)) { Flight::halt(500, 'Erro ao associar o produto [DÉBITO ANTERIOR] o id_empreendimento'); } $arrConfigs['id_produto_debito_anterior_cliente'] = $last_id_prodDebAnterior; // id_conta_bancaria_padrao_fechamento_automatico = CAIXA INTERNO $ContaBancariaTO = new ContaBancariaTO(); $ContaBancariaDao = new ContaBancariaDao(); $ContaBancariaTO->dsc_conta_bancaria = 'Caixa interno'; $ContaBancariaTO->id_tipo_conta = 3; $ContaBancariaTO->id_empreendimento = $last_id_empreendimento; $ContaBancariaTO->id_banco = 104; $lastIdContaBancaria = $ContaBancariaDao->saveConta($ContaBancariaTO); if (!$lastIdContaBancaria) { Flight::halt(500, 'erro ao criar conta [CAIXA INTERNO] padrão para fechamento de caixa'); } $arrConfigs['id_conta_bancaria_padrao_fechamento_automatico'] = $lastIdContaBancaria; //Cadastrando Plano de contas if (!$EmpreendimentoDao->PlanoContaEmpreendimento($last_id_empreendimento)) { Flight::halt(500, 'erro ao criar Plano de contas'); } $arrConfigs['id_plano_caixa'] = $EmpreendimentoDao->getIdPlanoCaixa($last_id_empreendimento); $arrConfigs['id_plano_fechamento_caixa'] = $EmpreendimentoDao->getIdPlanoFechamentoCaixa($last_id_empreendimento); //Cadastrando cores if (!$EmpreendimentoDao->InsertCores($last_id_empreendimento)) { Flight::halt(500, 'erro ao criar cores'); } //Cadastrando chave de configurações foreach ($arrConfigs as $key => $value) { $configDao = new ConfiguracaoDao(); if (!$configDao->saveKey($key, $value, $last_id_empreendimento)) { Flight::halt(500, 'erro ao criar [$key][$value] padrão para o empreendimento [$last_id_empreendimento]'); die; } } $empreendimento_usuario = array(array('id_usuario' => 222, 'id_empreendimento' => $last_id_empreendimento), array('id_usuario' => 498, 'id_empreendimento' => $last_id_empreendimento)); foreach ($empreendimento_usuario as $key => $value) { $UsuarioEmpreendimentoTO->id_empreendimento = $value['id_empreendimento']; $UsuarioEmpreendimentoTO->id_usuario = $value['id_usuario']; if (!$EmpreendimentoDao->saveUsuarioEmpreendimento($UsuarioEmpreendimentoTO)) { Flight::halt(500, 'erro ao vincular usuarios ao empreendimento'); } } Flight::halt(201); } } catch (Exception $e) { Flight::halt(500, $e->getMessage()); } }
public static function saveProduto() { $ProdutoTO = new ProdutoTO(); $ProdutoDao = new ProdutoDao(); $validator = new DataValidator(); $ProdutoCombinacaoDao = new ProdutoCombinacaoDao(); $ProdutoTO->codigo_barra = isset($_POST["codigo_barra"]) ? $_POST["codigo_barra"] : NULL; $ProdutoTO->meta_title = isset($_POST["meta_title"]) ? $_POST["meta_title"] : NULL; $ProdutoTO->meta_description = isset($_POST["meta_description"]) ? $_POST["meta_description"] : NULL; $ProdutoTO->descricao_curta = isset($_POST["descricao_curta"]) ? $_POST["descricao_curta"] : NULL; $ProdutoTO->nome = isset($_POST["nome"]) ? $_POST["nome"] : NULL; $ProdutoTO->sabor = isset($_POST["sabor"]) ? $_POST["sabor"] : NULL; $ProdutoTO->peso = isset($_POST["peso"]) ? $_POST["peso"] : NULL; $ProdutoTO->valor_desconto_cliente = isset($_POST["valor_desconto_cliente"]) ? $_POST["valor_desconto_cliente"] : NULL; $ProdutoTO->id_fabricante = isset($_POST["id_fabricante"]) ? $_POST["id_fabricante"] : NULL; $ProdutoTO->id_importador = isset($_POST["id_importador"]) ? $_POST["id_importador"] : NULL; $ProdutoTO->id_categoria = isset($_POST["id_categoria"]) ? $_POST["id_categoria"] : NULL; $ProdutoTO->qtd_minima_estoque = isset($_POST["qtd_minima_estoque"]) ? $_POST["qtd_minima_estoque"] : NULL; $ProdutoTO->descricao = isset($_POST["descricao"]) ? $_POST["descricao"] : NULL; $ProdutoTO->flg_produto_composto = isset($_POST["flg_produto_composto"]) ? $_POST["flg_produto_composto"] : 0; $ProdutoTO->id_tamanho = isset($_POST["id_tamanho"]) && is_numeric($_POST["id_tamanho"]) && $_POST["id_tamanho"] && (int) $_POST["id_tamanho"] > 0 ? $_POST["id_tamanho"] : NULL; $ProdutoTO->id_cor = isset($_POST["id_cor"]) && is_numeric($_POST["id_cor"]) && $_POST["id_cor"] && (int) $_POST["id_cor"] > 0 ? $_POST["id_cor"] : NULL; $ProdutoTO->cod_ncm = isset($_POST["cod_ncm"]) ? $_POST["cod_ncm"] : NULL; $ProdutoTO->ex_tipi = isset($_POST["ex_tipi"]) ? $_POST["ex_tipi"] : NULL; $ProdutoTO->cod_especializacao_ncm = isset($_POST["cod_especializacao_ncm"]) && is_numeric($_POST["cod_especializacao_ncm"]) ? $_POST["cod_especializacao_ncm"] : NULL; $ProdutoTO->cod_forma_aquisicao = isset($_POST["cod_forma_aquisicao"]) && is_numeric($_POST["cod_forma_aquisicao"]) ? $_POST["cod_forma_aquisicao"] : NULL; $ProdutoTO->cod_origem_mercadoria = isset($_POST["cod_origem_mercadoria"]) && is_numeric($_POST["cod_origem_mercadoria"]) ? $_POST["cod_origem_mercadoria"] : NULL; $ProdutoTO->cod_tipo_tributacao_ipi = isset($_POST["cod_tipo_tributacao_ipi"]) && is_numeric($_POST["cod_tipo_tributacao_ipi"]) ? $_POST["cod_tipo_tributacao_ipi"] : NULL; $ProdutoTO->cod_regra_tributos = isset($_POST["cod_regra_tributos"]) && is_numeric($_POST["cod_regra_tributos"]) ? $_POST["cod_regra_tributos"] : NULL; $ProdutoTO->num_cest = isset($_POST["num_cest"]) && is_numeric($_POST["num_cest"]) ? $_POST["num_cest"] : NULL; $ProdutoTO->dsc_unidade_medida = isset($_POST["dsc_unidade_medida"]) ? $_POST["dsc_unidade_medida"] : NULL; $id_empreendimento = isset($_POST['id_empreendimento']) ? $_POST['id_empreendimento'] : ""; $precos = isset($_POST['precos']) && is_array($_POST['precos']) ? $_POST['precos'] : array(); $fornecedores = isset($_POST['fornecedores']) && is_array($_POST['fornecedores']) ? $_POST['fornecedores'] : array(); $empreendimentos = isset($_POST['empreendimentos']) && is_array($_POST['empreendimentos']) ? $_POST['empreendimentos'] : array(); $insumos = isset($_POST['insumos']) && is_array($_POST['insumos']) ? $_POST['insumos'] : array(); $categorias = isset($_POST['categorias']) && is_array($_POST['categorias']) ? $_POST['categorias'] : array(); if ((int) $ProdutoTO->flg_produto_composto == 1) { if (!(isset($insumos) && is_array($insumos) && count($insumos) > 0)) { $validator->_errors['insumos'][] = 'É obrigatório informar ao menos um insumo para compor o produto'; } } $validator->set_msg('O nome do produto é obrigatório')->set('nome', $ProdutoTO->nome)->is_required(); /* $validator->set_msg('O codigo do empreendimento é obrigatório') ->set('id_empreendimento',$id_empreendimento) ->is_required(); $validator->set_msg('O codigo de barra do produto é obrigatório') ->set('codigo_barra',$ProdutoTO->codigo_barra) ->is_required(); $validator->set_msg('O sabor do produto é obrigatório') ->set('sabor',$ProdutoTO->sabor) ->is_required(); $validator->set_msg('O peso do produto é obrigatório') ->set('peso',$ProdutoTO->peso) ->is_required(); $validator->set_msg('O fabricante do produto é obrigatório') ->set('id_fabricante',$ProdutoTO->id_fabricante) ->is_required(); $validator->set_msg('O importador do produto é obrigatório') ->set('id_importador',$ProdutoTO->id_importador) ->is_required(); $validator->set_msg('A categoria do produto é obrigatório') ->set('id_categoria',$ProdutoTO->id_categoria) ->is_required(); $validator->set_msg('A quantidade minina do produto é obrigatório') ->set('qtd_minima_estoque',$ProdutoTO->qtd_minima_estoque) ->is_required(); if(!(isset($fornecedores) && is_array($fornecedores) && count($fornecedores) > 0)){ $validator->_errors['fornecedores'][] = 'É obrigatório informar pelo menos um fornecedor'; } */ if (!(isset($empreendimentos) && is_array($empreendimentos) && count($empreendimentos) > 0)) { $validator->_errors['empreendimentos'][] = 'É obrigatório vincular o produto pelo menos a um empreendimento'; } $preco['vlr_custo'] = isset($preco['vlr_custo']) ? $preco['vlr_custo'] : 0; $preco['perc_imposto_compra'] = isset($preco['perc_imposto_compra']) ? $preco['perc_imposto_compra'] : 0; $preco['perc_desconto_compra'] = isset($preco['perc_desconto_compra']) ? $preco['perc_desconto_compra'] : 0; $preco['perc_venda_atacado'] = isset($preco['perc_venda_atacado']) ? $preco['perc_venda_atacado'] : 0; $preco['perc_venda_varejo'] = isset($preco['perc_venda_varejo']) ? $preco['perc_venda_varejo'] : 0; $preco['perc_venda_intermediario'] = isset($preco['perc_venda_intermediario']) ? $preco['perc_venda_intermediario'] : 0; /* $validator->set_msg('O valor de tabela é obrigatório') ->set('vlr_custo',$preco['vlr_custo']) ->is_required(); */ $new_image = false; if (isset($_FILES['img'])) { $ProdutoTO->img = NULL; list($width, $height) = getimagesize($_FILES['img']['tmp_name']); if ($width < 730 || $height < 730) { $validator->_errors['img'][] = 'O Tamanho da imagem deve ser igual ou superior a 730x730. Está imagem tem ' . $width . "x" . $height; } else { $status_upload = false; $handle = new upload($_FILES['img']); $handle->allowed = array('image/jpeg', 'image/jpg'); if ($handle->uploaded) { $handle->Process(CAMINHO_UPLOAD_IMG_PRODUTO); if ($handle->processed) { $status_upload = true; $ProdutoTO->img = $handle->file_dst_name; $new_image = CAMINHO_UPLOAD_IMG_PRODUTO . $handle->file_dst_name; } } if (!$status_upload) { if ($handle->error == 'Incorrect type of file') { $validator->_errors['img'][] = 'O formato da imagem deve ser jpeg ou jpg'; } else { Flight::halt(500, 'Ocorreu um erro ao fazer o upload da imagem ' . $handle->error); } } } } $ProdutoTO->nme_arquivo_nutricional = NULL; if (isset($_FILES['arquivo-produto'])) { $status_upload_file = false; $handle = new upload($_FILES['arquivo-produto']); if ($handle->uploaded) { $handle->Process(CAMINHO_UPLOAD_FILE_PRODUTO); if ($handle->processed) { $status_upload_file = true; $ProdutoTO->nme_arquivo_nutricional = $handle->file_dst_name; } } if (!$status_upload_file) { Flight::halt(500, 'Ocorreu um erro ao fazer o upload do arquivo nutricional' . $handle->error); } } if (!$validator->validate()) { if (!is_null($ProdutoTO->img)) { unlink(CAMINHO_UPLOAD_IMG_PRODUTO . $ProdutoTO->img); } if (!is_null($ProdutoTO->nme_arquivo_nutricional)) { unlink(CAMINHO_UPLOAD_FILE_PRODUTO . $ProdutoTO->nme_arquivo_nutricional); } Flight::response()->status(406)->header('Content-Type', 'application/json')->write(json_encode($validator->get_errors()))->send(); return; } $last_id = $ProdutoDao->saveProduto($ProdutoTO); $ProdutoCategoriaDao = new ProdutoCategoriaDao(); if (!$ProdutoCategoriaDao->insertProdutoCategorias($last_id, $categorias)) { Flight::halt(500, 'Erro ao cadastrar categorias'); } if ((int) $ProdutoTO->flg_produto_composto == 1) { if (!$ProdutoDao->insertProdutoInsumo($last_id, $insumos)) { Flight::halt(500, 'Erro ao cadastrar o insumos'); } } if ($last_id) { foreach ($empreendimentos as $key => $empreendimento) { $ProdutoEmpreendimentoTO = new ProdutoEmpreendimentoTO(); $ProdutoEmpreendimentoTO->id_produto = $last_id; $ProdutoEmpreendimentoTO->id_empreendimento = $empreendimento['id_empreendimento']; if (!$ProdutoDao->produtoEmpreendimento($ProdutoEmpreendimentoTO)) { Flight::halt(500, 'Erro ao cadastrar o id_empreendimento'); } } foreach ($precos as $preco) { $PrecoProdutoTO = new PrecoProdutoTO(); $PrecoProdutoDao = new PrecoProdutoDao(); $PrecoProdutoTO->id_produto = $last_id; $PrecoProdutoTO->id_empreendimento = $preco['id_empreendimento']; $PrecoProdutoTO->vlr_custo = $preco['vlr_custo']; $PrecoProdutoTO->perc_imposto_compra = $preco['perc_imposto_compra']; $PrecoProdutoTO->perc_desconto_compra = $preco['perc_desconto_compra']; $PrecoProdutoTO->perc_venda_atacado = $preco['perc_venda_atacado']; $PrecoProdutoTO->perc_venda_intermediario = $preco['perc_venda_intermediario']; $PrecoProdutoTO->perc_venda_varejo = $preco['perc_venda_varejo']; if (!$PrecoProdutoDao->atualizaPreco($PrecoProdutoTO)) { Flight::halt(500, 'erro ao cadastrar preço'); } } $ProdutoFornecedorTO = new ProdutoFornecedorTO(); foreach ($fornecedores as $key => $value) { $ProdutoFornecedorTO->id_produto = $last_id; $ProdutoFornecedorTO->id_fornecedor = $value['id_fornecedor']; if (!$ProdutoDao->fornecedorProduto($ProdutoFornecedorTO)) { Flight::halt(500, 'Erro ao cadastrar o produto'); } } $InventarioController = new InventarioController(); $inventario = isset($_POST['inventario']) ? $_POST['inventario'] : array(); if (is_array($inventario) && count($inventario) > 0) { foreach ($inventario as $key => $value) { foreach ($value['itens'] as $key_i => $value_i) { $inventario[$key]['itens'][$key_i]['id'] = $last_id; } } $InventarioController->salveInventarioSimples($inventario, $id_empreendimento); } $valor_campo_extra = isset($_POST['valor_campo_extra']) ? $_POST['valor_campo_extra'] : array(); if (is_array($valor_campo_extra) && count($valor_campo_extra) > 0) { $CampoExtraProdutoDao = new CampoExtraProdutoDao(); $CampoExtraProdutoDao->save($id_empreendimento, $last_id, $valor_campo_extra); } $combinacoes = isset($_POST['combinacoes']) && is_array($_POST['combinacoes']) ? $_POST['combinacoes'] : false; $ProdutoCombinacaoDao = new ProdutoCombinacaoDao(); if ($combinacoes) { $ProdutoCombinacaoDao->saveCombinacoes($combinacoes, $last_id); } $saida = array('id' => $last_id); if ($new_image) { $saida['local_new_image'] = $new_image; } Flight::response()->status(200)->header('Content-Type', 'application/json')->write(json_encode($saida))->send(); } else { Flight::halt(500, 'Erro ao cadastrar o produto'); } }
public static function requestSaveProduto() { try { $id_empreendimento = $_POST['id_empreendimento']; $produto = $_POST['produto']; $ReferenciaIntegracaoDao = new ReferenciaIntegracaoDao(); $ReferenciaIntegracaoTO = new ReferenciaIntegracaoTO(); $PrestaShopDao = new PrestaShopDao($id_empreendimento); $ProdutoDao = new ProdutoDao(); $ProdutoTO = new ProdutoTO(); $ProdutoTO->nome = $produto['name'][1]; $ProdutoTO->descricao = $produto['description'][1]; $last_id = $ProdutoDao->saveProduto($ProdutoTO); if (!$last_id) { throw new Exception('Erro ao atualizar produto', 1); } $ProdutoEmpreendimentoTO = new ProdutoEmpreendimentoTO(); $ProdutoEmpreendimentoTO->id_produto = $last_id; $ProdutoEmpreendimentoTO->id_empreendimento = $id_empreendimento; if (!$ProdutoDao->produtoEmpreendimento($ProdutoEmpreendimentoTO)) { throw new Exception('Erro ao vincular produto ao empreendimento'); } if ((double) $produto['price'] > (double) $produto['wholesale_price'] && (double) $produto['wholesale_price'] > 0) { $ex = (double) $produto['price'] - $produto['wholesale_price']; $perc_venda_varejo = $ex * 100 / (double) $produto['wholesale_price']; } else { $perc_venda_varejo = 0; } $PrecoProdutoDao = new PrecoProdutoDao(); $PrecoProdutoTO = new PrecoProdutoTO(); $PrecoProdutoTO->id_produto = $last_id; $PrecoProdutoTO->id_empreendimento = $id_empreendimento; $PrecoProdutoTO->vlr_custo = $produto['wholesale_price']; $PrecoProdutoTO->perc_imposto_compra = 0; $PrecoProdutoTO->perc_desconto_compra = 0; $PrecoProdutoTO->perc_venda_atacado = 0; $PrecoProdutoTO->perc_venda_intermediario = 0; $PrecoProdutoTO->perc_venda_varejo = $perc_venda_varejo / 100; if (!$PrecoProdutoDao->atualizaPreco($PrecoProdutoTO)) { throw new Exception('erro ao cadastrar preço'); } $ReferenciaIntegracaoTO = new ReferenciaIntegracaoTO(); $ReferenciaIntegracaoTO->sistema_integrado = 'PrestaShop'; $ReferenciaIntegracaoTO->tabela = 'tbl_produtos'; $ReferenciaIntegracaoTO->id_item = $last_id; $ReferenciaIntegracaoTO->id_item_referencia = $produto['id']; $ReferenciaIntegracaoTO->tipo = 'produto'; $ReferenciaIntegracaoTO->id_empreendimento = $id_empreendimento; if (!$ReferenciaIntegracaoDao->save($ReferenciaIntegracaoTO)) { throw new Exception('erro ao criar referencia'); } /*if(!$referencia){ $self::requestSaveUsuario(); return ; //throw new Exception('Referencia não encontrada', 1); }*/ } catch (Exception $e) { $log = new KLogger("logs/logErrorPrestaShop.txt", KLogger::DEBUG); $log->LogError($e->getMessage() . '- file:' . $e->getFile() . ' - line:' . $e->getLine()); $log->LogDebug(json_encode($_POST)); $log->LogJunp(); Flight::halt(500, $e->getMessage()); } }
public static function updatePedido() { $pedido_venda = $_POST['pedido_venda']; $itens = $pedido_venda['itens']; $chinelos_gerados = $pedido_venda['chinelos_gerados']; $pagamentos = isset($_POST['pagamentos']) ? $_POST['pagamentos'] : array(); $id_empreendimento = $pedido_venda['id_empreendimento']; $estampas = isset($pedido_venda['estampas']) ? $pedido_venda['estampas'] : array(); $PedidoVendaDao = new PedidoVendaDao(); $PedidoVendaTO = new PedidoVendaTO(); $ItemPedidoVendaDao = new ItemPedidoVendaDao(); $ItemPedidoVendaTO = new ItemPedidoVendaTO(); $PedidoVendaTO->id = isset($pedido_venda['id']) ? $pedido_venda['id'] : NULL; $PedidoVendaTO->id_usuario = isset($pedido_venda['id_usuario']) ? $pedido_venda['id_usuario'] : NULL; $PedidoVendaTO->id_cliente = is_numeric($pedido_venda['id_cliente']) ? $pedido_venda['id_cliente'] : NULL; $PedidoVendaTO->venda_confirmada = 0; $PedidoVendaTO->id_empreendimento = isset($pedido_venda['id_empreendimento']) ? $pedido_venda['id_empreendimento'] : ''; $PedidoVendaTO->id_status_pedido = isset($pedido_venda['id_status_pedido']) ? $pedido_venda['id_status_pedido'] : NULL; $PedidoVendaTO->observacao = isset($pedido_venda['observacao']) ? $pedido_venda['observacao'] : NULL; $PedidoVendaTO->dta_entrega = isset($pedido_venda['dta_entrega']) ? $pedido_venda['dta_entrega'] : NULL; $PedidoVendaTO->canal_venda = isset($pedido_venda['canal_venda']) ? $pedido_venda['canal_venda'] : NULL; $PedidoVendaTO->dta_venda = isset($pedido_venda['dta_venda']) ? $pedido_venda['dta_venda'] : NULL; $ItemPedidoVendaDao->delete($PedidoVendaTO->id); $PedidoVendaDao->updatePedido($PedidoVendaTO); $id_pedido_venda = $pedido_venda['id']; self::gravarMovimentacoes($pagamentos, $id_pedido_venda, $PedidoVendaTO->id_cliente, $PedidoVendaTO->id_empreendimento); $EstampaBasePedidoTO = new EstampaBasePedidoTO(); $EstampaBasePedidoDao = new EstampaBasePedidoDao(); foreach ($estampas as $key_arr => $arr) { foreach ($arr as $key_est => $estampa) { $EstampaBasePedidoTO->id_cor = $estampa['id_cor']; $EstampaBasePedidoTO->dsc_local = $estampa['dsc_local']; try { $id_estampa_base_pedido = $EstampaBasePedidoDao->saveEstampa($EstampaBasePedidoTO); $estampas[$key_arr][$key_est]['id_estampa_base_pedido'] = $id_estampa_base_pedido; } catch (ExceptionJSON $e) { $e->enviaJSON(); } } } foreach ($itens as $key => $arr) { $id_agrupamento_insumos = null; foreach ($arr as $value) { $ItemPedidoVendaTO->id_pedido_venda = $id_pedido_venda; $ItemPedidoVendaTO->id_produto = $value['id_produto']; $ItemPedidoVendaTO->desconto_aplicado = isset($value['desconto_aplicado']) ? $value['desconto_aplicado'] : 0; $ItemPedidoVendaTO->valor_desconto = isset($value['valor_desconto']) ? $value['valor_desconto'] : 0; $ItemPedidoVendaTO->qtd = $value['qtd']; $ItemPedidoVendaTO->valor_real_item = $value['valor_real_item']; $ItemPedidoVendaTO->vlr_custo = $value['vlr_custo']; $ItemPedidoVendaTO->perc_imposto_compra = $value['perc_imposto_compra']; $ItemPedidoVendaTO->perc_desconto_compra = $value['perc_desconto_compra']; $ItemPedidoVendaTO->perc_margem_aplicada = $value['perc_margem_aplicada']; $ItemPedidoVendaTO->tipo_produto = $value['tipo_produto']; $ItemPedidoVendaTO->id_produto_base = isset($value['id_produto_base']) && is_numeric($value['id_produto_base']) ? $value['id_produto_base'] : null; $ItemPedidoVendaTO->config_grad = $value['config_grad']; $ItemPedidoVendaTO->id_agrupamento_insumos = $id_agrupamento_insumos; $ItemPedidoVendaTO->flg_brinde = $value['flg_brinde']; $ItemPedidoVendaTO->tipo_base = isset($value['tipo_base']) ? $value['tipo_base'] : null; $ItemPedidoVendaTO->modelo_base = isset($value['modelo_base']) ? $value['modelo_base'] : null; $last_id_item = $ItemPedidoVendaDao->saveItemPedidoVenda($ItemPedidoVendaTO); $id_agrupamento_insumos = $id_agrupamento_insumos == null ? $last_id_item : $id_agrupamento_insumos; if (!$last_id_item) { Flight::halt(500, 'erro ao inserir os itens da venda'); } if ($value['tipo_produto'] == 'base' && count($estampas) > 0) { $EstampaBasePedidoItemPedidoVendaTO = new EstampaBasePedidoItemPedidoVendaTO(); $EstampaBasePedidoItemPedidoVendaDao = new EstampaBasePedidoItemPedidoVendaDao(); $key_estampa = (int) $value['flg_brinde'] == 1 ? 'brinde-' . $value['config_grad'] : $value['config_grad']; foreach ($estampas[$key_estampa] as $estampa) { $EstampaBasePedidoItemPedidoVendaTO->id_estampa_base_pedido = $estampa['id_estampa_base_pedido']; $EstampaBasePedidoItemPedidoVendaTO->id_item_pedido_venda = $last_id_item; try { $EstampaBasePedidoItemPedidoVendaDao->save($EstampaBasePedidoItemPedidoVendaTO); } catch (ExceptionJSON $e) { $e->enviaJSON(); } } } } $ItemPedidoVendaDao->updateAgrupamento($id_agrupamento_insumos); } // gravando pedido com chinelos gerados $ProdutoTO = new ProdutoTO(); $ProdutoDao = new ProdutoDao(); $ProdutoEmpreendimentoTO = new ProdutoEmpreendimentoTO(); $EstoqueDao = new EstoqueDao(); $EstoqueTO = new EstoqueTO(); foreach ($chinelos_gerados as $key => $value) { $ProdutoTO->nome = $value['nome']; $ProdutoTO->flg_excluido = 1; $last_id_produto = $ProdutoDao->saveProduto($ProdutoTO); $ProdutoEmpreendimentoTO->id_produto = $last_id_produto; $ProdutoEmpreendimentoTO->id_empreendimento = $id_empreendimento; if (!$ProdutoDao->produtoEmpreendimento($ProdutoEmpreendimentoTO)) { Flight::halt(500, 'Erro ao cadastrar o id_empreendimento'); } $chinelos_gerados[$key]['id_produto'] = $last_id_produto; } $PedidoVendaTO->id = isset($pedido_venda['id_pedido_gerado']) ? $pedido_venda['id_pedido_gerado'] : NULL; $PedidoVendaTO->id_usuario = isset($pedido_venda['id_usuario']) ? $pedido_venda['id_usuario'] : NULL; $PedidoVendaTO->id_cliente = is_numeric($pedido_venda['id_cliente']) ? $pedido_venda['id_cliente'] : NULL; $PedidoVendaTO->venda_confirmada = isset($pedido_venda['venda_confirmada']) ? $pedido_venda['venda_confirmada'] : NULL; $PedidoVendaTO->id_empreendimento = isset($pedido_venda['id_empreendimento']) ? $pedido_venda['id_empreendimento'] : NULL; $PedidoVendaTO->id_status_pedido = isset($pedido_venda['id_status_pedido']) ? $pedido_venda['id_status_pedido'] : 1; $PedidoVendaTO->observacao = isset($pedido_venda['observacao']) ? $pedido_venda['observacao'] : NULL; $PedidoVendaTO->id_pedido_master = $id_pedido_venda; $ItemPedidoVendaDao->delete($PedidoVendaTO->id); $PedidoVendaDao->updatePedido($PedidoVendaTO); $id_pedido_gerado = $pedido_venda['id_pedido_gerado']; foreach ($chinelos_gerados as $key => $value) { $ItemPedidoVendaTO->id_pedido_venda = $id_pedido_gerado; $ItemPedidoVendaTO->id_pedido_master = $id_pedido_venda; $ItemPedidoVendaTO->id_produto = $value['id_produto']; $ItemPedidoVendaTO->desconto_aplicado = isset($value['desconto_aplicado']) ? $value['desconto_aplicado'] : 0; $ItemPedidoVendaTO->valor_desconto = isset($value['valor_desconto']) ? $value['valor_desconto'] : 0; $ItemPedidoVendaTO->qtd = $value['qtd']; $ItemPedidoVendaTO->valor_real_item = $value['valor_real_item']; $ItemPedidoVendaTO->vlr_custo = $value['vlr_custo']; $ItemPedidoVendaTO->perc_imposto_compra = 0; $ItemPedidoVendaTO->perc_desconto_compra = 0; $ItemPedidoVendaTO->perc_margem_aplicada = $value['perc_margem_aplicada']; $ItemPedidoVendaTO->tipo_produto = null; $ItemPedidoVendaTO->id_produto_base = null; $ItemPedidoVendaTO->config_grad = null; $ItemPedidoVendaTO->id_agrupamento_insumos = null; $ItemPedidoVendaTO->flg_brinde = $value['flg_brinde']; if (!$ItemPedidoVendaDao->saveItemPedidoVenda($ItemPedidoVendaTO)) { Flight::halt(500, 'erro ao inserir os itens da venda'); } } Flight::response()->status(201)->header('Content-Type', 'application/json')->write(json_encode(array('id_pedido_venda' => $id_pedido_venda)))->send(); }
public static function importarNFe() { try { // Iniciando uma transação no banco de dados, caso já não acha uma ativa $conn = Conexao::getInstance(); if (!$conn->inTransaction()) { $conn->beginTransaction(); } $filename = ''; $xml = null; // Verifica se o arquivo XML foi carregado if (isset($_FILES['arquivo-nota'])) { $filename = $_FILES['arquivo-nota']['tmp_name']; } else { Flight::halt(406, 'Nenhum arquivo selecionado!'); } // Carrega os dados do arquivo XML $xml = simplexml_load_file($filename); // Captura as informações de totais da NF-e $vTotalNF = (double) $xml->NFe->infNFe->total->ICMSTot->vNF; $vTotalProd = (double) $xml->NFe->infNFe->total->ICMSTot->vProd; // Calcula o % de imposto aplicado na NF-e $prcImposto = round(($vTotalNF / $vTotalProd - 1) * 100, 2); // Pequisa se fornecedor existe no BD $paramsPesquisaFornecedor = array(); $paramsPesquisaFornecedor['frn->id_empreendimento'] = $_GET['id_empreendimento']; $paramsPesquisaFornecedor['frn->num_cnpj'] = $xml->NFe->infNFe->emit->CNPJ; $fornecedorDao = new FornecedorDao(); $data['nNF'] = (string) $xml->NFe->infNFe->ide->nNF; $data['fornecedor'] = array(); $aux = $fornecedorDao->getFornecedores(null, null, $paramsPesquisaFornecedor); $data['fornecedor']['dados'] = $aux['fornecedores'][0]; $data['fornecedor']['flg_localizado'] = $data['fornecedor']['dados'] != null; // Captura a lista de itens da NF-e $itensNF = $xml->NFe->infNFe->det; // Percorre a lista de itens da NF-e produrando os mesmo no BD $data['itensBD'] = array(); foreach ($itensNF as $key => $value) { // Captura os dados do produto informados na NF-e $item = array(); $item['id_produto'] = null; $item['codigo_barra'] = !empty($value->prod->cEAN) ? (string) $value->prod->cEAN : (string) $value->prod->cEANTrib; $item['cod_ncm'] = !empty($value->prod->NCM) ? (string) $value->prod->NCM : ''; $item['dsc_unidade_medida'] = !empty($value->prod->uCom) ? (string) $value->prod->uCom : (string) $value->prod->uTrib; $item['num_cest'] = !empty($value->prod->CEST) ? (string) $value->prod->CEST : ''; $item['nome_produto'] = (string) $value->prod->xProd; $item['custo'] = (double) $value->prod->vUnCom; $item['qtd'] = (int) $value->prod->qCom; $item['imposto'] = $prcImposto; $item['vlr_imposto'] = (double) ($item['custo'] * $prcImposto) / 100; $item['flg_localizado'] = false; $item['nome_fabricante'] = ''; $item['peso'] = ''; $item['margem_atacado'] = 0; $item['margem_intermediario'] = 0; $item['margem_varejo'] = 0; if (!empty($item['codigo_barra'])) { // Pesquisa se o produto existe no BD $paramsPesquisaProduto = array(); $paramsPesquisaProduto['tpe->id_empreendimento'] = $_GET['id_empreendimento']; $paramsPesquisaProduto['pro->codigo_barra'] = $item['codigo_barra']; $produtoDao = new ProdutoDao(); $aux = $produtoDao->getProdutos(null, null, $paramsPesquisaProduto); $produto = $produtoDao->getProdutos(null, null, $paramsPesquisaProduto)['produtos'][0]; if ($produto) { // Se o produto foi localizado no BD... // Captura os dados do cadastro do produto no BD $item['id_produto'] = $produto['id_produto']; $item['nome_produto'] = $produto['nome']; $item['nome_fabricante'] = $produto['nome_fabricante']; $item['peso'] = $produto['peso']; //$item['custo'] = (($produto['vlr_custo']) ? $produto['vlr_custo'] : $item['custo']); $item['custo'] = $item['custo']; $item['margem_atacado'] = $produto['perc_venda_atacado']; $item['margem_intermediario'] = $produto['perc_venda_intermediario']; $item['margem_varejo'] = $produto['perc_venda_varejo']; $item['flg_localizado'] = true; $PrecoProdutoTO = new PrecoProdutoTO(); $PrecoProdutoDao = new PrecoProdutoDao(); $PrecoProdutoTO->id_produto = $produto['id']; $PrecoProdutoTO->id_empreendimento = $_GET['id_empreendimento']; $PrecoProdutoTO->vlr_custo = $item['custo']; $PrecoProdutoTO->perc_imposto_compra = $item['imposto']; $PrecoProdutoTO->perc_desconto_compra = $produto['perc_desconto_compra']; $PrecoProdutoTO->perc_venda_atacado = $produto['perc_venda_atacado']; $PrecoProdutoTO->perc_venda_intermediario = $produto['perc_venda_intermediario']; $PrecoProdutoTO->perc_venda_varejo = $produto['perc_venda_varejo']; if (!$PrecoProdutoDao->atualizaPreco($PrecoProdutoTO)) { if ($conn->inTransaction()) { $conn->rollback(); } Flight::halt(500, 'erro ao atualizar preço'); } } else { if (isset($_GET['flg_cpne']) && (int) $_GET['flg_cpne'] == 1) { // Se marcou para cadastrar produtos não localizados no BD... $prodTO = new ProdutoTO(); $prodTO->codigo_barra = $item['codigo_barra']; $prodTO->nome = $item['nome_produto']; $prodTO->cod_ncm = $item['cod_ncm']; $prodTO->dsc_unidade_medida = $item['dsc_unidade_medida']; $prodTO->num_cest = $item['num_cest']; $id_produto = $produtoDao->saveProduto($prodTO); // Cadastro o produto no BD if ($id_produto) { // Se o produto foi cadastrado com sucesso... $prodEmprTO = new ProdutoEmpreendimentoTO(); $prodEmprTO->id_produto = $id_produto; $prodEmprTO->id_empreendimento = $_GET['id_empreendimento']; // Associa o produto ao empreendimento if (!$produtoDao->produtoEmpreendimento($prodEmprTO)) { if ($conn->inTransaction()) { $conn->rollback(); } Flight::halt(500, 'Erro ao associar produto [' . $prodTO->nome . '] ao empreendimento [' . $_GET['id_empreendimento'] . ']'); } if ($data['fornecedor']['flg_localizado']) { // Se o fornecedor foi localizado no BD... $prodFornTO = new ProdutoFornecedorTO(); $prodFornTO->id_produto = (int) $id_produto; $prodFornTO->id_fornecedor = $data['fornecedor']['dados']['id']; // Associa o produto ao fornecedor if (!$produtoDao->fornecedorProduto($prodFornTO)) { if ($conn->inTransaction()) { $conn->rollback(); } Flight::halt(500, 'Erro ao associar produto [' . $prodTO->nome . '] ao fornecedor [' . $data['fornecedor']['dados']['nome_fornecedor'] . ']'); } } $prdProdDao = new PrecoProdutoDao(); $prcProdTO = new PrecoProdutoTO(); $prcProdTO->id_produto = (int) $id_produto; $prcProdTO->id_empreendimento = $_GET['id_empreendimento']; $prcProdTO->vlr_custo = $item['custo']; $prcProdTO->perc_imposto_compra = $item['imposto'] / 100; $prcProdTO->perc_desconto_compra = 0; $prcProdTO->perc_venda_atacado = 0; $prcProdTO->perc_venda_intermediario = 0; $prcProdTO->perc_venda_varejo = 0; //Cadastra o preço do produto e associa if (!$prdProdDao->atualizaPreco($prcProdTO)) { if ($conn->inTransaction()) { $conn->rollback(); } Flight::halt(500, 'Erro ao atualizar preço do produto [' . $prodTO->nome . ']'); } $item['id_produto'] = $id_produto; $item['flg_localizado'] = true; } else { if ($conn->inTransaction()) { $conn->rollback(); } Flight::halt(500, 'erro ao cadastrar produto'); } } } } // Adiciona o item na lista de produtos $data['itensBD'][] = $item; } if ($conn->inTransaction()) { $conn->commit(); } // Exclui o arquivo XML criado temporáriamente unlink($filename); // Retorna os dados da NF-e em formato de JSON Flight::json($data); } catch (Exception $e) { if ($conn->inTransaction()) { $conn->rollback(); } jsonException($e); } }