================================================== 2024.1.5 14/02/2025 17:36:42:745 Erro banco de dados. Erro: 4036 - ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT ORA-06512: at line 1383 Caminho: start \ Menu Old \ Lista Menu \ Chama Menu \ PesqImportaçãoDocumentosFiscai \ Importação Documentos Fiscais \ Doc Principal \ Tela \ Formação de Preços \ Formação de Preços \ Gera Temporarios \ Comando Banco Dados Executa SQL: BEGIN -- INSERT ITENS NORMAIS INSERT INTO TEMPFORMPRECOPRODUTOS ( sessaoClient, nivel, produto, cor, tamanho, personalizacao, gradeProdutoFilho, produtoFilho, corFilho, tamanhoFilho, personalizacaoFilho, quantidadeKitFilho, gradeProdutoNeto, produtoNeto, corNeto, tamanhoNeto, personalizacaoNeto, quantidadeKitNeto, legenda, selecionado, imagem, ordenacao, descricaoProduto, descricaoCor, descricaoTamanho, descricaoPersonalizacao, referencia, controleEstoque, unidadeMedida, casasDecimaisUnidadeMedida, quantidadeEstoque, precoUltimaCompraNovo, idProdutoXCustoAnterior, precoCustoAnterior, idProdutoXCustoAtualizado, precoCustoAtualizado, precoCustoNovo, percentualVariacao, preDocumento, idDocumentoFiscal, tipoDocumento, abreviacao, idDocumento, modeloDocumento, estabelecimento, estabGrupoFiscal, estabRegimeTributario, estabUf, dataEntrada, pessoa, nomeRazaoSocial, pessoaUf, idCenarioCalculoPreco, idItemPreDocumento, idItemDocFiscal, vendedor, localEstoque, quantidade, compraComSt, aliquotaICMS, valorICMS, valorPIS, valorCOFINS, valorICMSST, valorIPI, valorDIFAL, valorII, valorIr, valorCsll, valorAdicFreteMarinhaMercantil, valorDespesaAduaneira, valorFrete, valorDesconto, valorJuros, valorOutrasDespesas, valorDescontoCustoOperacional, valorAcrescimoCustoOperacional, valorAcrescimoExtemporaneo, prazoMedioPonderado, situacao) WITH ITENS AS ( SELECT a.produto, a.cor, a.tamanho, a.personalizacao, a.descricaoProduto, a.descricaoCor, a.descricaoTamanho, a.descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, TO_NUMBER (SUBSTR (a.ordenacao, 43, 3)) ordenacao, TO_NUMBER (SUBSTR (a.ordenacao, 15, 14)) idDocumentoFiscal, TO_NUMBER (SUBSTR (a.ordenacao, 29, 14)) preDocumento, TO_NUMBER (SUBSTR (a.ordenacao, 46, 7)) produtoFiltrar, TO_NUMBER (SUBSTR (a.ordenacao, 53, 15)) / 1000000 divisor FROM ( SELECT a.produto, 0 cor, ' ' tamanho, 0 personalizacao, a.descricaoProduto, ' ' descricaoCor, ' ' descricaoTamanho, ' ' descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, MAX (a.ordenacao) ordenacao FROM ( -- DOCUMENTOS FISCAIS NORMAIS SELECT prod.produto, gradProd.cor, gradProd.tamanho, item.personalizacao, prod.descricao descricaoProduto, prod.referencia, prod.controleEstoque, prod.unidadeMedida, CASE WHEN doc.dataEntradaSaida IS NULL THEN '00000000000000' ELSE TO_CHAR (doc.dataEntradaSaida, 'YYYYMMDDHH24MISS') END || LPAD (item.idDocumentoFiscal,14,'0') || '00000000000000' || LPAD (item.sequencia,3,'0') || LPAD (prod.produto,7,'0') || '000000001000000' ordenacao FROM MODOCFISCALXITENS item JOIN MODOCUMENTOSFISCAIS doc ON doc.idDocumentoFiscal = item.idDocumentoFiscal JOIN CAGRADESPRODUTO gradProd ON gradProd.gradeProduto = item.gradeProduto JOIN CAPRODUTOS prod ON prod.produto = gradProd.produto JOIN CAPRODUTOXESTABELECIMENTO prodXEst ON prodXEst.produto = gradProd.produto AND prodXEst.estabelecimento = 1 AND prodXEst.ativo = 1 WHERE item.idDocumentoFiscal = 10000003755 AND item.cancelado = 0 AND gradProd.produto > 0 AND prod.ativo = 1 UNION ALL -- DOCUMENTOS FISCAIS KIT/COMBO SELECT prod.produto, gradProd.cor, gradProd.tamanho, 0 personalizacao, prod.descricao descricaoProduto, prod.referencia, prod.controleEstoque, prod.unidadeMedida, '000000000000000000000000000000000000000000000' || LPAD (gradProdDoc.produto,7,'0') || LPAD (CASE WHEN kit.quantidade = 0 THEN 1 ELSE kit.quantidade END * 1000000,15,'0') ordencacao FROM MODOCFISCALXITENS item JOIN CAGRADESPRODUTO gradProdDoc ON gradProdDoc.gradeProduto = item.gradeProduto JOIN MODOCUMENTOSFISCAIS doc ON doc.idDocumentoFiscal = item.idDocumentoFiscal JOIN CAGRADEPRODUTOXKITSCOMBOS kit ON kit.gradeProdutoFilho = item.gradeProduto JOIN CAGRADESPRODUTO gradProd ON gradProd.gradeProduto = kit.gradeProduto JOIN CAPRODUTOS prod ON prod.produto = gradProd.produto JOIN CAPRODUTOXESTABELECIMENTO prodXEst ON prodXEst.produto = gradProd.produto AND prodXEst.estabelecimento = 1 AND prodXEst.ativo = 1 WHERE item.idDocumentoFiscal = 10000003755 AND item.cancelado = 0 AND gradProd.produto > 0 AND prod.ativo = 1 AND kit.ativo = 1 AND prod.controleEstoque IN (3,4) UNION ALL -- DOCUMENTOS FISCAIS KIT/COMBO DE KIT/COMBO SELECT prod.produto, gradProd.cor, gradProd.tamanho, 0 personalizacao, prod.descricao descricaoProduto, prod.referencia, prod.controleEstoque, prod.unidadeMedida, '000000000000000000000000000000000000000000000' || LPAD (gradProdDoc.produto,7,'0') || LPAD (CASE WHEN kit.quantidade = 0 THEN 1 ELSE kit.quantidade END * CASE WHEN kit2.quantidade = 0 THEN 1 ELSE kit2.quantidade END * 1000000,15,'0') ordenacao FROM MODOCFISCALXITENS item JOIN CAGRADESPRODUTO gradProdDoc ON gradProdDoc.gradeProduto = item.gradeProduto JOIN MODOCUMENTOSFISCAIS doc ON doc.idDocumentoFiscal = item.idDocumentoFiscal JOIN CAGRADEPRODUTOXKITSCOMBOS kit ON kit.gradeProdutoFilho = item.gradeProduto JOIN CAGRADESPRODUTO gradProdFilho ON gradProdFilho.gradeProduto = kit.gradeProduto JOIN CAPRODUTOS prodFilho ON prodFilho.produto = gradProdFilho.produto JOIN CAGRADEPRODUTOXKITSCOMBOS kit2 ON kit2.gradeProdutoFilho = kit.gradeProduto JOIN CAGRADESPRODUTO gradProd ON gradProd.gradeProduto = kit2.gradeProduto JOIN CAPRODUTOS prod ON prod.produto = gradProd.produto JOIN CAPRODUTOXESTABELECIMENTO prodXEst ON prodXEst.produto = gradProd.produto AND prodXEst.estabelecimento = 1 AND prodXEst.ativo = 1 WHERE item.idDocumentoFiscal = 10000003755 AND item.cancelado = 0 AND gradProd.produto > 0 AND prod.ativo = 1 AND kit.ativo = 1 AND prodFilho.controleEstoque IN (3,4) AND kit2.ativo = 1 AND prod.controleEstoque IN (3,4)) a GROUP BY a.produto, a.descricaoProduto, a.referencia, a.controleEstoque, a.unidadeMedida) a) -- DOCUMENTOS FISCAIS SELECT '202502141648403681416934100814' sessaoClient, 1 nivel, temp.produto, temp.cor, temp.tamanho, temp.personalizacao, 0 gradeProdutoFilho, 0 produtoFilho, 0 corFilho, ' ' tamanhoFilho, 0 personalizacaoFilho, 0 quantidadeKitFilho, 0 gradeProdutoNeto, 0 produtoNeto, 0 corNeto, ' ' tamanhoNeto, 0 personalizacaoNeto, 0 quantidadeKitNeto, 0 legenda, 0 selecionado, ' ' imagem, temp.ordenacao, temp.descricaoProduto, temp.descricaoCor, temp.descricaoTamanho, temp.descricaoPersonalizacao, temp.referencia, temp.controleEstoque, temp.unidadeMedida, uniMed.casasDecimaisUnidadeMedida, 0 quantidadeEstoque, CASE WHEN (COUNT(1) = 1 OR SUM(item.quantidade) = 0) AND (SUM(item.valorDescontoTotal) = 0 OR EXISTS( SELECT 1 FROM PACENARIOCALCPRECOINCID incidCen WHERE incidCen.idCenarioCalculoPreco = COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = doc.modeloDocumento AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = 0 AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), 0)) AND incidCen.incidenciaFormacaoPreco = 6504 AND incidCen.origemDado = 'D')) THEN MAX(item.precoUnitario) ELSE ROUND((( SUM(item.valorProdutoServico) - CASE WHEN EXISTS( SELECT 1 FROM PACENARIOCALCPRECOINCID incidCen WHERE incidCen.idCenarioCalculoPreco = COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = doc.modeloDocumento AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = 0 AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), 0)) AND incidCen.incidenciaFormacaoPreco = 6504 AND incidCen.origemDado = 'D') THEN 0 ELSE SUM(item.valorDescontoTotal) END) / SUM(item.quantidade)),7) END / temp.divisor precoUltimaCompraNovo, COALESCE(( SELECT TO_NUMBER (SUBSTR (MAX (custo.id), 15, 14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, custo.data, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = temp.produto AND custo.data < doc.dataEntradaSaida),0) idProdutoXCustoAnterior, 0 precoCustoAnterior, COALESCE (( SELECT TO_NUMBER (SUBSTR (MAX (custo.id), 15, 14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, (TO_CHAR (custo.data, 'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto, 14, '0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = temp.produto),0) idProdutoXCustoAtualizado, 0 precoCustoAtualizado, 0 precoCustoNovo, 0 percentualVariacao, 0 preDocumento, temp.idDocumentoFiscal, doc.tipoDocumento, tipoDoc.abreviacao, doc.documentoFiscal idDocumento, doc.modeloDocumento, doc.estabelecimento, est.grupoFiscal, pessEst.regimeTributario, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = est.pessoaEstabelecimento AND end.ativo = 1 AND end.principal = 1),' ') estabUf, doc.dataEntradaSaida dataEntrada, doc.pessoa, CASE WHEN doc.pessoa = 0 THEN ' ' ELSE pess.nomeRazaoSocial END nomeRazaoSocial, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = doc.pessoa AND end.ativo = 1 AND end.principal = 1),' ') pessoaUf, COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = doc.modeloDocumento AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = 0 AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), 0)) idCenarioCalculoPreco, 0 idItemPreDocumento, MAX(item.idItemDocFiscal) idItemDocFiscal, MAX (item.vendedor) vendedor, MAX (item.localEstoque) localEstoque, SUM (item.quantidade + item.quantidadeExtemporanea) quantidade, MAX (CASE WHEN doc.nfFornecedor = 1 AND (item.valorICMSSTEscrituracao <> 0 OR item.stICMSEscrituracao IN ('10','30','60','70')) OR item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 1 ELSE 0 END) compraComSt, MAX (CASE WHEN doc.nfFornecedor = 1 THEN item.aliquotaICMSEscrituracao WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 0 ELSE item.aliquotaICMS + item.creditoSimplesNacional END) aliquotaICMS, SUM (CASE WHEN doc.nfFornecedor = 1 THEN item.valorICMSEscrituracao WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 0 ELSE item.valorICMS + item.valorCreditoSimplesNacional END) / temp.divisor valorICMS, SUM (item.valorPIS) / temp.divisor valorPIS, SUM (item.valorCOFINS) / temp.divisor valorCOFINS, SUM (CASE WHEN doc.nfFornecedor = 1 AND item.valorICMSSTEscrituracao <> 0 THEN item.valorICMSSTEscrituracao ELSE item.valorICMSST END) / temp.divisor valorICMSST, SUM(item.valorIPI) / temp.divisor valorIPI, SUM(item.valorICMSUFDestinatario) / temp.divisor valorDIFAL, SUM(item.valorII) / temp.divisor valorII, SUM(item.valorRetIRRF) / temp.divisor valorIR, SUM(item.valorRetCSLL) / temp.divisor valorCSLL, SUM(item.valorAdicFreteMarinhaMerTotal) / temp.divisor valorAdicFreteMarinhaMerTotal, SUM(item.valorDespesasAduaneirasTotal) / temp.divisor valorDespesasAduaneirasTotal, SUM(item.valorFreteTotal) / temp.divisor valorFrete, SUM(item.valorDescontoTotal) / temp.divisor valorDesconto, SUM(item.valorJurosPagamento) / temp.divisor valorJuros, SUM(item.valorOutrasDespesasTotal - item.valorJurosPagamento) / temp.divisor valorOutrasDespesas, SUM(item.valorDescontoCustoOpTotal) / temp.divisor valorDescontoCustoOpTotal, SUM(item.valorAcrescimoCustoOpTotal) / temp.divisor valorAcrescimoCustoOpTotal, SUM(item.valorAcrescimoExtempTotal - ROUND(item.quantidadeExtemporanea * item.precoUnitario,2)) / temp.divisor valorAcrescimoExtempTotal, doc.prazoMedioPonderado, 'P' situacao FROM ITENS temp JOIN SIUNIDADESMEDIDA uniMed ON uniMed.unidadeMedida = temp.unidadeMedida JOIN MODOCFISCALXITENS item ON item.idDocumentoFiscal = temp.idDocumentoFiscal JOIN MODOCUMENTOSFISCAIS doc ON doc.idDocumentoFiscal = temp.idDocumentoFiscal JOIN CAGRADESPRODUTO gradProd ON gradProd.gradeProduto = item.gradeProduto JOIN SITIPOSDOCUMENTO tipoDoc ON tipoDoc.tipoDocumento = doc.tipoDocumento JOIN PAESTABELECIMENTOS est ON est.estabelecimento = doc.estabelecimento JOIN CAPESSOAS pessEst ON pessEst.pessoa = est.pessoaEstabelecimento JOIN CAPESSOAS pess ON pess.pessoa = doc.pessoa WHERE temp.idDocumentoFiscal > 0 AND item.cancelado = 0 AND gradProd.produto = temp.produtoFiltrar GROUP BY temp.produto, temp.cor, temp.tamanho, temp.personalizacao, temp.ordenacao, temp.divisor, temp.descricaoProduto, temp.descricaoCor, temp.descricaoTamanho, temp.descricaoPersonalizacao, temp.referencia, temp.controleEstoque, temp.unidadeMedida, uniMed.casasDecimaisUnidadeMedida, temp.idDocumentoFiscal, doc.tipoDocumento, doc.documentoFiscal, doc.modeloDocumento, doc.estabelecimento, doc.dataEntradaSaida, doc.pessoa, doc.prazoMedioPonderado, tipoDoc.abreviacao, est.grupoFiscal, est.pessoaEstabelecimento, pessEst.regimeTributario, pess.nomeRazaoSocial; -- INSERT ITENS KIT INSERT INTO TEMPFORMPRECOPRODUTOS ( sessaoClient, nivel, produto, cor, tamanho, personalizacao, gradeProdutoFilho, produtoFilho, corFilho, tamanhoFilho, personalizacaoFilho, quantidadeKitFilho, gradeProdutoNeto, produtoNeto, corNeto, tamanhoNeto, personalizacaoNeto, quantidadeKitNeto, legenda, selecionado, imagem, ordenacao, descricaoProduto, descricaoCor, descricaoTamanho, descricaoPersonalizacao, referencia, controleEstoque, unidadeMedida, casasDecimaisUnidadeMedida, quantidadeEstoque, precoUltimaCompraNovo, idProdutoXCustoAnterior, precoCustoAnterior, idProdutoXCustoAtualizado, precoCustoAtualizado, precoCustoNovo, percentualVariacao, preDocumento, idDocumentoFiscal, tipoDocumento, abreviacao, idDocumento, modeloDocumento, estabelecimento, estabGrupoFiscal, estabRegimeTributario, estabUf, dataEntrada, pessoa, nomeRazaoSocial, pessoaUf, idCenarioCalculoPreco, idItemPreDocumento, idItemDocFiscal, vendedor, localEstoque, quantidade, compraComSt, aliquotaICMS, valorICMS, valorPIS, valorCOFINS, valorICMSST, valorIPI, valorDIFAL, valorII, valorIr, valorCsll, valorAdicFreteMarinhaMercantil, valorDespesaAduaneira, valorFrete, valorDesconto, valorJuros, valorOutrasDespesas, valorDescontoCustoOperacional, valorAcrescimoCustoOperacional, valorAcrescimoExtemporaneo, prazoMedioPonderado, situacao) WITH TEMP AS ( SELECT a.produto, a.cor, a.tamanho, a.personalizacao, a.descricaoProduto, a.descricaoCor, a.descricaoTamanho, a.descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, a.ordenacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, CASE WHEN a.kitSoma = 0 THEN 1 ELSE a.kitSoma END divisor, TO_NUMBER (SUBSTR(a.id, 15, 14)) idItemDocFiscal, TO_NUMBER (SUBSTR(a.id, 29, 14)) idItemPreDocumento FROM ( SELECT a.produto, 0 cor, ' ' tamanho, 0 personalizacao, a.descricaoProduto, ' ' descricaoCor, ' ' descricaoTamanho, ' ' descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, a.ordenacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, a.kitSoma, MAX (a.id) id FROM ( SELECT gradProdPai.produto, gradProdPai.cor, gradProdPai.tamanho, 0 personalizacao, prod.descricao descricaoProduto, CASE WHEN gradProdPai.cor = 0 THEN ' ' ELSE cor.descricao END descricaoCor, CASE WHEN gradProdPai.tamanho = ' ' THEN ' ' ELSE tam.descricao END descricaoTamanho, ' ' descricaoPersonalizacao, prod.referencia, prod.controleEstoque, prod.unidadeMedida, uni.casasDecimaisUnidadeMedida, a.ordenacao, gradProd.gradeProduto gradeProdutoFilho, gradProd.produto produtoFilho, gradProd.cor corFilho, gradProd.tamanho tamanhoFilho, 0 personalizacaoFilho, kit.quantidade quantidadeKitFilho, COALESCE (( SELECT SUM (kitSoma.quantidade) FROM CAGRADEPRODUTOXKITSCOMBOS kitSoma WHERE kitSoma.gradeProduto = kit.gradeProduto AND kitSoma.ativo = 1), kit.quantidade) kitSoma, CASE WHEN a.dataEntrada IS NULL THEN '00000000000000' ELSE TO_CHAR (a.dataEntrada, 'YYYYMMDDHH24MISS') END || LPAD (a.idItemDocFiscal, 14, '0') || LPAD (a.idItemPreDocumento, 14, '0') || '000' id FROM CAGRADESPRODUTO gradProd JOIN CAPRODUTOS prod ON prod.produto = gradProd.produto JOIN SIUNIDADESMEDIDA uni ON uni.unidadeMedida = prod.unidadeMedida JOIN CAGRADEPRODUTOXKITSCOMBOS kit ON kit.gradeProdutoFilho = gradProd.gradeProduto JOIN CAGRADESPRODUTO gradProdPai ON gradProdPai.gradeProduto = kit.gradeProduto JOIN PACORES cor ON cor.cor = gradProdPai.cor JOIN PATAMANHOS tam ON tam.tamanho = gradProdPai.tamanho JOIN TEMPFORMPRECOPRODUTOS a ON a.sessaoClient = '202502141648403681416934100814' AND a.produto = gradProdPai.produto AND a.cor = gradProdPai.cor AND a.tamanho = gradProdPai.tamanho AND a.personalizacao = 0 WHERE gradProd.gradeProduto > 0 AND kit.ativo = 1 AND a.controleEstoque IN (3,4) AND a.nivel = 1 AND (a.idItemDocFiscal <> 0 OR a.idItemPreDocumento <> 0) UNION ALL SELECT gradProdPai.produto, gradProdPai.cor, gradProdPai.tamanho, 0 personalizacao, prod.descricao descricaoProduto, CASE WHEN gradProdPai.cor = 0 THEN ' ' ELSE cor.descricao END descricaoCor, CASE WHEN gradProdPai.tamanho = ' ' THEN ' ' ELSE tam.descricao END descricaoTamanho, ' ' descricaoPersonalizacao, prod.referencia, prod.controleEstoque, prod.unidadeMedida, uni.casasDecimaisUnidadeMedida, a.ordenacao, item.gradeProduto gradeProdutoFilho, gradProd.produto produtoFilho, gradProd.cor corFilho, gradProd.tamanho tamanhoFilho, item.personalizacao personalizacaoFilho, kit.quantidade quantidadeKitFilho, 1 kitSoma, CASE WHEN doc.dataEntradaSaida IS NULL THEN '00000000000000' ELSE TO_CHAR (doc.dataEntradaSaida, 'YYYYMMDDHH24MISS') END || LPAD (item.idItemDocFiscal,14,'0') || '00000000000000' || LPAD (item.sequencia,3,'0') id FROM MODOCFISCALXITENS item JOIN MODOCUMENTOSFISCAIS doc ON doc.idDocumentoFiscal = item.idDocumentoFiscal JOIN CAGRADESPRODUTO gradProd ON gradProd.gradeProduto = item.gradeProduto JOIN CAPRODUTOS prod ON prod.produto = gradProd.produto JOIN SIUNIDADESMEDIDA uni ON uni.unidadeMedida = prod.unidadeMedida JOIN CAGRADEPRODUTOXKITSCOMBOS kit ON kit.gradeProdutoFilho = item.gradeProduto JOIN CAGRADESPRODUTO gradProdPai ON gradProdPai.gradeProduto = kit.gradeProduto JOIN PACORES cor ON cor.cor = gradProdPai.cor JOIN PATAMANHOS tam ON tam.tamanho = gradProdPai.tamanho JOIN TEMPFORMPRECOPRODUTOS a ON a.sessaoClient = '202502141648403681416934100814' AND a.produto = gradProdPai.produto WHERE item.cancelado = 0 AND item.gradeProduto > 0 AND doc.situacaoDocumentoFiscal IN (19,20,22,23) AND doc.entradaSaida = 'E' AND doc.devolucaoAnulacaoRetorno = 0 AND doc.atualizaUltimaCompra = 1 AND kit.ativo = 1 AND a.controleEstoque IN (3,4) AND a.nivel = 1 AND a.idItemDocFiscal = 0 AND a.idItemPreDocumento = 0 UNION ALL SELECT gradProdPai.produto, gradProdPai.cor, gradProdPai.tamanho, 0 personalizacao, prod.descricao descricaoProduto, CASE WHEN gradProdPai.cor = 0 THEN ' ' ELSE cor.descricao END descricaoCor, CASE WHEN gradProdPai.tamanho = ' ' THEN ' ' ELSE tam.descricao END descricaoTamanho, ' ' descricaoPersonalizacao, prod.referencia, prod.controleEstoque, prod.unidadeMedida, uni.casasDecimaisUnidadeMedida, a.ordenacao, item.gradeProduto gradeProdutoFilho, gradProd.produto produtoFilho, gradProd.cor corFilho, gradProd.tamanho tamanhoFilho, item.personalizacao personalizacaoFilho, kit.quantidade quantidadeKitFilho, 1 kitSoma, CASE WHEN doc.dataEntradaSaida IS NULL THEN '00000000000000' ELSE TO_CHAR (doc.dataEntradaSaida, 'YYYYMMDDHH24MISS') END || '00000000000000' || LPAD (item.idItemPreDocumento,14,'0') || LPAD (item.sequencia,3,'0') id FROM MOPREDOCUMXITENS item JOIN MOPREDOCUMENTOS doc ON doc.preDocumento = item.preDocumento JOIN CAGRADESPRODUTO gradProd ON gradProd.gradeProduto = item.gradeProduto JOIN CAPRODUTOS prod ON prod.produto = gradProd.produto JOIN SIUNIDADESMEDIDA uni ON uni.unidadeMedida = prod.unidadeMedida JOIN CAGRADEPRODUTOXKITSCOMBOS kit ON kit.gradeProdutoFilho = item.gradeProduto JOIN CAGRADESPRODUTO gradProdPai ON gradProdPai.gradeProduto = kit.gradeProduto JOIN PACORES cor ON cor.cor = gradProdPai.cor JOIN PATAMANHOS tam ON tam.tamanho = gradProdPai.tamanho JOIN TEMPFORMPRECOPRODUTOS a ON a.sessaoClient = '202502141648403681416934100814' AND a.produto = gradProdPai.produto WHERE item.cancelado = 0 AND item.gradeProduto > 0 AND doc.statusPreDocumento = 'A' AND doc.entradaSaida = 'E' AND doc.devolucaoAnulacaoRetorno = 0 AND doc.atualizaUltimaCompra = 1 AND kit.ativo = 1 AND a.controleEstoque IN (3,4) AND a.nivel = 1 AND a.idItemDocFiscal = 0 AND a.idItemPreDocumento = 0 UNION ALL SELECT gradProdPai.produto, gradProdPai.cor, gradProdPai.tamanho, 0 personalizacao, prod.descricao descricaoProduto, CASE WHEN gradProdPai.cor = 0 THEN ' ' ELSE cor.descricao END descricaoCor, CASE WHEN gradProdPai.tamanho = ' ' THEN ' ' ELSE tam.descricao END descricaoTamanho, ' ' descricaoPersonalizacao, prod.referencia, prod.controleEstoque, prod.unidadeMedida, uni.casasDecimaisUnidadeMedida, a.ordenacao, gradProd.gradeProduto gradeProdutoFilho, gradProd.produto produtoFilho, gradProd.cor corFilho, gradProd.tamanho tamanhoFilho, 0 personalizacaoFilho, kit.quantidade quantidadeKitFilho, 1 kitSoma, '000000000000000000000000000000000000000000000' id FROM CAGRADESPRODUTO gradProd JOIN CAPRODUTOS prod ON prod.produto = gradProd.produto JOIN SIUNIDADESMEDIDA uni ON uni.unidadeMedida = prod.unidadeMedida JOIN CAGRADEPRODUTOXKITSCOMBOS kit ON kit.gradeProdutoFilho = gradProd.gradeProduto JOIN CAGRADESPRODUTO gradProdPai ON gradProdPai.gradeProduto = kit.gradeProduto JOIN PACORES cor ON cor.cor = gradProdPai.cor JOIN PATAMANHOS tam ON tam.tamanho = gradProdPai.tamanho JOIN TEMPFORMPRECOPRODUTOS a ON a.sessaoClient = '202502141648403681416934100814' AND a.produto = gradProdPai.produto AND a.cor = gradProdPai.cor AND a.tamanho = gradProdPai.tamanho AND a.personalizacao = 0 WHERE gradProd.gradeProduto > 0 AND kit.ativo = 1 AND a.controleEstoque IN (3,4) AND a.nivel = 1 AND a.idItemDocFiscal = 0 AND a.idItemPreDocumento = 0) a GROUP BY a.produto, a.descricaoProduto, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, a.ordenacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, a.kitSoma) a) SELECT '202502141648403681416934100814' sessaoClient, 2 nivel, a.produto, a.cor, a.tamanho, a.personalizacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, 0 gradeProdutoNeto, 0 produtoNeto, 0 corNeto, ' ' tamanhoNeto, 0 personalizacaoNeto, 0 quantidadeKitNeto, 0 legenda, 0 selecionado, ' ' imagem, a.ordenacao, a.descricaoProduto, a.descricaoCor, a.descricaoTamanho, a.descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, 0 quantidadeEstoque, item.precoUnitario / a.divisor precoUltimaCompraNovo, COALESCE(( SELECT TO_NUMBER (SUBSTR (MAX (custo.id), 15, 14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, custo.data, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoFilho AND custo.data < doc.dataEntradaSaida),0) idProdutoXCustoAnterior, 0 precoCustoAnterior, COALESCE(( SELECT TO_NUMBER(SUBSTR(MAX(custo.id),15,14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoFilho),0) idProdutoXCustoAtualizado, 0 precoCustoAtualizado, 0 precoCustoNovo, 0 percentualVariacao, 0 preDocumento, doc.idDocumentoFiscal, doc.tipoDocumento, tipoDoc.abreviacao, doc.documentoFiscal idDocumento, doc.modeloDocumento, doc.estabelecimento, est.grupoFiscal, pessEst.regimeTributario, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = est.pessoaEstabelecimento AND end.ativo = 1 AND end.principal = 1),' ') estabUf, doc.dataEntradaSaida dataEntrada, doc.pessoa, CASE WHEN doc.pessoa = 0 THEN ' ' ELSE pess.nomeRazaoSocial END nomeRazaoSocial, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = doc.pessoa AND end.ativo = 1 AND end.principal = 1),' ') pessoaUf, COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = doc.modeloDocumento AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = 0 AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), 0)) idCenarioCalculoPreco, 0 idItemPreDocumento, item.idItemDocFiscal, item.vendedor, item.localEstoque, (item.quantidade + item.quantidadeExtemporanea) quantidade, CASE WHEN doc.nfFornecedor = 1 AND (item.valorICMSSTEscrituracao <> 0 OR item.stICMSEscrituracao IN ('10','30','60','70')) OR item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 1 ELSE 0 END compraComSt, CASE WHEN doc.nfFornecedor = 1 THEN item.aliquotaICMSEscrituracao WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 0 ELSE item.aliquotaICMS + item.creditoSimplesNacional END aliquotaICMS, CASE WHEN doc.nfFornecedor = 1 THEN item.valorICMSEscrituracao WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 0 ELSE item.valorICMS + item.valorCreditoSimplesNacional END / a.divisor valorICMS, item.valorPIS / a.divisor valorPIS, item.valorCOFINS / a.divisor valorCOFINS, CASE WHEN doc.nfFornecedor = 1 AND item.valorICMSSTEscrituracao <> 0 THEN item.valorICMSSTEscrituracao ELSE item.valorICMSST END / a.divisor valorICMSST, item.valorIPI / a.divisor valorIPI, item.valorICMSUFDestinatario / a.divisor valorDIFAL, item.valorII / a.divisor valorII, item.valorRetIRRF / a.divisor valorIR, item.valorRetCSLL / a.divisor valorCSLL, item.valorAdicFreteMarinhaMerTotal / a.divisor valorAdicFreteMarinhaMerTotal, item.valorDespesasAduaneirasTotal / a.divisor valorDespesasAduaneirasTotal, item.valorFreteTotal / a.divisor valorFrete, item.valorDescontoTotal / a.divisor valorDesconto, item.valorJurosPagamento / a.divisor valorJuros, (item.valorOutrasDespesasTotal - item.valorJurosPagamento) / a.divisor valorOutrasDespesas, item.valorDescontoCustoOpTotal / a.divisor valorDescontoCustoOpTotal, item.valorAcrescimoCustoOpTotal / a.divisor valorAcrescimoCustoOpTotal, (item.valorAcrescimoExtempTotal - ROUND(item.quantidadeExtemporanea * item.precoUnitario,2)) / a.divisor valorAcrescimoExtempTotal, doc.prazoMedioPonderado, 'P' situacao FROM TEMP a JOIN MODOCFISCALXITENS item ON item.idItemDocFiscal = a.idItemDocFiscal JOIN MODOCUMENTOSFISCAIS doc ON doc.idDocumentoFiscal = item.idDocumentoFiscal JOIN SITIPOSDOCUMENTO tipoDoc ON tipoDoc.tipoDocumento = doc.tipoDocumento JOIN PAESTABELECIMENTOS est ON est.estabelecimento = doc.estabelecimento JOIN CAPESSOAS pessEst ON pessEst.pessoa = est.pessoaEstabelecimento JOIN CAPESSOAS pess ON pess.pessoa = doc.pessoa WHERE a.idItemDocFiscal > 0 UNION ALL SELECT '202502141648403681416934100814' sessaoClient, 2 nivel, a.produto, a.cor, a.tamanho, a.personalizacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, 0 gradeProdutoNeto, 0 produtoNeto, 0 corNeto, ' ' tamanhoNeto, 0 personalizacaoNeto, 0 quantidadeKitNeto, 0 legenda, 0 selecionado, ' ' imagem, a.ordenacao, a.descricaoProduto, a.descricaoCor, a.descricaoTamanho, a.descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, 0 quantidadeEstoque, item.precoUnitario / a.divisor precoUltimaCompraNovo, COALESCE(( SELECT TO_NUMBER (SUBSTR (MAX (custo.id), 15, 14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, custo.data, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoFilho AND custo.data < doc.dataEntradaSaida),0) idProdutoXCustoAnterior, 0 precoCustoAnterior, COALESCE(( SELECT TO_NUMBER(SUBSTR(MAX(custo.id),15,14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoFilho),0) idProdutoXCustoAtualizado, 0 precoCustoAtualizado, 0 precoCustoNovo, 0 percentualVariacao, doc.preDocumento, 0 idDocumentoFiscal, doc.tipoDocumento, tipoDoc.abreviacao, doc.preDocumento idDocumento, doc.modeloDocumento, doc.estabelecimento, est.grupoFiscal, pessEst.regimeTributario, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = est.pessoaEstabelecimento AND end.ativo = 1 AND end.principal = 1),' ') estabUf, doc.dataEntradaSaida dataEntrada, doc.pessoa, CASE WHEN doc.pessoa = 0 THEN ' ' ELSE pess.nomeRazaoSocial END nomeRazaoSocial, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = doc.pessoa AND end.ativo = 1 AND end.principal = 1),' ') pessoaUf, COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = doc.modeloDocumento AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = 0 AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), 0)) idCenarioCalculoPreco, item.idItemPreDocumento, 0 idItemDocFiscal, item.vendedor, item.localEstoque, (item.quantidade + item.quantidadeExtemporanea) quantidade, CASE WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 1 ELSE 0 END compraComSt, CASE WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 0 ELSE item.aliquotaICMS + item.creditoSimplesNacional END aliquotaICMS, CASE WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 0 ELSE item.valorICMS + item.valorCreditoSimplesNacional END / a.divisor valorICMS, item.valorPIS / a.divisor valorPIS, item.valorCOFINS / a.divisor valorCOFINS, item.valorICMSST / a.divisor valorICMSST, item.valorIPI / a.divisor valorIPI, item.valorICMSUFDestinatario / a.divisor valorDIFAL, item.valorII / a.divisor valorII, item.valorRetIRRF / a.divisor valorIR, item.valorRetCSLL / a.divisor valorCSLL, item.valorAdicFreteMarinhaMerTotal / a.divisor valorAdicFreteMarinhaMerTotal, item.valorDespesasAduaneirasTotal / a.divisor valorDespesasAduaneirasTotal, item.valorFreteTotal / a.divisor valorFrete, item.valorDescontoTotal / a.divisor valorDesconto, item.valorJurosPagamento / a.divisor valorJuros, (item.valorOutrasDespesasTotal - item.valorJurosPagamento) / a.divisor valorOutrasDespesas, item.valorDescontoCustoOpTotal / a.divisor valorDescontoCustoOpTotal, item.valorAcrescimoCustoOpTotal / a.divisor valorAcrescimoCustoOpTotal, (item.valorAcrescimoExtempTotal - ROUND(item.quantidadeExtemporanea * item.precoUnitario,2)) / a.divisor valorAcrescimoExtempTotal, doc.prazoMedioPonderado, 'P' situacao FROM TEMP a JOIN MOPREDOCUMXITENS item ON item.idItemPreDocumento = a.idItemPreDocumento JOIN MOPREDOCUMENTOS doc ON doc.preDocumento = item.preDocumento JOIN SITIPOSDOCUMENTO tipoDoc ON tipoDoc.tipoDocumento = doc.tipoDocumento JOIN PAESTABELECIMENTOS est ON est.estabelecimento = doc.estabelecimento JOIN CAPESSOAS pessEst ON pessEst.pessoa = est.pessoaEstabelecimento JOIN CAPESSOAS pess ON pess.pessoa = doc.pessoa WHERE a.idItemPreDocumento > 0 UNION ALL -- PRODUTOS SEM MOVIMENTAÇÃO SELECT '202502141648403681416934100814' sessaoClient, 2 nivel, a.produto, a.cor, a.tamanho, a.personalizacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, 0 gradeProdutoNeto, 0 produtoNeto, 0 corNeto, ' ' tamanhoNeto, 0 personalizacaoNeto, 0 quantidadeKitNeto, 0 legenda, 0 selecionado, ' ' imagem, a.ordenacao, a.descricaoProduto, a.descricaoCor, a.descricaoTamanho, a.descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, 0 quantidadeEstoque, FUNC_ADD_BUSCA_PRECO ( '2', 0, 0, 2, 10000000172, 1, TRUNC(SYSDATE), 0, ' ', ' ', 0, 0, a.personalizacaoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.controleEstoque, '2', ' ') precoUltimaCompraNovo, COALESCE(( SELECT TO_NUMBER (SUBSTR (MAX (custo.id), 15, 14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, custo.data, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoFilho),0) idProdutoXCustoAnterior, 0 precoCustoAnterior, COALESCE(( SELECT TO_NUMBER(SUBSTR(MAX(custo.id),15,14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoFilho),0) idProdutoXCustoAtualizado, 0 precoCustoAtualizado, 0 precoCustoNovo, 0 percentualVariacao, 0 preDocumento, 0 idDocumentoFiscal, 0 tipoDocumento, ' ' abreviacao, 0 idDocumento, 0 modeloDocumento, 1 estabelecimento, est.grupoFiscal, pessEst.regimeTributario, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = est.pessoaEstabelecimento AND end.ativo = 1 AND end.principal = 1),' ') estabUf, null dataEntrada, 0 pessoa, ' ' nomeRazaoSocial, ' ' Uf, COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = 0 AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = 1 AND cenXEst.ativo = 1))), 0) idCenarioCalculoPreco, 0 idItemPreDocumento, 0 idItemDocFiscal, 0 vendedor, 0 localEstoque, 1 quantidade, 0 compraComSt, 0 aliquotaICMS, 0 valorICMS, 0 valorPIS, 0 valorCOFINS, 0 valorICMSST, 0 valorIPI, 0 valorDIFAL, 0 valorII, 0 valorIR, 0 valorCSLL, 0 valorAdicFreteMarinhaMerTotal, 0 valorDespesasAduaneirasTotal, 0 valorFrete, 0 valorDesconto, 0 valorJuros, 0 valorOutrasDespesas, 0 valorDescontoCustoOpTotal, 0 valorAcrescimoCustoOpTotal, 0 valorAcrescimoExtempTotal, 0 prazoMedioPonderado, 'P' situacao FROM TEMP a JOIN PAESTABELECIMENTOS est ON est.estabelecimento = 1 JOIN CAPESSOAS pessEst ON pessEst.pessoa = est.pessoaEstabelecimento WHERE a.idItemPreDocumento = 0 AND a.idItemDocFiscal = 0; -- INSERT ITENS KIT DE KIT INSERT INTO TEMPFORMPRECOPRODUTOS ( sessaoClient, nivel, produto, cor, tamanho, personalizacao, gradeProdutoFilho, produtoFilho, corFilho, tamanhoFilho, personalizacaoFilho, quantidadeKitFilho, gradeProdutoNeto, produtoNeto, corNeto, tamanhoNeto, personalizacaoNeto, quantidadeKitNeto, legenda, selecionado, imagem, ordenacao, descricaoProduto, descricaoCor, descricaoTamanho, descricaoPersonalizacao, referencia, controleEstoque, unidadeMedida, casasDecimaisUnidadeMedida, quantidadeEstoque, precoUltimaCompraNovo, idProdutoXCustoAnterior, precoCustoAnterior, idProdutoXCustoAtualizado, precoCustoAtualizado, precoCustoNovo, percentualVariacao, preDocumento, idDocumentoFiscal, tipoDocumento, abreviacao, idDocumento, modeloDocumento, estabelecimento, estabGrupoFiscal, estabRegimeTributario, estabUf, dataEntrada, pessoa, nomeRazaoSocial, pessoaUf, idCenarioCalculoPreco, idItemPreDocumento, idItemDocFiscal, vendedor, localEstoque, quantidade, compraComSt, aliquotaICMS, valorICMS, valorPIS, valorCOFINS, valorICMSST, valorIPI, valorDIFAL, valorII, valorIr, valorCsll, valorAdicFreteMarinhaMercantil, valorDespesaAduaneira, valorFrete, valorDesconto, valorJuros, valorOutrasDespesas, valorDescontoCustoOperacional, valorAcrescimoCustoOperacional, valorAcrescimoExtemporaneo, prazoMedioPonderado, situacao) WITH TEMP AS ( SELECT a.produto, a.cor, a.tamanho, a.personalizacao, a.descricaoProduto, a.descricaoCor, a.descricaoTamanho, a.descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, a.ordenacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, a.gradeProdutoNeto, a.produtoNeto, a.corNeto, a.tamanhoNeto, a.personalizacaoNeto, a.quantidadeKitNeto, CASE WHEN a.kitSoma = 0 THEN 1 ELSE a.kitSoma END divisor, TO_NUMBER(SUBSTR(a.id,15,14)) idItemDocFiscal, TO_NUMBER(SUBSTR(a.id,29,14)) idItemPreDocumento FROM ( SELECT a.produto, a.cor, a.tamanho, a.personalizacao, a.descricaoProduto, a.descricaoCor, a.descricaoTamanho, a.descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, a.ordenacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, a.gradeProdutoNeto, a.produtoNeto, a.corNeto, a.tamanhoNeto, a.personalizacaoNeto, a.quantidadeKitNeto, a.kitSoma, MAX (a.id) id FROM ( SELECT a.produto, a.cor, a.tamanho, a.personalizacao, prod.descricao descricaoProduto, CASE WHEN a.cor = 0 THEN ' ' ELSE cor.descricao END descricaoCor, CASE WHEN a.tamanho = ' ' THEN ' ' ELSE tam.descricao END descricaoTamanho, CASE WHEN a.personalizacao = 0 THEN ' ' ELSE pers.descricao END descricaoPersonalizacao, prod.referencia, prod.controleEstoque, prod.unidadeMedida, uni.casasDecimaisUnidadeMedida, a.ordenacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, gradProd.gradeProduto gradeProdutoNeto, gradProd.produto produtoNeto, gradProd.cor corNeto, gradProd.tamanho tamanhoNeto, 0 personalizacaoNeto, kit.quantidade quantidadeKitNeto, COALESCE (( SELECT SUM (kitSoma.quantidade) FROM CAGRADEPRODUTOXKITSCOMBOS kitSoma WHERE kitSoma.gradeProduto = kit.gradeProduto AND kitSoma.ativo = 1), kit.quantidade) kitSoma, CASE WHEN a.dataEntrada IS NULL THEN '00000000000000' ELSE TO_CHAR (a.dataEntrada, 'YYYYMMDDHH24MISS') END || LPAD (a.idItemDocFiscal,14,'0') || LPAD (a.idItemPreDocumento,14,'0') || '000' id FROM CAGRADESPRODUTO gradProd JOIN CAPRODUTOS prod ON prod.produto = gradProd.produto JOIN SIUNIDADESMEDIDA uni ON uni.unidadeMedida = prod.unidadeMedida JOIN CAGRADEPRODUTOXKITSCOMBOS kit ON kit.gradeProdutoFilho = gradProd.gradeProduto JOIN CAGRADESPRODUTO gradProdPai ON gradProdPai.gradeProduto = kit.gradeProduto JOIN TEMPFORMPRECOPRODUTOS a ON a.sessaoClient = '202502141648403681416934100814' AND a.produtoFilho = gradProdPai.produto AND a.corFilho = gradProdPai.cor AND a.tamanhoFilho = gradProdPai.tamanho AND a.personalizacaoFilho = 0 JOIN PACORES cor ON cor.cor = a.cor JOIN PATAMANHOS tam ON tam.tamanho = a.tamanho JOIN PAPERSONALIZACOES pers ON pers.personalizacao = a.personalizacao WHERE gradProd.gradeProduto > 0 AND kit.ativo = 1 AND a.controleEstoque IN (3,4) AND a.nivel = 2 AND (a.idItemDocFiscal <> 0 OR a.idItemPreDocumento <> 0) UNION ALL SELECT a.produto, a.cor, a.tamanho, a.personalizacao, prod.descricao descricaoProduto, CASE WHEN a.cor = 0 THEN ' ' ELSE cor.descricao END descricaoCor, CASE WHEN a.tamanho = ' ' THEN ' ' ELSE tam.descricao END descricaoTamanho, CASE WHEN a.personalizacao = 0 THEN ' ' ELSE pers.descricao END descricaoPersonalizacao, prod.referencia, prod.controleEstoque, prod.unidadeMedida, uni.casasDecimaisUnidadeMedida, a.ordenacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, item.gradeProduto gradeProdutoNeto, gradProd.produto produtoNeto, gradProd.cor corNeto, gradProd.tamanho tamanhoNeto, item.personalizacao personalizacaoNeto, kit.quantidade quantidadeKitNeto, 1 kitSoma, CASE WHEN doc.dataEntradaSaida IS NULL THEN '00000000000000' ELSE TO_CHAR (doc.dataEntradaSaida, 'YYYYMMDDHH24MISS') END || LPAD (item.idItemDocFiscal,14,'0') || '00000000000000' || LPAD (item.sequencia,3,'0') id FROM MODOCFISCALXITENS item JOIN MODOCUMENTOSFISCAIS doc ON doc.idDocumentoFiscal = item.idDocumentoFiscal JOIN CAGRADESPRODUTO gradProd ON gradProd.gradeProduto = item.gradeProduto JOIN CAPRODUTOS prod ON prod.produto = gradProd.produto JOIN SIUNIDADESMEDIDA uni ON uni.unidadeMedida = prod.unidadeMedida JOIN CAGRADEPRODUTOXKITSCOMBOS kit ON kit.gradeProdutoFilho = item.gradeProduto JOIN CAGRADESPRODUTO gradProdPai ON gradProdPai.gradeProduto = kit.gradeProduto JOIN TEMPFORMPRECOPRODUTOS a ON a.sessaoClient = '202502141648403681416934100814' AND a.produtoFilho = gradProdPai.produto AND a.corFilho = gradProdPai.cor AND a.tamanhoFilho = gradProdPai.tamanho AND a.personalizacaoFilho = 0 JOIN PACORES cor ON cor.cor = a.cor JOIN PATAMANHOS tam ON tam.tamanho = a.tamanho JOIN PAPERSONALIZACOES pers ON pers.personalizacao = a.personalizacao WHERE item.cancelado = 0 AND item.gradeProduto > 0 AND doc.situacaoDocumentoFiscal IN (19,20,22,23) AND doc.entradaSaida = 'E' AND doc.devolucaoAnulacaoRetorno = 0 AND doc.atualizaUltimaCompra = 1 AND kit.ativo = 1 AND a.controleEstoque IN (3,4) AND a.nivel = 2 AND a.idItemDocFiscal = 0 AND a.idItemPreDocumento = 0 UNION ALL SELECT a.produto, a.cor, a.tamanho, a.personalizacao, prod.descricao descricaoProduto, CASE WHEN a.cor = 0 THEN ' ' ELSE cor.descricao END descricaoCor, CASE WHEN a.tamanho = ' ' THEN ' ' ELSE tam.descricao END descricaoTamanho, CASE WHEN a.personalizacao = 0 THEN ' ' ELSE pers.descricao END descricaoPersonalizacao, prod.referencia, prod.controleEstoque, prod.unidadeMedida, uni.casasDecimaisUnidadeMedida, a.ordenacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, item.gradeProduto gradeProdutoNeto, gradProd.produto produtoNeto, gradProd.cor corNeto, gradProd.tamanho tamanhoNeto, item.personalizacao personalizacaoNeto, kit.quantidade quantidadeKitNeto, 1 kitSoma, CASE WHEN doc.dataEntradaSaida IS NULL THEN '00000000000000' ELSE TO_CHAR (doc.dataEntradaSaida, 'YYYYMMDDHH24MISS') END || '00000000000000' || LPAD (item.idItemPreDocumento,14,'0') || LPAD (item.sequencia,3,'0') id FROM MOPREDOCUMXITENS item JOIN MOPREDOCUMENTOS doc ON doc.preDocumento = item.preDocumento JOIN CAGRADESPRODUTO gradProd ON gradProd.gradeProduto = item.gradeProduto JOIN CAPRODUTOS prod ON prod.produto = gradProd.produto JOIN SIUNIDADESMEDIDA uni ON uni.unidadeMedida = prod.unidadeMedida JOIN CAGRADEPRODUTOXKITSCOMBOS kit ON kit.gradeProdutoFilho = item.gradeProduto JOIN CAGRADESPRODUTO gradProdPai ON gradProdPai.gradeProduto = kit.gradeProduto JOIN TEMPFORMPRECOPRODUTOS a ON a.sessaoClient = '202502141648403681416934100814' AND a.produtoFilho = gradProdPai.produto AND a.corFilho = gradProdPai.cor AND a.tamanhoFilho = gradProdPai.tamanho AND a.personalizacaoFilho = 0 JOIN PACORES cor ON cor.cor = a.cor JOIN PATAMANHOS tam ON tam.tamanho = a.tamanho JOIN PAPERSONALIZACOES pers ON pers.personalizacao = a.personalizacao WHERE item.cancelado = 0 AND item.gradeProduto > 0 AND doc.statusPreDocumento = 'A' AND doc.entradaSaida = 'E' AND doc.devolucaoAnulacaoRetorno = 0 AND doc.atualizaUltimaCompra = 1 AND kit.ativo = 1 AND a.controleEstoque IN (3,4) AND a.nivel = 2 AND a.idItemDocFiscal = 0 AND a.idItemPreDocumento = 0 UNION ALL SELECT a.produto, a.cor, a.tamanho, a.personalizacao, prod.descricao descricaoProduto, CASE WHEN a.cor = 0 THEN ' ' ELSE cor.descricao END descricaoCor, CASE WHEN a.tamanho = ' ' THEN ' ' ELSE tam.descricao END descricaoTamanho, CASE WHEN a.personalizacao = 0 THEN ' ' ELSE pers.descricao END descricaoPersonalizacao, prod.referencia, prod.controleEstoque, prod.unidadeMedida, uni.casasDecimaisUnidadeMedida, a.ordenacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, gradProd.gradeProduto gradeProdutoNeto, gradProd.produto produtoNeto, gradProd.cor corNeto, gradProd.tamanho tamanhoNeto, 0 personalizacaoNeto, kit.quantidade quantidadeKitNeto, 1 kitSoma, '000000000000000000000000000000000000000000000' id FROM CAGRADESPRODUTO gradProd JOIN CAPRODUTOS prod ON prod.produto = gradProd.produto JOIN SIUNIDADESMEDIDA uni ON uni.unidadeMedida = prod.unidadeMedida JOIN CAGRADEPRODUTOXKITSCOMBOS kit ON kit.gradeProdutoFilho = gradProd.gradeProduto JOIN CAGRADESPRODUTO gradProdPai ON gradProdPai.gradeProduto = kit.gradeProduto JOIN TEMPFORMPRECOPRODUTOS a ON a.sessaoClient = '202502141648403681416934100814' AND a.produtoFilho = gradProdPai.produto AND a.corFilho = gradProdPai.cor AND a.tamanhoFilho = gradProdPai.tamanho AND a.personalizacaoFilho = 0 JOIN PACORES cor ON cor.cor = a.cor JOIN PATAMANHOS tam ON tam.tamanho = a.tamanho JOIN PAPERSONALIZACOES pers ON pers.personalizacao = a.personalizacao WHERE gradProd.gradeProduto > 0 AND kit.ativo = 1 AND a.controleEstoque IN (3,4) AND a.nivel = 2 AND a.idItemDocFiscal = 0 AND a.idItemPreDocumento = 0) a GROUP BY a.produto, a.cor, a.tamanho, a.personalizacao, a.descricaoProduto, a.descricaoCor, a.descricaoTamanho, a.descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, a.ordenacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, a.gradeProdutoNeto, a.produtoNeto, a.corNeto, a.tamanhoNeto, a.personalizacaoNeto, a.quantidadeKitNeto, a.kitSoma) a) SELECT '202502141648403681416934100814' sessaoClient, 3 nivel, a.produto, a.cor, a.tamanho, a.personalizacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, a.gradeProdutoNeto, a.produtoNeto, a.corNeto, a.tamanhoNeto, a.personalizacaoNeto, a.quantidadeKitNeto, 0 legenda, 0 selecionado, ' ' imagem, a.ordenacao, a.descricaoProduto, a.descricaoCor, a.descricaoTamanho, a.descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, 0 quantidadeEstoque, item.precoUnitario / a.divisor precoUltimaCompraNovo, COALESCE(( SELECT TO_NUMBER (SUBSTR (MAX (custo.id), 15, 14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, custo.data, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoNeto AND custo.data < doc.dataEntradaSaida),0) idProdutoXCustoAnterior, 0 precoCustoAnterior, COALESCE(( SELECT TO_NUMBER(SUBSTR(MAX(custo.id),15,14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoNeto),0) idProdutoXCustoAtualizado, 0 precoCustoAtualizado, 0 precoCustoNovo, 0 percentualVariacao, 0 preDocumento, doc.idDocumentoFiscal, doc.tipoDocumento, tipoDoc.abreviacao, doc.documentoFiscal idDocumento, doc.modeloDocumento, doc.estabelecimento, est.grupoFiscal, pessEst.regimeTributario, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = est.pessoaEstabelecimento AND end.ativo = 1 AND end.principal = 1),' ') estabUf, doc.dataEntradaSaida dataEntrada, doc.pessoa, CASE WHEN doc.pessoa = 0 THEN ' ' ELSE pess.nomeRazaoSocial END nomeRazaoSocial, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = doc.pessoa AND end.ativo = 1 AND end.principal = 1),' ') pessoaUf, COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = doc.modeloDocumento AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = 0 AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), 0)) idCenarioCalculoPreco, 0 idItemPreDocumento, item.idItemDocFiscal, item.vendedor, item.localEstoque, (item.quantidade + item.quantidadeExtemporanea) quantidade, CASE WHEN doc.nfFornecedor = 1 AND (item.valorICMSSTEscrituracao <> 0 OR item.stICMSEscrituracao IN ('10','30','60','70')) OR item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 1 ELSE 0 END compraComSt, CASE WHEN doc.nfFornecedor = 1 THEN item.aliquotaICMSEscrituracao WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 0 ELSE item.aliquotaICMS + item.creditoSimplesNacional END aliquotaICMS, CASE WHEN doc.nfFornecedor = 1 THEN item.valorICMSEscrituracao WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 0 ELSE item.valorICMS + item.valorCreditoSimplesNacional END / a.divisor valorICMS, item.valorPIS / a.divisor valorPIS, item.valorCOFINS / a.divisor valorCOFINS, CASE WHEN doc.nfFornecedor = 1 AND item.valorICMSSTEscrituracao <> 0 THEN item.valorICMSSTEscrituracao ELSE item.valorICMSST END / a.divisor valorICMSST, item.valorIPI / a.divisor valorIPI, item.valorICMSUFDestinatario / a.divisor valorDIFAL, item.valorII / a.divisor valorII, item.valorRetIRRF / a.divisor valorIR, item.valorRetCSLL / a.divisor valorCSLL, item.valorAdicFreteMarinhaMerTotal / a.divisor valorAdicFreteMarinhaMerTotal, item.valorDespesasAduaneirasTotal / a.divisor valorDespesasAduaneirasTotal, item.valorFreteTotal / a.divisor valorFrete, item.valorDescontoTotal / a.divisor valorDesconto, item.valorJurosPagamento / a.divisor valorJuros, (item.valorOutrasDespesasTotal - item.valorJurosPagamento) / a.divisor valorOutrasDespesas, item.valorDescontoCustoOpTotal / a.divisor valorDescontoCustoOpTotal, item.valorAcrescimoCustoOpTotal / a.divisor valorAcrescimoCustoOpTotal, (item.valorAcrescimoExtempTotal - ROUND(item.quantidadeExtemporanea * item.precoUnitario,2)) / a.divisor valorAcrescimoExtempTotal, doc.prazoMedioPonderado, 'P' situacao FROM TEMP a JOIN MODOCFISCALXITENS item ON item.idItemDocFiscal = a.idItemDocFiscal JOIN MODOCUMENTOSFISCAIS doc ON doc.idDocumentoFiscal = item.idDocumentoFiscal JOIN SITIPOSDOCUMENTO tipoDoc ON tipoDoc.tipoDocumento = doc.tipoDocumento JOIN PAESTABELECIMENTOS est ON est.estabelecimento = doc.estabelecimento JOIN CAPESSOAS pessEst ON pessEst.pessoa = est.pessoaEstabelecimento JOIN CAPESSOAS pess ON pess.pessoa = doc.pessoa WHERE a.idItemDocFiscal > 0 UNION ALL SELECT '202502141648403681416934100814' sessaoClient, 3 nivel, a.produto, a.cor, a.tamanho, a.personalizacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, a.gradeProdutoNeto, a.produtoNeto, a.corNeto, a.tamanhoNeto, a.personalizacaoNeto, a.quantidadeKitNeto, 0 legenda, 0 selecionado, ' ' imagem, a.ordenacao, a.descricaoProduto, a.descricaoCor, a.descricaoTamanho, a.descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, 0 quantidadeEstoque, item.precoUnitario / a.divisor precoUltimaCompraNovo, COALESCE(( SELECT TO_NUMBER (SUBSTR (MAX (custo.id), 15, 14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, custo.data, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoNeto AND custo.data < doc.dataEntradaSaida),0) idProdutoXCustoAnterior, 0 precoCustoAnterior, COALESCE(( SELECT TO_NUMBER(SUBSTR(MAX(custo.id),15,14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoNeto),0) idProdutoXCustoAtualizado, 0 precoCustoAtualizado, 0 precoCustoNovo, 0 percentualVariacao, doc.preDocumento, 0 idDocumentoFiscal, doc.tipoDocumento, tipoDoc.abreviacao, doc.preDocumento idDocumento, doc.modeloDocumento, doc.estabelecimento, est.grupoFiscal, pessEst.regimeTributario, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = est.pessoaEstabelecimento AND end.ativo = 1 AND end.principal = 1),' ') estabUf, doc.dataEntradaSaida dataEntrada, doc.pessoa, CASE WHEN doc.pessoa = 0 THEN ' ' ELSE pess.nomeRazaoSocial END nomeRazaoSocial, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = doc.pessoa AND end.ativo = 1 AND end.principal = 1),' ') pessoaUf, COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = doc.modeloDocumento AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = 0 AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = doc.estabelecimento AND cenXEst.ativo = 1))), 0)) idCenarioCalculoPreco, item.idItemPreDocumento, 0 idItemDocFiscal, item.vendedor, item.localEstoque, (item.quantidade + item.quantidadeExtemporanea) quantidade, CASE WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 1 ELSE 0 END compraComSt, CASE WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 0 ELSE item.aliquotaICMS + item.creditoSimplesNacional END aliquotaICMS, CASE WHEN item.valorICMSST <> 0 OR item.stICMS IN ('10','30','60','70') OR item.stSimplesNacional IN ('201','202','500') THEN 0 ELSE item.valorICMS + item.valorCreditoSimplesNacional END / a.divisor valorICMS, item.valorPIS / a.divisor valorPIS, item.valorCOFINS / a.divisor valorCOFINS, item.valorICMSST / a.divisor valorICMSST, item.valorIPI / a.divisor valorIPI, item.valorICMSUFDestinatario / a.divisor valorDIFAL, item.valorII / a.divisor valorII, item.valorRetIRRF / a.divisor valorIR, item.valorRetCSLL / a.divisor valorCSLL, item.valorAdicFreteMarinhaMerTotal / a.divisor valorAdicFreteMarinhaMerTotal, item.valorDespesasAduaneirasTotal / a.divisor valorDespesasAduaneirasTotal, item.valorFreteTotal / a.divisor valorFrete, item.valorDescontoTotal / a.divisor valorDesconto, item.valorJurosPagamento / a.divisor valorJuros, (item.valorOutrasDespesasTotal - item.valorJurosPagamento) / a.divisor valorOutrasDespesas, item.valorDescontoCustoOpTotal / a.divisor valorDescontoCustoOpTotal, item.valorAcrescimoCustoOpTotal / a.divisor valorAcrescimoCustoOpTotal, (item.valorAcrescimoExtempTotal - ROUND(item.quantidadeExtemporanea * item.precoUnitario,2)) / a.divisor valorAcrescimoExtempTotal, doc.prazoMedioPonderado, 'P' situacao FROM TEMP a JOIN MOPREDOCUMXITENS item ON item.idItemPreDocumento = a.idItemPreDocumento JOIN MOPREDOCUMENTOS doc ON doc.preDocumento = item.preDocumento JOIN SITIPOSDOCUMENTO tipoDoc ON tipoDoc.tipoDocumento = doc.tipoDocumento JOIN PAESTABELECIMENTOS est ON est.estabelecimento = doc.estabelecimento JOIN CAPESSOAS pessEst ON pessEst.pessoa = est.pessoaEstabelecimento JOIN CAPESSOAS pess ON pess.pessoa = doc.pessoa WHERE a.idItemPreDocumento > 0 UNION ALL -- PRODUTOS SEM MOVIMENTAÇÃO SELECT '202502141648403681416934100814' sessaoClient, 3 nivel, a.produto, a.cor, a.tamanho, a.personalizacao, a.gradeProdutoFilho, a.produtoFilho, a.corFilho, a.tamanhoFilho, a.personalizacaoFilho, a.quantidadeKitFilho, a.gradeProdutoNeto, a.produtoNeto, a.corNeto, a.tamanhoNeto, a.personalizacaoNeto, a.quantidadeKitNeto, 0 legenda, 0 selecionado, ' ' imagem, a.ordenacao, a.descricaoProduto, a.descricaoCor, a.descricaoTamanho, a.descricaoPersonalizacao, a.referencia, a.controleEstoque, a.unidadeMedida, a.casasDecimaisUnidadeMedida, 0 quantidadeEstoque, FUNC_ADD_BUSCA_PRECO ( '2', 0, 0, 2, 10000000172, 1, TRUNC (SYSDATE), 0, ' ', ' ', 0, 0, a.personalizacaoNeto, a.produtoNeto, a.corNeto, a.tamanhoNeto, a.controleEstoque, '2', ' ') precoUltimaCompraNovo, COALESCE(( SELECT TO_NUMBER (SUBSTR (MAX (custo.id), 15, 14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, custo.data, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoNeto),0) idProdutoXCustoAnterior, 0 precoCustoAnterior, COALESCE(( SELECT TO_NUMBER(SUBSTR(MAX(custo.id),15,14)) FROM ( SELECT custo.produto, custo.cor, custo.tamanho, custo.personalizacao, (TO_CHAR (custo.data,'YYYYMMDDHH24MISS') || LPAD (custo.idProdutoXCusto,14,'0')) id FROM CAPRODUTOXCUSTOS custo) custo WHERE custo.produto = a.produtoNeto),0) idProdutoXCustoAtualizado, 0 precoCustoAtualizado, 0 precoCustoNovo, 0 percentualVariacao, 0 preDocumento, 0 idDocumentoFiscal, 0 tipoDocumento, ' ' abreviacao, 0 idDocumento, 0 modeloDocumento, 1 estabelecimento, est.grupoFiscal, pessEst.regimeTributario, COALESCE(( SELECT MAX (mun.uf) FROM CAENDERECOSPESSOA end JOIN SIMUNICIPIOS mun ON mun.municipio = end.municipio WHERE end.pessoa = est.pessoaEstabelecimento AND end.ativo = 1 AND end.principal = 1),' ') estabUf, null dataEntrada, 0 pessoa, ' ' nomeRazaoSocial, ' ' Uf, COALESCE (( SELECT MAX(cenario.idCenarioCalculoPreco) FROM PACENARIOSCALCULOPRECO cenario WHERE cenario.modeloDocumento = 0 AND cenario.idCenarioCalculoPreco > 0 AND cenario.compraVenda = 'C' AND cenario.ativo = 1 AND (cenario.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PACENARIOCALCPRECOXESTAB cenXEst WHERE cenXEst.idCenarioCalculoPreco = cenario.idCenarioCalculoPreco AND cenXEst.estabelecimento = 1 AND cenXEst.ativo = 1))), 0) idCenarioCalculoPreco, 0 idItemPreDocumento, 0 idItemDocFiscal, 0 vendedor, 0 localEstoque, 1 quantidade, 0 compraComSt, 0 aliquotaICMS, 0 valorICMS, 0 valorPIS, 0 valorCOFINS, 0 valorICMSST, 0 valorIPI, 0 valorDIFAL, 0 valorII, 0 valorIR, 0 valorCSLL, 0 valorAdicFreteMarinhaMerTotal, 0 valorDespesasAduaneirasTotal, 0 valorFrete, 0 valorDesconto, 0 valorJuros, 0 valorOutrasDespesas, 0 valorDescontoCustoOpTotal, 0 valorAcrescimoCustoOpTotal, 0 valorAcrescimoExtempTotal, 0 prazoMedioPonderado, 'P' situacao FROM TEMP a JOIN PAESTABELECIMENTOS est ON est.estabelecimento = 1 JOIN CAPESSOAS pessEst ON pessEst.pessoa = est.pessoaEstabelecimento WHERE a.idItemPreDocumento = 0 AND a.idItemDocFiscal = 0; -- ===== INÍCIO CUSTO ===== -- Atualiza Custo anterior UPDATE TEMPFORMPRECOPRODUTOS a SET a.precoCustoAnterior = COALESCE (( SELECT b.novoPrecoCusto FROM CAPRODUTOXCUSTOS b WHERE b.idProdutoXCusto = a.idProdutoXCustoAnterior), 0) WHERE a.sessaoClient = '202502141648403681416934100814' AND a.idProdutoXCustoAnterior > 0; -- Atualiza custo atualizado com anterior UPDATE TEMPFORMPRECOPRODUTOS SET precoCustoAtualizado = precoCustoAnterior WHERE sessaoClient = '202502141648403681416934100814'; -- Limpa "idProdutoXCustoAtualizado" quando o a data do custo for inferior a data do documento UPDATE TEMPFORMPRECOPRODUTOS a SET a.idProdutoXCustoAtualizado = 0 WHERE a.sessaoClient = '202502141648403681416934100814' AND a.idProdutoXCustoAtualizado > 0 AND ( ( SELECT b.data FROM CAPRODUTOXCUSTOS b WHERE b.idProdutoXCusto = a.idProdutoXCustoAtualizado) IS NULL OR a.idDocumentoFiscal > 0 AND ( SELECT TRUNC(b.data) FROM CAPRODUTOXCUSTOS b WHERE b.idProdutoXCusto = a.idProdutoXCustoAtualizado) < ( SELECT TRUNC(b.dataEntradaSaida) FROM MODOCUMENTOSFISCAIS b WHERE b.idDocumentoFiscal = a.idDocumentoFiscal) OR a.preDocumento > 0 AND ( SELECT TRUNC(b.data) FROM CAPRODUTOXCUSTOS b WHERE b.idProdutoXCusto = a.idProdutoXCustoAtualizado) < ( SELECT TRUNC(b.dataEntradaSaida) FROM MOPREDOCUMENTOS b WHERE b.preDocumento = a.preDocumento) OR a.idDocumentoFiscal = 0 AND a.preDocumento = 0 AND ( SELECT TRUNC(b.data) FROM CAPRODUTOXCUSTOS b WHERE b.idProdutoXCusto = a.idProdutoXCustoAtualizado) < TRUNC (SYSDATE)); -- Atualiza custo novo com o atual para os "idProdutoXCusto" que sobraram UPDATE TEMPFORMPRECOPRODUTOS a SET a.precoCustoAtualizado = (SELECT b.novoPrecoCusto FROM CAPRODUTOXCUSTOS b WHERE b.idProdutoXCusto = a.idProdutoXCustoAtualizado) WHERE a.sessaoClient = '202502141648403681416934100814' AND a.idProdutoXCustoAtualizado > 0; UPDATE TEMPFORMPRECOPRODUTOS SET precoCustoNovo = precoCustoAtualizado WHERE sessaoClient = '202502141648403681416934100814' AND idProdutoXCustoAtualizado > 0; --Gera Incidências novo Custo DELETE TEMPFORMPRECOINCIDENCIAS WHERE sessaoClient = '202502141648403681416934100814' AND nomePublico = 'FormacaoPrecos'; -- Formação Preço Gera Temp Incididências INSERT INTO TEMPFORMPRECOINCIDENCIAS ( sessaoClient, nomePublico, nivel, produto, cor, tamanho, personalizacao, gradeProdutoFilho, gradeProdutoNeto, compraVenda, tabelaPreco, ordenacao, descricao, somaDiminuiIgnora, percentualBase, valorBase, indicadorConta, conteudoCampo1, conteudoCampo2, valor, percSobreReceita, percSobreReceitaLiquida, percSobreCusto) SELECT '202502141648403681416934100814', -- sessaoClient 'FormacaoPrecos', -- nomePublico a.nivel, a.produto, a.cor, a.tamanho, a.personalizacao, a.gradeProdutoFilho, a.gradeProdutoNeto, 'C', -- compraVenda a.tabelaPreco, a.incidenciaFormacaoPreco, -- ordenacao a.descricao, -- descricao a.somaDiminuiIgnora, -- somaDiminuiIgnora ROUND (CASE a.origemDado WHEN 'R' THEN TO_NUMBER (SUBSTR(a.regra, 44, 15)) / 100000000 WHEN 'P' THEN a.percentual ELSE 0 END, 8) percentualBase, -- percentualBase ROUND (CASE a.origemDado WHEN 'R' THEN TO_NUMBER (SUBSTR (a.regra,29,15)) / 100 WHEN 'P' THEN a.valor ELSE CASE a.incidenciaFormacaoPreco WHEN 2001 THEN a.icms WHEN 2002 THEN a.pis WHEN 2003 THEN a.cofins WHEN 2004 THEN a.icmsSt WHEN 2005 THEN a.ipi WHEN 2006 THEN a.difal WHEN 2007 THEN a.ii WHEN 2008 THEN a.ir WHEN 2009 THEN a.csll WHEN 4501 THEN a.custo WHEN 4502 THEN a.custoAdicional WHEN 4503 THEN a.reducaoSobreCusto WHEN 5501 THEN a.outrasDespesasAdministrativas WHEN 5502 THEN a.despesasAduaneiras WHEN 6501 THEN a.frete WHEN 6502 THEN a.fatorNegociacao WHEN 6503 THEN a.comissao WHEN 6504 THEN a.desconto WHEN 6505 THEN a.OutrasDespesasComerciais WHEN 8001 THEN a.tarifaCartao WHEN 8002 THEN a.taxaBoleto WHEN 8003 THEN a.prazoMedioRecebimento WHEN 8004 THEN a.outrasDespesasFinanceiras WHEN 8501 THEN a.prazoMedioPagamento WHEN 8502 THEN a.Juros WHEN 8503 THEN a.outrasReceitasFinanceiras ELSE 0 END END, 7), -- valorBase 'A', -- indicadorConta RTRIM (SUBSTR (cat.descricao, 5, 115)), -- conteudoCampo1 a.descricao, -- conteudoCampo2 0, -- valor 0, -- percSobreReceita 0, -- percSobreReceitaLiquida 0 -- percSobreCusto FROM ( SELECT a.nivel nivel, a.produto produto, a.cor cor, a.tamanho tamanho, a.personalizacao personalizacao, a.gradeProdutoFilho gradeProdutoFilho, a.gradeProdutoNeto gradeProdutoNeto, ' ' tabelaPreco, calc.incidenciaFormacaoPreco, incid.categoriaFormacaoPreco, incid.descricao, calc.somaDiminuiIgnora, calc.origemDado, calc.valor, calc.percentual, 1 quantidade, a.valorICMS / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END icms, a.valorPIS / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END pis, a.valorCOFINS / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END cofins, a.valorICMSST / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END icmsSt, a.valorIPI / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END ipi, a.valorDIFAL / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END difal, a.valorII / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END ii, a.valorIr / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END ir, a.valorCsll / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END csll, 0 custo, (a.valorAcrescimoCustoOperacional + a.valorAcrescimoExtemporaneo) / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END custoAdicional, 0 reducaoSobreCusto, 0 outrasDespesasAdministrativas, a.valorDespesaAduaneira / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END despesasAduaneiras, (a.valorFrete + a.valorAdicFreteMarinhaMercantil) / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END frete, 0 fatorNegociacao, 0 comissao, (a.valorDesconto + a.valorDescontoCustoOperacional) / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END desconto, 0 OutrasDespesasComerciais, 0 tarifaCartao, 0 taxaBoleto, 0 prazoMedioRecebimento, a.valorOutrasDespesas / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END outrasDespesasFinanceiras, 0 prazoMedioPagamento, a.valorJuros / CASE WHEN a.quantidade = 0 THEN 1 ELSE a.quantidade END juros, 0 outrasReceitasFinanceiras, COALESCE (( SELECT MIN (LPAD (regra.ordenacao,14,'0') || LPAD (regra.idCenarioCalculoPrecoXRegra,14,'0') || LPAD (regra.valor * 100,15,'0') || LPAD (regra.percentual * 100000000,15,'0')) FROM PACENARIOCALCPRECOREGRAS regra JOIN PAFILTROSCABECALHO filtroCab ON filtroCab.filtroCabecalho = regra.filtroCabecalho JOIN PAFILTROSPRODUTO filtroProd ON regra.filtroProduto = filtroProd.filtroProduto WHERE regra.idCenarioCalculoPrecoXIncid = calc.idCenarioCalculoPrecoXIncid AND regra.ativo = 1 AND filtroCab.ativo = 1 AND filtroProd.ativo = 1 AND (regra.filtroCabecalho = 0 OR (filtroCab.filtrarEstabelecimentos = 0 OR EXISTS ( SELECT 1 FROM PAFILTROCABECXESTABELEC filCabEst WHERE filCabEst.filtroCabecalho = regra.filtroCabecalho AND filCabEst.estabelecimento = a.estabelecimento AND filCabEst.ativo = 1)) AND (filtroCab.filtrarUfs = 0 OR EXISTS ( SELECT 1 FROM PAFILTROCABECXUFS filCabUf WHERE filCabUf.filtroCabecalho = regra.filtroCabecalho AND filCabUf.uf = a.pessoaUf AND filCabUf.ativo = 1)) AND (filtroCab.filtrarPessoas = 0 OR EXISTS ( SELECT 1 FROM PAFILTROCABECXPESSOAS filCabPess WHERE filCabPess.filtroCabecalho = regra.filtroCabecalho AND filCabPess.pessoa = a.pessoa AND filCabPess.ativo = 1)) AND (filtroCab.filtrarPerfisUsuario = 0 AND filtroCab.filtrarUsuarios = 0 OR filtroCab.filtrarPerfisUsuario = 1 AND EXISTS ( SELECT 1 FROM PAFILTROCABECXPERFISUSUAR filCabPerfUs WHERE filCabPerfUs.filtroCabecalho = regra.filtroCabecalho AND filCabPerfUs.perfilUsuario = 2 AND filCabPerfUs.ativo = 1) OR filtroCab.filtrarUsuarios = 1 AND EXISTS ( SELECT 1 FROM PAFILTROCABECXUSUARIOS filCabUs WHERE filCabUs.filtroCabecalho = regra.filtroCabecalho AND filCabUs.usuario = 10000000172 AND filCabUs.ativo = 1)) AND (filtroCab.indicadorPessoa = ' ' OR filtroCab.indicadorPessoa = pess.indicadorPessoa) AND (filtroCab.colaborador = ' ' OR filtroCab.colaborador = 'N' AND (a.pessoa = 0 OR NOT(EXISTS( SELECT 1 FROM CACOLABORADORES colab WHERE colab.colaborador = a.pessoa AND colab.ativo = 1))) OR filtroCab.colaborador = 'S' AND a.pessoa <> 0 AND EXISTS( SELECT 1 FROM CACOLABORADORES colab WHERE colab.colaborador = a.pessoa AND colab.ativo = 1))) AND (regra.filtroProduto = 0 OR (filtroProd.filtrarVendedores = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXVENDEDOR filtroProdXVend WHERE filtroProdXVend.filtroProduto = regra.filtroProduto AND filtroProdXVend.vendedor = a.vendedor AND filtroProdXVend.ativo = 1)) AND (filtroProd.filtrarLocaisEstoque = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXLOCAISEST filtroProdXLocEst WHERE filtroProdXLocEst.filtroProduto = regra.filtroProduto AND filtroProdXLocEst.localEstoque = a.localEstoque AND filtroProdXLocEst.ativo = 1)) AND (filtroProd.filtrarProdutos = 0 AND filtroProd.filtrarCategoriasProdutos = 0 AND filtroProd.filtrarSubcategoriasProdutos = 0 AND filtroProd.filtrarMarcas = 0 AND filtroProd.filtrarCaracteristicasA = 0 AND filtroProd.filtrarCaracteristicasB = 0 AND filtroProd.filtrarCaracteristicasC = 0 AND filtroProd.filtrarCaracteristicasD = 0 AND filtroProd.filtrarCaracteristicasE = 0 AND filtroProd.filtrarCores = 0 AND filtroProd.filtrarTamanhos = 0 AND filtroProd.filtrarNCMs = 0 AND filtroProd.filtrarListasServicos = 0 OR filtroProd.filtrarProdutos = 1 AND EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXPRODUTOS filtroProdXProd WHERE filtroProdXProd.filtroProduto = regra.filtroProduto AND filtroProdXProd.produto = a.produto AND filtroProdXProd.ativo = 1) OR (filtroProd.filtrarCategoriasProdutos = 1 OR filtroProd.filtrarSubcategoriasProdutos = 1 OR filtroProd.filtrarMarcas = 1 OR filtroProd.filtrarCaracteristicasA = 1 OR filtroProd.filtrarCaracteristicasB = 1 OR filtroProd.filtrarCaracteristicasC = 1 OR filtroProd.filtrarCaracteristicasD = 1 OR filtroProd.filtrarCaracteristicasE = 1 OR filtroProd.filtrarCores = 1 OR filtroProd.filtrarTamanhos = 1 OR filtroProd.filtrarNCMs = 1 OR filtroProd.filtrarListasServicos = 1) AND (filtroProd.filtrarCategoriasProdutos = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXCATEGPROD filtroProdXCatProd WHERE filtroProdXCatProd.filtroProduto = regra.filtroProduto AND filtroProdXCatProd.categoriaProduto = subCatProd.categoriaProduto AND filtroProdXCatProd.ativo = 1)) AND (filtroProd.filtrarSubcategoriasProdutos = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXSUBCAPROD filtroProdXSubCatProd WHERE filtroProdXSubCatProd.filtroProduto = regra.filtroProduto AND filtroProdXSubCatProd.subcategoriaProduto = prod.subcategoriaProduto AND filtroProdXSubCatProd.ativo = 1)) AND (filtroProd.filtrarMarcas = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXMARCAS filtroProdXMarc WHERE filtroProdXMarc.filtroProduto = regra.filtroProduto AND filtroProdXMarc.marca = prod.marca AND filtroProdXMarc.ativo = 1)) AND (filtroProd.filtrarCaracteristicasA = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXCARACTERA filtroProdXCarA WHERE filtroProdXCarA.filtroProduto = regra.filtroProduto AND filtroProdXCarA.caracteristicaA = prod.caracteristicaA AND filtroProdXCarA.ativo = 1)) AND (filtroProd.filtrarCaracteristicasB = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXCARACTERB filtroProdXCarB WHERE filtroProdXCarB.filtroProduto = regra.filtroProduto AND filtroProdXCarB.caracteristicaB = prod.caracteristicaB AND filtroProdXCarB.ativo = 1)) AND (filtroProd.filtrarCaracteristicasC = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXCARACTERC filtroProdXCarC WHERE filtroProdXCarC.filtroProduto = regra.filtroProduto AND filtroProdXCarC.caracteristicaC = prod.caracteristicaC AND filtroProdXCarC.ativo = 1)) AND (filtroProd.filtrarCaracteristicasD = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXCARACTERD filtroProdXCarD WHERE filtroProdXCarD.filtroProduto = regra.filtroProduto AND filtroProdXCarD.caracteristicaD = prod.caracteristicaD AND filtroProdXCarD.ativo = 1)) AND (filtroProd.filtrarCaracteristicasE = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXCARACTERE filtroProdXCarE WHERE filtroProdXCarE.filtroProduto = regra.filtroProduto AND filtroProdXCarE.caracteristicaE = prod.caracteristicaE AND filtroProdXCarE.ativo = 1)) AND filtroProd.filtrarCores = 0 AND filtroProd.filtrarTamanhos = 0 AND (filtroProd.filtrarNCMs = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXNCMS filtroProdXNcms WHERE filtroProdXNcms.filtroProduto = regra.filtroProduto AND filtroProdXNcms.idNcm = prod.idNcm AND filtroProdXNcms.ativo = 1)) AND (filtroProd.filtrarListasServicos = 0 OR EXISTS ( SELECT 1 FROM PAFILTROPRODUTOXLISTASSE filtroProdXListServ WHERE filtroProdXListServ.filtroProduto = regra.filtroProduto AND filtroProdXListServ.listaServicos = prod.listaServicos AND filtroProdXListServ.ativo = 1))) AND 1 >= filtroProd.quantidadeMinima AND (filtroProd.quantidadeMaxima = 0 OR 1 <= filtroProd.quantidadeMaxima)) ),'0000000000000000000000000000000000000000000000000000000000') regra FROM TEMPFORMPRECOPRODUTOS a JOIN CAPESSOAS pess ON pess.pessoa = a.pessoa JOIN PACENARIOCALCPRECOINCID calc ON calc.idCenarioCalculoPreco = a.idCenarioCalculoPreco JOIN SIINCIDENCIASFORMACAOPREC incid ON incid.incidenciaFormacaoPreco = calc.incidenciaFormacaoPreco JOIN CAPRODUTOS prod ON prod.produto = a.produto JOIN PASUBCATEGORIASPRODUTO subCatProd ON subCatProd.SUBCATEGORIAPRODUTO = prod.SUBCATEGORIAPRODUTO WHERE a.sessaoClient = '202502141648403681416934100814' AND (a.nivel = 3 OR a.nivel IN (1,2) AND NOT(a.controleEstoque IN (3,4))) AND a.idCenarioCalculoPreco > 0) a JOIN SICATEGORIASFORMACAOPRECO cat ON cat.categoriaFormacaoPreco = a.categoriaFormacaoPreco WHERE a.incidenciaFormacaoPreco > 0 UNION ALL SELECT '202502141648403681416934100814', -- sessaoClient 'FormacaoPrecos', -- nomePublico a.nivel, -- nivel a.produto, -- produto a.cor, -- cor a.tamanho, -- tamanho a.personalizacao, -- personalizacao a.gradeProdutoFilho, -- gradeProdutoFilho a.gradeProdutoNeto, -- gradeProdutoNeto 'C', -- compraVenda ' ', -- tabelaPreco 1, -- ordenacao 'Preço Compra', -- descricao 'S', -- somaDiminuiIgnora 0, -- percentualBase 0, -- valorBase 'A', -- indicadorConta 'Preço Compra', -- conteudoCampo1 'Preço Compra', -- conteudoCampo2 0, -- valor 0, -- percSobreReceita 0, -- percSobreReceitaLiquida 0 -- percSobreCusto FROM TEMPFORMPRECOPRODUTOS a WHERE a.sessaoClient = '202502141648403681416934100814' AND (a.nivel = 3 OR a.nivel IN (1,2) AND NOT(a.controleEstoque IN (3,4))) AND a.idCenarioCalculoPreco > 0; -- Formação Preço CalcIncidências UPDATE TEMPFORMPRECOINCIDENCIAS a SET a.valor = CASE a.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * COALESCE ((ROUND (a.valorBase + (( SELECT temp.precoUltimaCompraNovo FROM TEMPFORMPRECOPRODUTOS temp WHERE temp.sessaoClient = a.sessaoClient AND temp.nivel = a.nivel AND temp.produto = a.produto AND temp.cor = a.cor AND temp.tamanho = a.tamanho AND temp.personalizacao = a.personalizacao AND temp.gradeProdutoFilho = a.gradeProdutoFilho AND temp.gradeProdutoNeto = a.gradeProdutoNeto) * (1 + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.percentualBase / 100) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504),0) END) + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.valorBase) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504), 0) END) * a.percentualBase / 100, 5)), 0) WHERE a.sessaoClient = '202502141648403681416934100814' AND a.nomePublico = 'FormacaoPrecos' AND a.compraVenda = 'C' AND a.indicadorConta = 'A'; UPDATE TEMPFORMPRECOINCIDENCIAS a SET a.percSobreReceita = COALESCE (( CASE WHEN ROUND ((( SELECT temp.precoUltimaCompraNovo FROM TEMPFORMPRECOPRODUTOS temp WHERE temp.sessaoClient = a.sessaoClient AND temp.nivel = a.nivel AND temp.produto = a.produto AND temp.cor = a.cor AND temp.tamanho = a.tamanho AND temp.personalizacao = a.personalizacao AND temp.gradeProdutoFilho = a.gradeProdutoFilho AND temp.gradeProdutoNeto = a.gradeProdutoNeto) * (1 + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.percentualBase / 100) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504),0) END) + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.valorBase) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504), 0) END),5) = 0 THEN 0 WHEN ABS (ROUND (100 * a.valor / ROUND((( SELECT temp.precoUltimaCompraNovo FROM TEMPFORMPRECOPRODUTOS temp WHERE temp.sessaoClient = a.sessaoClient AND temp.nivel = a.nivel AND temp.produto = a.produto AND temp.cor = a.cor AND temp.tamanho = a.tamanho AND temp.personalizacao = a.personalizacao AND temp.gradeProdutoFilho = a.gradeProdutoFilho AND temp.gradeProdutoNeto = a.gradeProdutoNeto) * (1 + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.percentualBase / 100) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504),0) END) + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.valorBase) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504), 0) END),5), 8)) < -9999999.99999999 THEN -9999999.99999999 WHEN ABS (ROUND (100 * a.valor / ROUND((( SELECT temp.precoUltimaCompraNovo FROM TEMPFORMPRECOPRODUTOS temp WHERE temp.sessaoClient = a.sessaoClient AND temp.nivel = a.nivel AND temp.produto = a.produto AND temp.cor = a.cor AND temp.tamanho = a.tamanho AND temp.personalizacao = a.personalizacao AND temp.gradeProdutoFilho = a.gradeProdutoFilho AND temp.gradeProdutoNeto = a.gradeProdutoNeto) * (1 + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.percentualBase / 100) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504),0) END) + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.valorBase) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504), 0) END),5), 8)) > 9999999.99999999 THEN 9999999.99999999 ELSE ABS (ROUND (100 * a.valor / ROUND((( SELECT temp.precoUltimaCompraNovo FROM TEMPFORMPRECOPRODUTOS temp WHERE temp.sessaoClient = a.sessaoClient AND temp.nivel = a.nivel AND temp.produto = a.produto AND temp.cor = a.cor AND temp.tamanho = a.tamanho AND temp.personalizacao = a.personalizacao AND temp.gradeProdutoFilho = a.gradeProdutoFilho AND temp.gradeProdutoNeto = a.gradeProdutoNeto) * (1 + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.percentualBase / 100) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504),0) END) + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.valorBase) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504), 0) END),5), 8)) END), 0) WHERE a.sessaoClient = '202502141648403681416934100814' AND a.nomePublico = 'FormacaoPrecos' AND a.compraVenda = 'C'; -- Cria Incidências de Custos dos itens de Kit com a soma dos filhos INSERT INTO TEMPFORMPRECOINCIDENCIAS ( sessaoClient, nomePublico, nivel, produto, cor, tamanho, personalizacao, gradeProdutoFilho, gradeProdutoNeto, compraVenda, tabelaPreco, ordenacao, descricao, somaDiminuiIgnora, percentualBase, valorBase, indicadorConta, conteudoCampo1, conteudoCampo2, valor, percSobreReceita, percSobreReceitaLiquida, percSobreCusto) SELECT '202502141648403681416934100814' sessaoClient, 'FormacaoPrecos' nomePublico, 2 nivel, a.produto, a.cor, a.tamanho, a.personalizacao, a.gradeProdutoFilho, 0 gradeProdutoNeto, 'C' compraVenda, ' ' tabelaPreco, a.ordenacao, MAX (a.descricao), MAX (a.somaDiminuiIgnora) somaDiminuiIgnora, MAX (a.percentualBase) percentualBase, ROUND (SUM (b.quantidadeKitNeto * a.valorBase),5) valorBase, MAX (a.indicadorConta) indicadorConta, MAX (a.conteudoCampo1) conteudoCampo1, MAX (a.conteudoCampo2) conteudoCampo2, ROUND (SUM (b.quantidadeKitNeto * a.valor),5) valor, MAX (a.percSobreReceita) percSobreReceita, MAX (a.percSobreReceitaLiquida) percSobreReceitaLiquida, MAX (a.percSobreCusto) percSobreCusto FROM TEMPFORMPRECOINCIDENCIAS a JOIN TEMPFORMPRECOPRODUTOS b ON b.sessaoClient = a.sessaoClient AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto WHERE a.sessaoClient = '202502141648403681416934100814' AND a.nomePublico = 'FormacaoPrecos' AND a.nivel = 3 AND a.compraVenda = 'C' AND a.tabelaPreco = ' ' GROUP BY a.produto, a.cor, a.tamanho, a.personalizacao, a.gradeProdutoFilho, a.ordenacao; -- Calcula novo custo apenas se não mantém o atual. UPDATE TEMPFORMPRECOPRODUTOS a SET a.precoCustoNovo = CASE WHEN a.precoUltimaCompraNovo = 0 THEN a.precoCustoAnterior ELSE a.precoUltimaCompraNovo + COALESCE (( SELECT SUM (CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * ABS (b.valor)) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = 'FormacaoPrecos' AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = 'C'), 0) END WHERE a.sessaoClient = '202502141648403681416934100814' AND a.nivel > 1 AND a.idProdutoXCustoAtualizado = 0; -- Atualiza Custo Soma Kit´s UPDATE TEMPFORMPRECOPRODUTOS a SET a.precoCustoAnterior = COALESCE (( SELECT SUM (b.quantidadeKitNeto * b.precoCustoAnterior) FROM TEMPFORMPRECOPRODUTOS b WHERE b.sessaoClient = a.sessaoClient AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.nivel = 3), 0), a.precoCustoAtualizado = COALESCE (( SELECT SUM (b.quantidadeKitNeto * b.precoCustoAtualizado) FROM TEMPFORMPRECOPRODUTOS b WHERE b.sessaoClient = a.sessaoClient AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.nivel = 3), 0), a.precoCustoNovo = COALESCE (( SELECT SUM (b.quantidadeKitNeto * b.precoCustoNovo) FROM TEMPFORMPRECOPRODUTOS b WHERE b.sessaoClient = a.sessaoClient AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.nivel = 3), 0), a.precoUltimaCompraNovo = COALESCE (( SELECT SUM (b.quantidadeKitNeto * b.precoUltimaCompraNovo) FROM TEMPFORMPRECOPRODUTOS b WHERE b.sessaoClient = a.sessaoClient AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.nivel = 3), 0) WHERE a.sessaoClient = '202502141648403681416934100814' AND a.nivel = 2 AND a.controleEstoque IN (3,4); -- Formação Preço CalcIncidências UPDATE TEMPFORMPRECOINCIDENCIAS a SET a.valor = CASE a.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * COALESCE ((ROUND (a.valorBase + (( SELECT temp.precoUltimaCompraNovo FROM TEMPFORMPRECOPRODUTOS temp WHERE temp.sessaoClient = a.sessaoClient AND temp.nivel = a.nivel AND temp.produto = a.produto AND temp.cor = a.cor AND temp.tamanho = a.tamanho AND temp.personalizacao = a.personalizacao AND temp.gradeProdutoFilho = a.gradeProdutoFilho AND temp.gradeProdutoNeto = a.gradeProdutoNeto) * (1 + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.percentualBase / 100) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504),0) END) + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.valorBase) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504), 0) END) * a.percentualBase / 100, 5)), 0) WHERE a.sessaoClient = '202502141648403681416934100814' AND a.nomePublico = 'FormacaoPrecos' AND a.compraVenda = 'C' AND a.indicadorConta = 'A'; UPDATE TEMPFORMPRECOINCIDENCIAS a SET a.percSobreReceita = COALESCE (( CASE WHEN ROUND ((( SELECT temp.precoUltimaCompraNovo FROM TEMPFORMPRECOPRODUTOS temp WHERE temp.sessaoClient = a.sessaoClient AND temp.nivel = a.nivel AND temp.produto = a.produto AND temp.cor = a.cor AND temp.tamanho = a.tamanho AND temp.personalizacao = a.personalizacao AND temp.gradeProdutoFilho = a.gradeProdutoFilho AND temp.gradeProdutoNeto = a.gradeProdutoNeto) * (1 + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.percentualBase / 100) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504),0) END) + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.valorBase) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504), 0) END),5) = 0 THEN 0 WHEN ABS (ROUND (100 * a.valor / ROUND((( SELECT temp.precoUltimaCompraNovo FROM TEMPFORMPRECOPRODUTOS temp WHERE temp.sessaoClient = a.sessaoClient AND temp.nivel = a.nivel AND temp.produto = a.produto AND temp.cor = a.cor AND temp.tamanho = a.tamanho AND temp.personalizacao = a.personalizacao AND temp.gradeProdutoFilho = a.gradeProdutoFilho AND temp.gradeProdutoNeto = a.gradeProdutoNeto) * (1 + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.percentualBase / 100) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504),0) END) + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.valorBase) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504), 0) END),5), 8)) < -9999999.99999999 THEN -9999999.99999999 WHEN ABS (ROUND (100 * a.valor / ROUND((( SELECT temp.precoUltimaCompraNovo FROM TEMPFORMPRECOPRODUTOS temp WHERE temp.sessaoClient = a.sessaoClient AND temp.nivel = a.nivel AND temp.produto = a.produto AND temp.cor = a.cor AND temp.tamanho = a.tamanho AND temp.personalizacao = a.personalizacao AND temp.gradeProdutoFilho = a.gradeProdutoFilho AND temp.gradeProdutoNeto = a.gradeProdutoNeto) * (1 + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.percentualBase / 100) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504),0) END) + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.valorBase) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504), 0) END),5), 8)) > 9999999.99999999 THEN 9999999.99999999 ELSE ABS (ROUND (100 * a.valor / ROUND((( SELECT temp.precoUltimaCompraNovo FROM TEMPFORMPRECOPRODUTOS temp WHERE temp.sessaoClient = a.sessaoClient AND temp.nivel = a.nivel AND temp.produto = a.produto AND temp.cor = a.cor AND temp.tamanho = a.tamanho AND temp.personalizacao = a.personalizacao AND temp.gradeProdutoFilho = a.gradeProdutoFilho AND temp.gradeProdutoNeto = a.gradeProdutoNeto) * (1 + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.percentualBase / 100) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504),0) END) + CASE WHEN a.ordenacao = 6504 THEN 0 ELSE COALESCE (( SELECT SUM ( CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * b.valorBase) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = a.nomePublico AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = a.compraVenda AND b.tabelaPreco = a.tabelaPreco AND b.ordenacao = 6504), 0) END),5), 8)) END), 0) WHERE a.sessaoClient = '202502141648403681416934100814' AND a.nomePublico = 'FormacaoPrecos' AND a.compraVenda = 'C'; -- Cria Incidências de Custos dos itens de Kit com a soma dos filhos INSERT INTO TEMPFORMPRECOINCIDENCIAS ( sessaoClient, nomePublico, nivel, produto, cor, tamanho, personalizacao, gradeProdutoFilho, gradeProdutoNeto, compraVenda, tabelaPreco, ordenacao, descricao, somaDiminuiIgnora, percentualBase, valorBase, indicadorConta, conteudoCampo1, conteudoCampo2, valor, percSobreReceita, percSobreReceitaLiquida, percSobreCusto) SELECT '202502141648403681416934100814' sessaoClient, 'FormacaoPrecos' nomePublico, 1 nivel, a.produto, a.cor, a.tamanho, a.personalizacao, 0 gradeProdutoFilho, 0 gradeProdutoNeto, 'C' compraVenda, ' ' tabelaPreco, a.ordenacao, MAX (a.descricao), MAX (a.somaDiminuiIgnora) somaDiminuiIgnora, MAX (a.percentualBase) percentualBase, ROUND (SUM (b.quantidadeKitFilho * a.valorBase),5) valorBase, MAX (a.indicadorConta) indicadorConta, MAX (a.conteudoCampo1) conteudoCampo1, MAX (a.conteudoCampo2) conteudoCampo2, ROUND (SUM (b.quantidadeKitFilho * a.valor),5) valor, MAX (a.percSobreReceita) percSobreReceita, MAX (a.percSobreReceitaLiquida) percSobreReceitaLiquida, MAX (a.percSobreCusto) percSobreCusto FROM TEMPFORMPRECOINCIDENCIAS a JOIN TEMPFORMPRECOPRODUTOS b ON b.sessaoClient = a.sessaoClient AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto WHERE a.sessaoClient = '202502141648403681416934100814' AND a.nomePublico = 'FormacaoPrecos' AND a.nivel = 2 AND a.compraVenda = 'C' AND a.tabelaPreco = ' ' GROUP BY a.produto, a.cor, a.tamanho, a.personalizacao, a.ordenacao; -- Calcula novo custo apenas se não mantém o atual. UPDATE TEMPFORMPRECOPRODUTOS a SET a.precoCustoNovo = CASE WHEN a.precoUltimaCompraNovo = 0 THEN a.precoCustoAnterior ELSE a.precoUltimaCompraNovo + COALESCE (( SELECT SUM (CASE b.somaDiminuiIgnora WHEN 'S' THEN 1 WHEN 'D' THEN -1 ELSE 0 END * ABS (b.valor)) FROM TEMPFORMPRECOINCIDENCIAS b WHERE b.sessaoClient = a.sessaoClient AND b.nomePublico = 'FormacaoPrecos' AND b.nivel = a.nivel AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.gradeProdutoFilho = a.gradeProdutoFilho AND b.gradeProdutoNeto = a.gradeProdutoNeto AND b.compraVenda = 'C'), 0) END WHERE a.sessaoClient = '202502141648403681416934100814' AND a.idProdutoXCustoAtualizado = 0; -- Atualiza Custo Soma Kit´s UPDATE TEMPFORMPRECOPRODUTOS a SET a.precoCustoAnterior = COALESCE(( SELECT SUM (b.quantidadeKitFilho * b.precoCustoAnterior) FROM TEMPFORMPRECOPRODUTOS b WHERE b.sessaoClient = a.sessaoClient AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.nivel = 2),0), a.precoCustoAtualizado = COALESCE(( SELECT SUM (b.quantidadeKitFilho * b.precoCustoAtualizado) FROM TEMPFORMPRECOPRODUTOS b WHERE b.sessaoClient = a.sessaoClient AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.nivel = 2),0), a.precoCustoNovo = COALESCE(( SELECT SUM (b.quantidadeKitFilho * b.precoCustoNovo) FROM TEMPFORMPRECOPRODUTOS b WHERE b.sessaoClient = a.sessaoClient AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.nivel = 2),0), a.precoUltimaCompraNovo = COALESCE(( SELECT SUM (b.quantidadeKitFilho * b.precoUltimaCompraNovo) FROM TEMPFORMPRECOPRODUTOS b WHERE b.sessaoClient = a.sessaoClient AND b.produto = a.produto AND b.cor = a.cor AND b.tamanho = a.tamanho AND b.personalizacao = a.personalizacao AND b.nivel = 2),0) WHERE a.sessaoClient = '202502141648403681416934100814' AND a.nivel = 1 AND a.controleEstoque IN (3,4); -- Calcula variação UPDATE TEMPFORMPRECOPRODUTOS SET percentualVariacao = CASE WHEN precoCustoAnterior = 0 THEN 0 WHEN ROUND ((100 * (precoCustoNovo - precoCustoAnterior) / precoCustoAnterior), 8) > 9999999.99999999 THEN 9999999.99999999 ELSE ROUND ((100 * (precoCustoNovo - precoCustoAnterior) / precoCustoAnterior), 8) END WHERE sessaoClient = '202502141648403681416934100814'; END; ================================================== 2024.1.5 11/03/2025 16:47:23:241 Erro banco de dados. Erro: 3135 - ORA-03135: connection lost contact Process ID: 5456 Session ID: 699 Serial number: 35430 Tabela: TEMPFORMPRECOTABELAS Caminho: start \ Menu Old \ Lista Menu \ Chama Menu \ PesqImportaçãoDocumentosFiscai \ Importação Documentos Fiscais \ Doc Principal \ Tela \ Formação de Preços \ Formação de Preços \ Temp Produtos ================================================== 2024.1.5 11/03/2025 16:47:23:430 Erro banco de dados. Erro: 3114 - ORA-03114: not connected to ORACLE Tabela: TEMPFORMPRECOTABELAS Caminho: start \ Menu Old \ Lista Menu \ Chama Menu \ PesqImportaçãoDocumentosFiscai \ Importação Documentos Fiscais \ Doc Principal \ Tela \ Formação de Preços \ Formação de Preços \ Temp Produtos