RRC001 — Relatório de Produção de Pneus
Fonte
- Source:
source/RRC001/
Objetivo
Relatório analitico e sintetico de producao de pneus da recapadora. Consolida dados de pedidos, ordens de producao recap (OPR), exame inicial/final, vulcanizacoes, raspagens, desenhos e carregamento/faturamento. Serve para controle gerencial, analise de produtividade, estatisticas de reformas e acompanhamento do ciclo de producao quente/frio.
Modelos de Relatorio
Modelo selecionado via combobox "Tipo/Modelo" (campo TP_RELATORIO) na aba "Filtros 1". Cada valor produz uma Consulta diferente em btnImprimirClick (URRC001.pas) e aponta para um layout distinto em dist/Relatorios/.
Modelo 1: Producao (default)
Quando usado: cmbTPRELATORIO.Value = 'P' (item "Producao"). Layout: RRC001.
Visao analitica padrao. Traz 1 linha por item de pedido/OPR com marca, modelo, medida, desenho, DOT, serie, fogo, pessoa, datas (entrada, entrega, emissao nota), situacao do exame final, valor unitario, forma de pagamento, municipio, flag "dentro do prazo", reformas, garantia e status de faturamento. Exclusivo deste modelo: quebras por regiao comercial, medida, modelo e checkbox "Qtd. Reformas".
SQL Base (resumo):
SELECT X.CD_PESSOA, X.IDMEDIDA, X.DTEMISSAO, X.IDMARCA, X.IDMODELO, X.IDITEMPEDPNEU,
X.NRORDEM, X.NM_PESSOA, X.DSMARCA, X.NRDOT, X.NRSERIE, X.DSGARANTIA,
X.DSDESENHO, X.QTDE, X.VLUNITARIO, X.CD_EMPRESA, X.DSMODELO, X.DSMEDIDAPNEU,
X.DTENTRADA, X.DTENTREGA, X.STORDEM, X.NRPROFUNDIDADESUGO,
X.CDFORMAPAGTO, X.DSFORMAPAGTO, X.DSMUNICIPIO,
CASE WHEN RCN.O_CD_ITEM IS NOT NULL THEN 'S' ELSE 'N' END ST_FATURADO,
CASE X.STEXAMEFINAL WHEN 'A' THEN 'APROVADO' WHEN 'T' THEN 'RETRABALHO'
WHEN 'R' THEN 'REPROVADO' END SITUACAO,
N.DT_EMISSAO, IIF(COALESCE(X.DTENTREGA, X.DTEMISSAO + 1) >= N.DT_EMISSAO, 'S', 'N') ST_DENTROPRAZO,
IIF(X.ST_GARANTIARQG = 'S', 0, COALESCE(X.QT_REFORMAS, 0)) QT_REFORMAS,
X.PSPNEU, ORC.NR_EMBARQUE
FROM (SELECT DISTINCT PC.CD_PESSOA, MD.ID IDMEDIDA, MAC.ID IDMARCA, MOP.ID IDMODELO,
OPR.ID NRORDEM, PC.NM_PESSOA, MAC.DSMARCA, P.NRDOT, P.NRSERIE,
DP.DSDESENHO, IPP.VLUNITARIO, PP.IDEMPRESA CD_EMPRESA, MOP.DSMODELO,
MD.DSMEDIDAPNEU, OPR.DTENTRADA, OPR.DTENTREGA, OPR.STORDEM, OPR.STEXAMEFINAL,
SP.ID IDSERVICO, PBP.NRPROFUNDIDADESUGO, OPR.QT_REFORMAS, GP.ST_GARANTIARQG,
FPG.CD_FORMAPAGTO, FPG.DS_FORMAPAGTO, MUN.DS_MUNICIPIO, EX.PSPNEU
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
INNER JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
INNER JOIN ITEM ITE ON ITE.CD_ITEM = SP.ID
INNER JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
LEFT JOIN GARANTIAPNEU GP ON GP.ID = OPR.IDGARANTIAPNEU
LEFT JOIN PREPARACAOBANDAPNEU PBP ON PBP.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN RASPAGEMPNEU RP ON RP.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN EXAMEINICIAL EI ON EI.IDORDEMPRODUCAORECAP = OPR.ID
/* ... filtros internos iWhereInterno / iLeftInterno ... */
) X
LEFT JOIN PLUGORDRECAPPEDIDO POP ON POP.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN RETORNA_TROCASOP(X.NRORDEM) RTOP ON 1 = 1
LEFT JOIN RETORNA_CUSTOPRODRECAP(X.CD_EMPRESA, X.IDSERVICO, POP.IDORDEMPRODUCAORECAP) RE ON 1 = 1
LEFT JOIN PARAMRECAP PR ON PR.IDEMPRESA = X.CD_EMPRESA
LEFT JOIN RETORNA_CHAVENOTA(POP.CD_EMPRESA, POP.NR_PEDIDO, POP.TP_PEDIDO) RCN
ON RCN.O_CD_ITEM = CASE WHEN X.STEXAMEFINAL = 'R'
AND X.IDITEMCARCACA IS NOT NULL
AND PR.STGERAPEDIDORECUSADO = 'S'
THEN X.IDITEMCARCACA ELSE X.CD_ITEM END
LEFT JOIN RETORNA_MOTIVOORDEM(X.IDITEMPEDPNEU) ON 1 = 1
/* iLeftExterno + iWhereExterno + iOrderExterno dinamicos */
Modelo 2: Pedido
Quando usado: cmbTPRELATORIO.Value = 'E' (item "Pedido"). Layout: RRC001_E.
Foco no pedido de coleta. Traz 1 linha por item do pedido com DOT, serie, garantia, desenho, medida, modelo e situacao do exame final. Usado para conferencia de coletas e itens da recapadora.
SQL Base (resumo):
SELECT X.DTEMISSAO, X.CD_EMPRESA, X.ID, X.NM_PESSOA, X.IDORDEM, X.DSMARCA, X.DSMODELO,
X.DSMEDIDAPNEU, X.NRDOT, X.NRSERIE, X.DSGARANTIA, X.DSDESENHO,
X.QT_ITEMPRODUCAO, X.DSSTPNEUMONTADO, X.VLUNITARIO, X.SITUACAO,
X.IDGARANTIAPNEU, X.DTREGISTROPALM
FROM (SELECT DISTINCT OPR.ID NRORDEM, PP.IDEMPRESA CD_EMPRESA, PP.ID, PC.CD_PESSOA,
PC.NM_PESSOA, MAC.DSMARCA, MOP.DSMODELO, MD.DSMEDIDAPNEU,
P.NRDOT, P.NRSERIE, DP.DSDESENHO, IPP.VLUNITARIO,
CASE OPR.STEXAMEFINAL WHEN 'A' THEN 'Aprovado'
WHEN 'T' THEN 'Retrabalho'
WHEN 'R' THEN 'Reprovado' END SITUACAO,
GP.DSGARANTIA, ITO.QT_ITEMPRODUCAO, PPM.DTREGISTROPALM
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
LEFT JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID AND OPR.STORDEM <> 'C'
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
LEFT JOIN GARANTIAPNEU GP ON GP.ID = OPR.IDGARANTIAPNEU
/* ... */
) X
LEFT JOIN PARAMRECAP PR ON PR.IDEMPRESA = X.CD_EMPRESA
LEFT JOIN PLUGORDRECAPPEDIDO POP ON POP.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN RETORNA_CHAVENOTA(POP.CD_EMPRESA, POP.NR_PEDIDO, POP.TP_PEDIDO) RCN
ON RCN.O_CD_ITEM = CASE WHEN X.STEXAMEFINAL = 'R'
AND X.IDITEMCARCACA IS NOT NULL
AND PR.STGERAPEDIDORECUSADO = 'S'
THEN X.IDITEMCARCACA ELSE X.CD_ITEM END
/* iLeftExterno + iWhereExterno + iOrderExterno */
Modelo 3: Vulcanizacoes
Quando usado: cmbTPRELATORIO.Value = 'V' (item "Vulcanizacoes"). Layout: RRC001_V.
Acompanhamento das vulcanizacoes: data inicio/fim, autoclave, ciclo master, posicao do pneu, ciclo/rodada. Habilita quebras exclusivas (Tipo Serviço, Autoclave, Ciclo Master, Rodada).
SQL Base (resumo):
SELECT VU.DTINICIO, VU.DTFIM, OPR.ID, PP.IDEMPRESA, PC.CD_PESSOA, PC.NM_PESSOA,
MAC.DSMARCA, MOP.DSMODELO, MD.DSMEDIDAPNEU, P.NRDOT, P.NRFOGO, P.NRSERIE,
VU.NR_CICLOMASTER, VU.IDAUTOCLAVE, VU.NR_POSICAOPNEU,
CASE P.STMONTAGEM WHEN 'S' THEN 'Sim' ELSE 'Nao' END DSSTPNEUMONTADO,
PPM.DTREGISTROPALM
FROM ORDEMPRODUCAORECAP OPR
LEFT JOIN VULCANIZACAO VU ON VU.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN ITEMPEDIDOPNEU IPP ON IPP.ID = OPR.IDITEMPEDIDOPNEU
LEFT JOIN PEDIDOPNEU PP ON PP.ID = IPP.IDPEDIDOPNEU
LEFT JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
LEFT JOIN PNEU P ON P.ID = IPP.IDPNEU
LEFT JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
LEFT JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
LEFT JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
LEFT JOIN EMPRESA E ON E.CD_EMPRESA = PP.IDEMPRESA
LEFT JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
LEFT JOIN PLUGORDRECAPPEDIDO POP ON POP.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN PEDIDO PD ON PD.CD_EMPRESA = POP.CD_EMPRESA
AND PD.NR_PEDIDO = POP.NR_PEDIDO
AND PD.TP_PEDIDO = POP.TP_PEDIDO
LEFT JOIN RETORNA_TROCASOP(OPR.ID) RTOP ON 1 = 1
LEFT JOIN RETORNA_CHAVENOTA(POP.CD_EMPRESA, POP.NR_PEDIDO, POP.TP_PEDIDO) RCN
ON RCN.O_CD_ITEM = IPP.IDSERVICOPNEU
/* iLeft + iWhere + iOrder dinamicos */
Modelo 4: Producao com valor de custo
Quando usado: cmbTPRELATORIO.Value = 'C' (item "Producao com valor de custo"). Layout: RRC001_C.
Mesma estrutura do Modelo 1, mas acrescenta o valor de custo da producao (via procedure RETORNA_CUSTOPRODRECAP) e o motivo da ordem. Usado para analise de margem e custo por pedido/servico.
SQL Base (resumo):
SELECT X.NRORDEM, X.NM_PESSOA, X.DSMARCA, X.NRDOT, X.NRSERIE, X.NRFOGO,
X.DSGARANTIA, X.QT_ITEMPRODUCAO, X.DSDESENHO, X.QTDE, X.VLUNITARIO,
X.CD_EMPRESA, X.DSMODELO, X.DSMEDIDAPNEU, X.DTENTRADA, X.DTENTREGA,
X.STORDEM, X.SITUACAO, O_DSMOTIVO, RE.O_VL_CUSTO,
CASE WHEN RCN.O_CD_ITEM IS NOT NULL THEN 'S' ELSE 'N' END ST_FATURADO
FROM (SELECT DISTINCT OPR.ID NRORDEM, PC.NM_PESSOA, MAC.DSMARCA, P.NRDOT, P.NRSERIE,
DP.DSDESENHO, IPP.VLUNITARIO, PP.IDEMPRESA CD_EMPRESA,
MOP.DSMODELO, MD.DSMEDIDAPNEU, OPR.DTENTRADA, OPR.DTENTREGA,
OPR.STORDEM, CASE OPR.STEXAMEFINAL
WHEN 'A' THEN 'APROVADO' WHEN 'T' THEN 'RETRABALHO'
WHEN 'R' THEN 'REPROVADO' ELSE 'RECUSADO' END SITUACAO,
SP.ID IDSERVICO, IPP.ID IDITEMPEDPNEU, SP.IDITEMCARCACA, ITE.CD_ITEM
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
LEFT JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
INNER JOIN ITEM ITE ON ITE.CD_ITEM = SP.ID
/* ... */
) X
LEFT JOIN PLUGORDRECAPPEDIDO POP ON POP.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN RETORNA_TROCASOP(X.NRORDEM) RTOP ON 1 = 1
LEFT JOIN PLUGORDRECAPORDPROD PO ON PO.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN ORDEMPRODUCAO OD ON OD.CD_EMPRESA = PO.CD_EMPRESA
AND OD.NR_ORDEMPRODUCAO = PO.NR_ORDEMPRODUCAO
LEFT JOIN RETORNA_CUSTOPRODRECAP(X.CD_EMPRESA, X.IDSERVICO, POP.IDORDEMPRODUCAORECAP) RE ON 1 = 1
LEFT JOIN PARAMRECAP PR ON PR.IDEMPRESA = X.CD_EMPRESA
LEFT JOIN RETORNA_CHAVENOTA(POP.CD_EMPRESA, POP.NR_PEDIDO, POP.TP_PEDIDO) RCN
ON RCN.O_CD_ITEM = CASE WHEN X.STEXAMEFINAL = 'R'
AND X.IDITEMCARCACA IS NOT NULL
AND PR.STGERAPEDIDORECUSADO = 'S'
THEN X.IDITEMCARCACA ELSE X.CD_ITEM END
LEFT JOIN RETORNA_MOTIVOORDEM(X.IDITEMPEDPNEU) ON 1 = 1
Modelo 5: Sintetico/Producao por Secao
Quando usado: cmbTPRELATORIO.Value = 'S' (item "Sintetico/Producao por Secao"). Layout: RRC001_S.
Totalizacao por secao do item. Retorna quantidade e somatorio do valor unitario, com quebras opcionais por etapa de producao, matriz de pneu, medida e marca. Usado para visao gerencial consolidada.
SQL Base (resumo):
SELECT X.CD_SECAO, X.DS_SECAO, COUNT(X.DS_SECAO) QT_SECAO, SUM(X.VLUNITARIO) VLUNITARIO,
CAST(:ST_ETAPAPRODUCAO AS DOM_CHAR1) ST_QUEBRAETAPA,
CAST(:ST_MATRIZPNEU AS DOM_CHAR1) ST_QUEBRAMATRIZ,
CAST(:ST_MEDIDAPNEU AS DOM_CHAR1) ST_QUEBRAMEDIDA
FROM (SELECT DISTINCT OPR.ID NRORDEM, SEC.CD_SECAO,
COALESCE(SEC.DS_SECAO, 'Sem Secao') DS_SECAO,
PP.IDEMPRESA CD_EMPRESA, OPR.STEXAMEFINAL, SP.IDITEMCARCACA,
ITE.CD_ITEM, SP.ID IDSERVICO, IPP.ID IDITEMPEDPNEU, IPP.VLUNITARIO
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
INNER JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
INNER JOIN ITEM ITE ON ITE.CD_ITEM = SP.ID
INNER JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
LEFT JOIN SECAO SEC ON SEC.CD_SECAO = ITE.CD_SECAO
/* ... */
) X
LEFT JOIN RETORNA_TROCASOP(X.NRORDEM) RTOP ON 1 = 1
LEFT JOIN PLUGORDRECAPPEDIDO POP ON POP.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN PARAMRECAP PR ON PR.IDEMPRESA = X.CD_EMPRESA
LEFT JOIN EXAMEINICIAL EI ON EI.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN RETORNA_CHAVENOTA(POP.CD_EMPRESA, POP.NR_PEDIDO, POP.TP_PEDIDO) RCN
ON RCN.O_CD_ITEM = CASE WHEN X.STEXAMEFINAL = 'R'
AND X.IDITEMCARCACA IS NOT NULL
AND PR.STGERAPEDIDORECUSADO = 'S'
THEN X.IDITEMCARCACA ELSE X.CD_ITEM END
GROUP BY X.CD_SECAO, X.DS_SECAO
ORDER BY X.CD_SECAO, X.DS_SECAO
Modelo 6: Estatistica por Sulco
Quando usado: cmbTPRELATORIO.Value = 'R' (item "Estatistica por Sulco"). Layout: RRC001_R.
Mede a profundidade do sulco (NRPROFUNDIDADESULCO) no exame inicial ou na preparacao da banda. Opcional: quebrar por desenho de entrada. Usado para analise de padrao de desgaste de carcacas.
SQL Base (resumo):
SELECT DISTINCT OPR.ID NRORDEMPROD, PC.CD_PESSOA, PC.NM_PESSOA,
PC.NM_FANTASIA, PC.NM_PESSOA || COALESCE(' - ' || PC.NM_FANTASIA, '') NM_RAZAOFANTASIA,
P.NRSERIE, P.NRFOGO,
DE.ID IDDESENHOENTRADA, DE.DSDESENHO DSDESENHOENTRADA,
COALESCE(DE.ID || ' - ' || DE.DSDESENHO, 'SEM DESENHO') QUEBRADESENHOENTRADA,
DP.ID IDDESENHOOPR, DP.DSDESENHO DSDESENHOOPR,
COALESCE(PBP.NRPROFUNDIDADESUGO, EI.NRPROFUNDIDADESULCO) NRPROFUNDIDADESULCO,
PIQ.ID IDPICOTAMENTO, PIQ.DSPICOTAMENTO, P.NRDOT, MOP.DSMODELO,
CASE OPR.STEXAMEFINAL WHEN 'R' THEN 'Reprovado' WHEN 'T' THEN 'Retrabalho'
ELSE 'Aprovado' END DSSITUACAO
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
INNER JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID AND OPR.STORDEM <> 'C'
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
INNER JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
INNER JOIN ITEM ITE ON ITE.CD_ITEM = SP.ID
LEFT JOIN EXAMEINICIAL EI ON EI.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN DESENHOPNEU DE ON DE.ID = EI.IDDESENHOENTRADA
LEFT JOIN ESCAREACAOPNEU ESP ON ESP.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN PICOTAMENTOPNEU PIQ ON PIQ.ID = ESP.IDPICOTAMENTOPNEU
LEFT JOIN PREPARACAOBANDAPNEU PBP ON PBP.IDORDEMPRODUCAORECAP = OPR.ID
/* iLeft + iWhere dinamicos */
ORDER BY [DE.ID se ST_DESENHOENTRADA,] COALESCE(PBP.NRPROFUNDIDADESUGO, EI.NRPROFUNDIDADESULCO)
Modelo 7: Estatistica por Tipo de Picotamento
Quando usado: cmbTPRELATORIO.Value = 'Q' (item "Estatistica por Tipo de Picotamento"). Layout: RRC001_Q.
Estatistica de picotamento. Agrupa por PICOTAMENTOPNEU (categorizacao do tipo de dano/preparo da carcaca na escareacao), permitindo medir ocorrencia e situacao de exame final por tipo.
SQL Base (resumo):
SELECT DISTINCT OPR.ID NRORDEMPROD, PC.CD_PESSOA, PC.NM_PESSOA,
PC.NM_FANTASIA, PC.NM_PESSOA || COALESCE(' - ' || PC.NM_FANTASIA, '') NM_RAZAOFANTASIA,
P.NRSERIE, P.NRFOGO, DE.ID IDDESENHOENTRADA, DE.DSDESENHO DSDESENHOENTRADA,
COALESCE(PBP.NRPROFUNDIDADESUGO, EI.NRPROFUNDIDADESULCO) NRPROFUNDIDADESULCO,
PIQ.ID IDPICOTAMENTO, PIQ.DSPICOTAMENTO,
COALESCE(PIQ.ID || ' - ' || PIQ.DSPICOTAMENTO, 'SEM PICOTAMENTO') QUEBRAPICOTAMENTO,
CASE OPR.STEXAMEFINAL WHEN 'R' THEN 'Reprovado' WHEN 'T' THEN 'Retrabalho'
ELSE 'Aprovado' END DSSITUACAO,
P.NRDOT, MOP.DSMODELO
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
INNER JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID AND OPR.STORDEM <> 'C'
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
INNER JOIN ITEM ITE ON ITE.CD_ITEM = SP.ID
LEFT JOIN EXAMEINICIAL EI ON EI.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN DESENHOPNEU DE ON DE.ID = EI.IDDESENHOENTRADA
LEFT JOIN ESCAREACAOPNEU ESP ON ESP.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN PICOTAMENTOPNEU PIQ ON PIQ.ID = ESP.IDPICOTAMENTOPNEU
LEFT JOIN PREPARACAOBANDAPNEU PBP ON PBP.IDORDEMPRODUCAORECAP = OPR.ID
/* iLeft + iWhere dinamicos */
ORDER BY PIQ.ID, OPR.ID
Filtros
Campos simples (aba "Filtros 1"):
- Empresa (Lista de Empresas) F9 — obrigatorio
- Cliente (Lista de Pessoas) F9
- St. Ordem Pneu (Em producao / Em producao Pendente / Em producao Iniciada / Todos / Producao Finalizada / Cancelados / Todos Validos) — default "Todos"
- Ordenacao (Coleta / Cod. Pessoa / Ordem de Producao / Data de Emissao do Pedido / Data de Entrega do Pedido / Serie do Pneu / Desenho / Nome Pessoa) — default "Coleta"
- Status Trocas (Nenhuma Troca / Todos(Nao Filtrar) / Serviço / Banda / Desenho / Todas as Trocas) — default "Todos(Nao Filtrar)"
- Tipo/Modelo (Producao / Pedido / Vulcanizacoes / Producao com valor de custo / Sintetico/Producao por Secao / Estatistica por Sulco / Estatistica por Tipo de Picotamento) — default "Producao"; e o seletor de modelo do relatorio
- Ordem Carreg./Fat. (Nao Faturado - Sem Ordem / Nao Faturado - Ordem iniciada / Faturado / Ordem Confirmada / Todos) — default "Nao Faturado - Sem Ordem"
- Tp. Recapagem (Recapagem Quente / Recapagem a Frio / Todas) — visivel apenas em contextos especificos
Campos simples (aba "Filtros 2"):
- Pneu Montado (Sim / Nao / Todos) — default "Sim"
- Pneu da Casa (Sim / Nao / Todos) — default "Sim"
- Pneus Urgente (Sim / Nao / Todos) — default "Sim"
- Gera Pedido de Faturamento (Sim / Nao / Todos) — default "Sim"
- Mostrar itens da Carcaca nao Faturados (S/N)
- Apenas ordens sem Pre Moldado (Prod. Adic.) (S/N)
- Analise sobre Medida Padrao (S/N)
- Exame Inicial: Aprovados / Recusados E.I. / Com Restricao Tecnica (S/N cada)
- Exame Final: Aprovados / Retrabalhos / Recusados E.F. (S/N cada)
Campos simples (Periodos):
- Entrada Ordem Recap. (De / Ate)
- Fechamento Ordem Recap. (De / Ate)
- Entrega (De / Ate)
- Emissao Nota (De / Ate)
- Lancamento da Coleta (De / Ate)
- Data do Pedido Smart (De / Ate)
Quebras (checkbox no grupo "Quebras" da aba "Filtros 1"):
- Data de Entrada Ped. Recapadora (S/N)
- Vendedor da Coleta (S/N)
- Tipo Vendedor (S/N)
- Vendedor da Nota (S/N)
- Data de Entrega (S/N)
- Tipo de Serviço (S/N) — so Modelo Vulcanizacoes
- Autoclave / Ciclo Master / Rodada / Desenho de Entrada (S/N cada) — relevantes nos Modelos Vulcanizacoes/Sulco
- Secao (S/N)
- Regiao Comercial (S/N) — so Modelo Producao
- Area Comercial / Qtd. Reformas (S/N) — so Modelo Producao
- Etapa de Producao / Matriz de Pneu / Medida / Marca / Modelo de Pneu (S/N) — relevantes em Modelos Producao/Sintetico
- Mostrar valor dos consertos (S/N) — so Modelo Producao
Filtros de grid (multi-selecao via F9) — aba "Vendedor/Executor/Tipo Vendedor":
- Tipo Vendedor (Lista de Tipos de Vendedor) F9 — multi-selecao
- Vendedores (Lista de Pessoas) F9 — multi-selecao
- Executor (Lista de Executores de Etapa) F9 — multi-selecao (checkbox "Marcar todos" disponivel)
- Regioes Comerciais (Lista de Regioes Comerciais) F9 — multi-selecao
- Area Comercial (Lista de Areas Comerciais) F9 — multi-selecao
Filtros de grid — aba "Grupos/Servicos/Secao/Perfil":
- Grupos (Lista de Grupos) F9 — multi-selecao (checkbox "Marcar todos")
- SubGrupos (Lista de SubGrupos) F9 — multi-selecao
- Serviços (Lista de Serviços de Pneu) F9 — multi-selecao
- Secao (Lista de Secoes) F9 — multi-selecao
- Perfil (Lista de Perfis) F9 — multi-selecao
Filtros de grid — aba "Pneu":
- Marcas (Lista de Marcas de Pneu) F9 — multi-selecao
- Medidas (Lista de Medidas de Pneu) F9 — multi-selecao
- Desenho (Lista de Desenhos de Pneu) F9 — multi-selecao
- Modelos (Lista de Modelos de Pneu) F9 — multi-selecao (checkbox "Excluir Modelos")
- Matrizes (Lista de Matrizes de Pneu) F9 — multi-selecao (checkbox "Excluir Matrizes")
- Etapas de Producao (Lista de Etapas de Producao) F9 — multi-selecao (checkbox "Excluir Etapas")
Filtros de grid — aba "Pedidos/Municipio/Garantias/Tipo do Pedido/Tipo Serviço Recap.":
- Pedidos Recapadora (Lista de Pedidos) F9 — multi-selecao
- Municipio (Lista de Municipios) F9 — multi-selecao
- Garantias (Lista de Garantias de Pneu) F9 — multi-selecao
- Tipo do Pedido (Lista de Tipos de Pedido de Pneu) F9 — multi-selecao
- Tipo Serviço Recap. (Lista de Tipos de Serviço Recap.) F9 — multi-selecao
Filtros de grid — aba "Vulcanizacao":
- Autoclave (Lista de Autoclaves) F9 — multi-selecao
- Ciclo Master (Lista de Ciclos Master) F9 — multi-selecao
- Rodada (Lista de Rodadas) F9 — multi-selecao
Notas de comportamento nao-trivial:
- O filtro "Vendedor da Nota" troca o JOIN principal: passa a navegar via
PLUGORDRECAPPEDIDO -> RETORNA_CHAVENOTA -> NOTA -> ITEMNOTA -> ITEMNOTAVENDEDOR, respeitandoPARMFATUR.ST_VARIOSVENDEDORESpara usarITEMNOTAVENDEDOR.CD_VENDEDORouNOTA.CD_VENDEDOR. - Ordenacao "Data de Entrega do Pedido" (
cmbOrdem.Value = 'E') nao se aplica aos Modelos Sulco (R), Picotamento (Q) e Sintetico (S). - Quebras Regiao Comercial, Medida e Modelo so participam do SQL quando
TP_RELATORIO = 'P'(Producao). - Quebra Marca participa quando
TP_RELATORIO IN ('P', 'S'). - Quebras Autoclave / Ciclo Master / Rodada / Tipo de Serviço so se aplicam ao Modelo Vulcanizacoes (
V).
Parametros que Influenciam
Carregados em FormActivate via BuscaParametros (URRC001.pas:344-345):
ParmFatur := BuscaParametros(dmRRC001.transaction, 'PARMFATUR', IntToStr(sessao.Empresa.cd_empresa));
paramRecap := BuscaParametros(dmRRC001.transaction, 'PARAMRECAP', IntToStr(sessao.Empresa.cd_empresa));
| Tabela | Campo | Efeito |
|---|---|---|
| PARMFATUR | ST_VARIOSVENDEDORES | Se 'S', usa ITEMNOTAVENDEDOR.CD_VENDEDOR nas quebras de vendedor/tipo vendedor (cada item da nota pode ter vendedor proprio). Se 'N', usa NOTA.CD_VENDEDOR ou PEDIDOPNEU.IDVENDEDOR. Afeta os JOINs de iLeft/iLeftInterno quando "Vendedor da Nota" ou "Tipo Vendedor" esta marcado. |
| PARAMRECAP | STGERAPEDIDORECUSADO | Quando 'S', a chave de vinculacao com NOTA (RETORNA_CHAVENOTA) usa X.IDITEMCARCACA em vez de X.CD_ITEM para ordens com exame final reprovado (STEXAMEFINAL = 'R') com carcaca. Impacta o flag ST_FATURADO nos Modelos Producao (P), Pedido (E), Custo (C) e Sintetico (S). |
| PARAMRECAP | STSERVICONOPEDIDO | Combinada com STGERAPEDIDORECUSADO, define a estrategia de montagem dos JOINs de faturamento/itens da carcaca nos Modelos que usam o filtro "Mostrar itens da Carcaca nao Faturados". |
Mensagens exibidas
Levantadas de source/RRC001/ pela camada 0 (commit 96fc51e236).
Mais 28 mensagens com texto literal no código: RRC001.
Parâmetros lidos
Campos PARM* lidos via values[] em source/RRC001/ (commit 96fc51e236).
| Parâmetro | Tabela |
|---|---|
| ST_VARIOSVENDEDORES | PARMFATUR |
Procedures Chamadas
| Procedure | Tabelas Acessadas |
|---|---|
| RETORNA_CAMPOSRRC001 | CONSERTOMANCHAO (SELECT), ITEMNOTA (SELECT), ITEMPEDIDOPNEU (SELECT), LIMPEZAMANCHAO (SELECT), NOTA (SELECT), ORDEMPRODUCAORECAP (SELECT) +3 |
| RETORNA_CHAVENOTA | NOTA (SELECT), ORDEMCARREG (SELECT), PEDIDONOTA (SELECT) |
| RETORNA_CHAVEPEDIDO | EMBARQUE (SELECT), NOTA (SELECT), ORDEMCARREG (SELECT), PEDIDO (SELECT), PEDIDONOTA (SELECT) |
| RETORNA_CUSTOPRODRECAP | MOVESTOQUE (SELECT), ORDEMPRODUCAO (SELECT) |
| RETORNA_ETAPASPRODUCAO | ACABAMENTOPNEU (SELECT), APLICACAOCOLAPNEU (SELECT), APLICCONSERTOPNEU (SELECT), DESENVELOPAMENTO (SELECT), EMBORRACHAMENTO (SELECT), ENVELOPAMENTO (SELECT) +14 |
| RETORNA_MOTIVOORDEM | ITEMPEDIDOPNEU (SELECT), LAUDOTECNICOPNEURECAP (SELECT), MOTIVO (SELECT), MOTIVOLAUDO (SELECT), MOTIVOPNEU (SELECT), ORDEMPRODUCAORECAP (SELECT) |
| RETORNA_SALDOESTOQUE | ESTOQUE (SELECT), ESTOQUEDIA (SELECT), ITEMLOCAL (SELECT), MOVESTOQUE (SELECT), OPERACAO (SELECT), PARMESTOQUE (SELECT) |
| RETORNA_TROCASOP | ORDEMPRODUCAORECAP (SELECT), TROCADESENHO (SELECT) |
| VERIFICA_EXECUTORORDEM | ACABAMENTOPNEU (SELECT), APLICACAOCOLAPNEU (SELECT), APLICCONSERTOPNEU (SELECT), DESENVELOPAMENTO (SELECT), EMBORRACHAMENTO (SELECT), ENVELOPAMENTO (SELECT) +13 |
Tabelas via Procedures (acesso indireto)
| Tabela | Operacoes |
|---|---|
| ACABAMENTOPNEU | SELECT |
| APLICACAOCOLAPNEU | SELECT |
| APLICCONSERTOPNEU | SELECT |
| CONSERTOMANCHAO | SELECT |
| DESENVELOPAMENTO | SELECT |
| EMBARQUE | SELECT |
| EMBORRACHAMENTO | SELECT |
| ENVELOPAMENTO | SELECT |
| ESCAREACAOPNEU | SELECT |
| ESTOQUE | SELECT |
| ESTOQUEDIA | SELECT |
| ETAPASPRODUCAOPNEU | SELECT |
| EXAMEFINALPNEU | SELECT |
| EXAMEINICIAL | SELECT |
| EXECUTORETAPA | SELECT |
| EXTRUSORAAUTOPNEU | SELECT |
| EXTRUSORAPNEU | SELECT |
| ITEMLOCAL | SELECT |
| ITEMNOTA | SELECT |
| ITEMPEDIDOPNEU | SELECT |
| ... | +24 tabelas |
Modelos de Relatório
Modelo selecionado via combobox "Tipo/Modelo" (campo TP_RELATORIO) na aba "Filtros 1". Cada valor produz uma Consulta diferente em btnImprimirClick (URRC001.pas) e aponta para um layout distinto em dist/Relatórios/.
Modelo 1: Producao (default)
Quando usado: cmbTPRELATORIO.Value = 'P' (item "Producao"). Layout: RRC001.
Visao analitica padrao. Traz 1 linha por item de pedido/OPR com marca, modelo, medida, desenho, DOT, serie, fogo, pessoa, datas (entrada, entrega, emissao nota), situacao do exame final, valor unitario, forma de pagamento, municipio, flag "dentro do prazo", reformas, garantia e status de faturamento. Exclusivo deste modelo: quebras por regiao comercial, medida, modelo e checkbox "Qtd. Reformas".
SQL Base (resumo):
SELECT X.CD_PESSOA, X.IDMEDIDA, X.DTEMISSAO, X.IDMARCA, X.IDMODELO, X.IDITEMPEDPNEU,
X.NRORDEM, X.NM_PESSOA, X.DSMARCA, X.NRDOT, X.NRSERIE, X.DSGARANTIA,
X.DSDESENHO, X.QTDE, X.VLUNITARIO, X.CD_EMPRESA, X.DSMODELO, X.DSMEDIDAPNEU,
X.DTENTRADA, X.DTENTREGA, X.STORDEM, X.NRPROFUNDIDADESUGO,
X.CDFORMAPAGTO, X.DSFORMAPAGTO, X.DSMUNICIPIO,
CASE WHEN RCN.O_CD_ITEM IS NOT NULL THEN 'S' ELSE 'N' END ST_FATURADO,
CASE X.STEXAMEFINAL WHEN 'A' THEN 'APROVADO' WHEN 'T' THEN 'RETRABALHO'
WHEN 'R' THEN 'REPROVADO' END SITUACAO,
N.DT_EMISSAO, IIF(COALESCE(X.DTENTREGA, X.DTEMISSAO + 1) >= N.DT_EMISSAO, 'S', 'N') ST_DENTROPRAZO,
IIF(X.ST_GARANTIARQG = 'S', 0, COALESCE(X.QT_REFORMAS, 0)) QT_REFORMAS,
X.PSPNEU, ORC.NR_EMBARQUE
FROM (SELECT DISTINCT PC.CD_PESSOA, MD.ID IDMEDIDA, MAC.ID IDMARCA, MOP.ID IDMODELO,
OPR.ID NRORDEM, PC.NM_PESSOA, MAC.DSMARCA, P.NRDOT, P.NRSERIE,
DP.DSDESENHO, IPP.VLUNITARIO, PP.IDEMPRESA CD_EMPRESA, MOP.DSMODELO,
MD.DSMEDIDAPNEU, OPR.DTENTRADA, OPR.DTENTREGA, OPR.STORDEM, OPR.STEXAMEFINAL,
SP.ID IDSERVICO, PBP.NRPROFUNDIDADESUGO, OPR.QT_REFORMAS, GP.ST_GARANTIARQG,
FPG.CD_FORMAPAGTO, FPG.DS_FORMAPAGTO, MUN.DS_MUNICIPIO, EX.PSPNEU
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
INNER JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
INNER JOIN ITEM ITE ON ITE.CD_ITEM = SP.ID
INNER JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
LEFT JOIN GARANTIAPNEU GP ON GP.ID = OPR.IDGARANTIAPNEU
LEFT JOIN PREPARACAOBANDAPNEU PBP ON PBP.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN RASPAGEMPNEU RP ON RP.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN EXAMEINICIAL EI ON EI.IDORDEMPRODUCAORECAP = OPR.ID
/* ... filtros internos iWhereInterno / iLeftInterno ... */
) X
LEFT JOIN PLUGORDRECAPPEDIDO POP ON POP.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN RETORNA_TROCASOP(X.NRORDEM) RTOP ON 1 = 1
LEFT JOIN RETORNA_CUSTOPRODRECAP(X.CD_EMPRESA, X.IDSERVICO, POP.IDORDEMPRODUCAORECAP) RE ON 1 = 1
LEFT JOIN PARAMRECAP PR ON PR.IDEMPRESA = X.CD_EMPRESA
LEFT JOIN RETORNA_CHAVENOTA(POP.CD_EMPRESA, POP.NR_PEDIDO, POP.TP_PEDIDO) RCN
ON RCN.O_CD_ITEM = CASE WHEN X.STEXAMEFINAL = 'R'
AND X.IDITEMCARCACA IS NOT NULL
AND PR.STGERAPEDIDORECUSADO = 'S'
THEN X.IDITEMCARCACA ELSE X.CD_ITEM END
LEFT JOIN RETORNA_MOTIVOORDEM(X.IDITEMPEDPNEU) ON 1 = 1
/* iLeftExterno + iWhereExterno + iOrderExterno dinamicos */
Modelo 2: Pedido
Quando usado: cmbTPRELATORIO.Value = 'E' (item "Pedido"). Layout: RRC001_E.
Foco no pedido de coleta. Traz 1 linha por item do pedido com DOT, serie, garantia, desenho, medida, modelo e situacao do exame final. Usado para conferencia de coletas e itens da recapadora.
SQL Base (resumo):
SELECT X.DTEMISSAO, X.CD_EMPRESA, X.ID, X.NM_PESSOA, X.IDORDEM, X.DSMARCA, X.DSMODELO,
X.DSMEDIDAPNEU, X.NRDOT, X.NRSERIE, X.DSGARANTIA, X.DSDESENHO,
X.QT_ITEMPRODUCAO, X.DSSTPNEUMONTADO, X.VLUNITARIO, X.SITUACAO,
X.IDGARANTIAPNEU, X.DTREGISTROPALM
FROM (SELECT DISTINCT OPR.ID NRORDEM, PP.IDEMPRESA CD_EMPRESA, PP.ID, PC.CD_PESSOA,
PC.NM_PESSOA, MAC.DSMARCA, MOP.DSMODELO, MD.DSMEDIDAPNEU,
P.NRDOT, P.NRSERIE, DP.DSDESENHO, IPP.VLUNITARIO,
CASE OPR.STEXAMEFINAL WHEN 'A' THEN 'Aprovado'
WHEN 'T' THEN 'Retrabalho'
WHEN 'R' THEN 'Reprovado' END SITUACAO,
GP.DSGARANTIA, ITO.QT_ITEMPRODUCAO, PPM.DTREGISTROPALM
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
LEFT JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID AND OPR.STORDEM <> 'C'
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
LEFT JOIN GARANTIAPNEU GP ON GP.ID = OPR.IDGARANTIAPNEU
/* ... */
) X
LEFT JOIN PARAMRECAP PR ON PR.IDEMPRESA = X.CD_EMPRESA
LEFT JOIN PLUGORDRECAPPEDIDO POP ON POP.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN RETORNA_CHAVENOTA(POP.CD_EMPRESA, POP.NR_PEDIDO, POP.TP_PEDIDO) RCN
ON RCN.O_CD_ITEM = CASE WHEN X.STEXAMEFINAL = 'R'
AND X.IDITEMCARCACA IS NOT NULL
AND PR.STGERAPEDIDORECUSADO = 'S'
THEN X.IDITEMCARCACA ELSE X.CD_ITEM END
/* iLeftExterno + iWhereExterno + iOrderExterno */
Modelo 3: Vulcanizacoes
Quando usado: cmbTPRELATORIO.Value = 'V' (item "Vulcanizacoes"). Layout: RRC001_V.
Acompanhamento das vulcanizacoes: data inicio/fim, autoclave, ciclo master, posicao do pneu, ciclo/rodada. Habilita quebras exclusivas (Tipo Serviço, Autoclave, Ciclo Master, Rodada).
SQL Base (resumo):
SELECT VU.DTINICIO, VU.DTFIM, OPR.ID, PP.IDEMPRESA, PC.CD_PESSOA, PC.NM_PESSOA,
MAC.DSMARCA, MOP.DSMODELO, MD.DSMEDIDAPNEU, P.NRDOT, P.NRFOGO, P.NRSERIE,
VU.NR_CICLOMASTER, VU.IDAUTOCLAVE, VU.NR_POSICAOPNEU,
CASE P.STMONTAGEM WHEN 'S' THEN 'Sim' ELSE 'Nao' END DSSTPNEUMONTADO,
PPM.DTREGISTROPALM
FROM ORDEMPRODUCAORECAP OPR
LEFT JOIN VULCANIZACAO VU ON VU.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN ITEMPEDIDOPNEU IPP ON IPP.ID = OPR.IDITEMPEDIDOPNEU
LEFT JOIN PEDIDOPNEU PP ON PP.ID = IPP.IDPEDIDOPNEU
LEFT JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
LEFT JOIN PNEU P ON P.ID = IPP.IDPNEU
LEFT JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
LEFT JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
LEFT JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
LEFT JOIN EMPRESA E ON E.CD_EMPRESA = PP.IDEMPRESA
LEFT JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
LEFT JOIN PLUGORDRECAPPEDIDO POP ON POP.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN PEDIDO PD ON PD.CD_EMPRESA = POP.CD_EMPRESA
AND PD.NR_PEDIDO = POP.NR_PEDIDO
AND PD.TP_PEDIDO = POP.TP_PEDIDO
LEFT JOIN RETORNA_TROCASOP(OPR.ID) RTOP ON 1 = 1
LEFT JOIN RETORNA_CHAVENOTA(POP.CD_EMPRESA, POP.NR_PEDIDO, POP.TP_PEDIDO) RCN
ON RCN.O_CD_ITEM = IPP.IDSERVICOPNEU
/* iLeft + iWhere + iOrder dinamicos */
Modelo 4: Producao com valor de custo
Quando usado: cmbTPRELATORIO.Value = 'C' (item "Producao com valor de custo"). Layout: RRC001_C.
Mesma estrutura do Modelo 1, mas acrescenta o valor de custo da producao (via procedure RETORNA_CUSTOPRODRECAP) e o motivo da ordem. Usado para analise de margem e custo por pedido/servico.
SQL Base (resumo):
SELECT X.NRORDEM, X.NM_PESSOA, X.DSMARCA, X.NRDOT, X.NRSERIE, X.NRFOGO,
X.DSGARANTIA, X.QT_ITEMPRODUCAO, X.DSDESENHO, X.QTDE, X.VLUNITARIO,
X.CD_EMPRESA, X.DSMODELO, X.DSMEDIDAPNEU, X.DTENTRADA, X.DTENTREGA,
X.STORDEM, X.SITUACAO, O_DSMOTIVO, RE.O_VL_CUSTO,
CASE WHEN RCN.O_CD_ITEM IS NOT NULL THEN 'S' ELSE 'N' END ST_FATURADO
FROM (SELECT DISTINCT OPR.ID NRORDEM, PC.NM_PESSOA, MAC.DSMARCA, P.NRDOT, P.NRSERIE,
DP.DSDESENHO, IPP.VLUNITARIO, PP.IDEMPRESA CD_EMPRESA,
MOP.DSMODELO, MD.DSMEDIDAPNEU, OPR.DTENTRADA, OPR.DTENTREGA,
OPR.STORDEM, CASE OPR.STEXAMEFINAL
WHEN 'A' THEN 'APROVADO' WHEN 'T' THEN 'RETRABALHO'
WHEN 'R' THEN 'REPROVADO' ELSE 'RECUSADO' END SITUACAO,
SP.ID IDSERVICO, IPP.ID IDITEMPEDPNEU, SP.IDITEMCARCACA, ITE.CD_ITEM
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
LEFT JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
INNER JOIN ITEM ITE ON ITE.CD_ITEM = SP.ID
/* ... */
) X
LEFT JOIN PLUGORDRECAPPEDIDO POP ON POP.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN RETORNA_TROCASOP(X.NRORDEM) RTOP ON 1 = 1
LEFT JOIN PLUGORDRECAPORDPROD PO ON PO.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN ORDEMPRODUCAO OD ON OD.CD_EMPRESA = PO.CD_EMPRESA
AND OD.NR_ORDEMPRODUCAO = PO.NR_ORDEMPRODUCAO
LEFT JOIN RETORNA_CUSTOPRODRECAP(X.CD_EMPRESA, X.IDSERVICO, POP.IDORDEMPRODUCAORECAP) RE ON 1 = 1
LEFT JOIN PARAMRECAP PR ON PR.IDEMPRESA = X.CD_EMPRESA
LEFT JOIN RETORNA_CHAVENOTA(POP.CD_EMPRESA, POP.NR_PEDIDO, POP.TP_PEDIDO) RCN
ON RCN.O_CD_ITEM = CASE WHEN X.STEXAMEFINAL = 'R'
AND X.IDITEMCARCACA IS NOT NULL
AND PR.STGERAPEDIDORECUSADO = 'S'
THEN X.IDITEMCARCACA ELSE X.CD_ITEM END
LEFT JOIN RETORNA_MOTIVOORDEM(X.IDITEMPEDPNEU) ON 1 = 1
Modelo 5: Sintetico/Producao por Secao
Quando usado: cmbTPRELATORIO.Value = 'S' (item "Sintetico/Producao por Secao"). Layout: RRC001_S.
Totalizacao por secao do item. Retorna quantidade e somatorio do valor unitario, com quebras opcionais por etapa de producao, matriz de pneu, medida e marca. Usado para visao gerencial consolidada.
SQL Base (resumo):
SELECT X.CD_SECAO, X.DS_SECAO, COUNT(X.DS_SECAO) QT_SECAO, SUM(X.VLUNITARIO) VLUNITARIO,
CAST(:ST_ETAPAPRODUCAO AS DOM_CHAR1) ST_QUEBRAETAPA,
CAST(:ST_MATRIZPNEU AS DOM_CHAR1) ST_QUEBRAMATRIZ,
CAST(:ST_MEDIDAPNEU AS DOM_CHAR1) ST_QUEBRAMEDIDA
FROM (SELECT DISTINCT OPR.ID NRORDEM, SEC.CD_SECAO,
COALESCE(SEC.DS_SECAO, 'Sem Secao') DS_SECAO,
PP.IDEMPRESA CD_EMPRESA, OPR.STEXAMEFINAL, SP.IDITEMCARCACA,
ITE.CD_ITEM, SP.ID IDSERVICO, IPP.ID IDITEMPEDPNEU, IPP.VLUNITARIO
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
INNER JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
INNER JOIN ITEM ITE ON ITE.CD_ITEM = SP.ID
INNER JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
LEFT JOIN SECAO SEC ON SEC.CD_SECAO = ITE.CD_SECAO
/* ... */
) X
LEFT JOIN RETORNA_TROCASOP(X.NRORDEM) RTOP ON 1 = 1
LEFT JOIN PLUGORDRECAPPEDIDO POP ON POP.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN PARAMRECAP PR ON PR.IDEMPRESA = X.CD_EMPRESA
LEFT JOIN EXAMEINICIAL EI ON EI.IDORDEMPRODUCAORECAP = X.NRORDEM
LEFT JOIN RETORNA_CHAVENOTA(POP.CD_EMPRESA, POP.NR_PEDIDO, POP.TP_PEDIDO) RCN
ON RCN.O_CD_ITEM = CASE WHEN X.STEXAMEFINAL = 'R'
AND X.IDITEMCARCACA IS NOT NULL
AND PR.STGERAPEDIDORECUSADO = 'S'
THEN X.IDITEMCARCACA ELSE X.CD_ITEM END
GROUP BY X.CD_SECAO, X.DS_SECAO
ORDER BY X.CD_SECAO, X.DS_SECAO
Modelo 6: Estatistica por Sulco
Quando usado: cmbTPRELATORIO.Value = 'R' (item "Estatistica por Sulco"). Layout: RRC001_R.
Mede a profundidade do sulco (NRPROFUNDIDADESULCO) no exame inicial ou na preparacao da banda. Opcional: quebrar por desenho de entrada. Usado para analise de padrao de desgaste de carcacas.
SQL Base (resumo):
SELECT DISTINCT OPR.ID NRORDEMPROD, PC.CD_PESSOA, PC.NM_PESSOA,
PC.NM_FANTASIA, PC.NM_PESSOA || COALESCE(' - ' || PC.NM_FANTASIA, '') NM_RAZAOFANTASIA,
P.NRSERIE, P.NRFOGO,
DE.ID IDDESENHOENTRADA, DE.DSDESENHO DSDESENHOENTRADA,
COALESCE(DE.ID || ' - ' || DE.DSDESENHO, 'SEM DESENHO') QUEBRADESENHOENTRADA,
DP.ID IDDESENHOOPR, DP.DSDESENHO DSDESENHOOPR,
COALESCE(PBP.NRPROFUNDIDADESUGO, EI.NRPROFUNDIDADESULCO) NRPROFUNDIDADESULCO,
PIQ.ID IDPICOTAMENTO, PIQ.DSPICOTAMENTO, P.NRDOT, MOP.DSMODELO,
CASE OPR.STEXAMEFINAL WHEN 'R' THEN 'Reprovado' WHEN 'T' THEN 'Retrabalho'
ELSE 'Aprovado' END DSSITUACAO
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
INNER JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID AND OPR.STORDEM <> 'C'
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
INNER JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
INNER JOIN ITEM ITE ON ITE.CD_ITEM = SP.ID
LEFT JOIN EXAMEINICIAL EI ON EI.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN DESENHOPNEU DE ON DE.ID = EI.IDDESENHOENTRADA
LEFT JOIN ESCAREACAOPNEU ESP ON ESP.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN PICOTAMENTOPNEU PIQ ON PIQ.ID = ESP.IDPICOTAMENTOPNEU
LEFT JOIN PREPARACAOBANDAPNEU PBP ON PBP.IDORDEMPRODUCAORECAP = OPR.ID
/* iLeft + iWhere dinamicos */
ORDER BY [DE.ID se ST_DESENHOENTRADA,] COALESCE(PBP.NRPROFUNDIDADESUGO, EI.NRPROFUNDIDADESULCO)
Modelo 7: Estatistica por Tipo de Picotamento
Quando usado: cmbTPRELATORIO.Value = 'Q' (item "Estatistica por Tipo de Picotamento"). Layout: RRC001_Q.
Estatistica de picotamento. Agrupa por PICOTAMENTOPNEU (categorizacao do tipo de dano/preparo da carcaca na escareacao), permitindo medir ocorrencia e situacao de exame final por tipo.
SQL Base (resumo):
SELECT DISTINCT OPR.ID NRORDEMPROD, PC.CD_PESSOA, PC.NM_PESSOA,
PC.NM_FANTASIA, PC.NM_PESSOA || COALESCE(' - ' || PC.NM_FANTASIA, '') NM_RAZAOFANTASIA,
P.NRSERIE, P.NRFOGO, DE.ID IDDESENHOENTRADA, DE.DSDESENHO DSDESENHOENTRADA,
COALESCE(PBP.NRPROFUNDIDADESUGO, EI.NRPROFUNDIDADESULCO) NRPROFUNDIDADESULCO,
PIQ.ID IDPICOTAMENTO, PIQ.DSPICOTAMENTO,
COALESCE(PIQ.ID || ' - ' || PIQ.DSPICOTAMENTO, 'SEM PICOTAMENTO') QUEBRAPICOTAMENTO,
CASE OPR.STEXAMEFINAL WHEN 'R' THEN 'Reprovado' WHEN 'T' THEN 'Retrabalho'
ELSE 'Aprovado' END DSSITUACAO,
P.NRDOT, MOP.DSMODELO
FROM PEDIDOPNEU PP
INNER JOIN ITEMPEDIDOPNEU IPP ON IPP.IDPEDIDOPNEU = PP.ID
INNER JOIN PESSOA PC ON PC.CD_PESSOA = PP.IDPESSOA
INNER JOIN ORDEMPRODUCAORECAP OPR ON OPR.IDITEMPEDIDOPNEU = IPP.ID AND OPR.STORDEM <> 'C'
INNER JOIN PNEU P ON P.ID = IPP.IDPNEU
INNER JOIN MODELOPNEU MOP ON MOP.ID = P.IDMODELOPNEU
INNER JOIN MARCAPNEU MAC ON MAC.ID = MOP.IDMARCAPNEU
INNER JOIN MEDIDAPNEU MD ON MD.ID = P.IDMEDIDAPNEU
INNER JOIN SERVICOPNEU SP ON SP.ID = IPP.IDSERVICOPNEU
INNER JOIN DESENHOPNEU DP ON DP.ID = IPP.IDDESENHOPNEU
INNER JOIN ITEM ITE ON ITE.CD_ITEM = SP.ID
LEFT JOIN EXAMEINICIAL EI ON EI.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN DESENHOPNEU DE ON DE.ID = EI.IDDESENHOENTRADA
LEFT JOIN ESCAREACAOPNEU ESP ON ESP.IDORDEMPRODUCAORECAP = OPR.ID
LEFT JOIN PICOTAMENTOPNEU PIQ ON PIQ.ID = ESP.IDPICOTAMENTOPNEU
LEFT JOIN PREPARACAOBANDAPNEU PBP ON PBP.IDORDEMPRODUCAORECAP = OPR.ID
/* iLeft + iWhere dinamicos */
ORDER BY PIQ.ID, OPR.ID
Tabelas de Leitura (SELECT)
| Tabela | Operacoes |
|---|---|
| AREACOMERCIAL | SELECT |
| AUTOCLAVE | SELECT |
| BANDAPNEU | SELECT |
| DESENHOPNEU | SELECT |
| EMPRESA | SELECT |
| ENDERECOPESSOA | SELECT |
| ESCAREACAOPNEU | SELECT |
| ETAPAPNEUEMPRESA | SELECT |
| ETAPASPRODUCAOPNEU | SELECT |
| EXAMEFINALPNEU | SELECT |
| EXAMEINICIAL | SELECT |
| EXECUTORETAPA | SELECT |
| FORMAPAGTO | SELECT |
| GARANTIAPNEU | SELECT |
| GRUPO | SELECT |
| ITEM | SELECT |
| ITEMNOTA | SELECT |
| ITEMNOTAVENDEDOR | SELECT |
| ITEMORDEMPROD | SELECT |
| ITEMPEDIDO | SELECT |
| ITEMPEDIDOPNEU | SELECT |
| ITEMPEDIDOPNEUBORRACHEIRO | SELECT |
| ITEMPERFIL | SELECT |
| MARCAPNEU | SELECT |
| MATRIZPNEU | SELECT |
| MEDIDAPNEU | SELECT |
| MODELOPNEU | SELECT |
| MUNICIPIO | SELECT |
| NOTA | SELECT |
| ORDEMCARREGRECAP | SELECT |
| ORDEMPRODUCAO | SELECT |
| ORDEMPRODUCAORECAP | SELECT |
| ORDEMPRODUCAORECAPRETRABALHO | SELECT |
| PARAMRECAP | SELECT |
| PARMFATUR | SELECT |
| PEDIDO | SELECT |
| PEDIDOPNEU | SELECT |
| PEDIDOPNEUMOVEL | SELECT |
| PERFIL | SELECT |
| PESSOA | SELECT |
| PICOTAMENTOPNEU | SELECT |
| PLUGORDRECAPORDPROD | SELECT |
| PLUGORDRECAPPEDIDO | SELECT |
| PLUGPREPBANDAPROD | SELECT |
| PNEU | SELECT |
| PREPARACAOBANDAPNEU | SELECT |
| PRODUTORECAP | SELECT |
| RASPAGEMPNEU | SELECT |
| REGIAOCOMERCIAL | SELECT |
| SECAO | SELECT |
| SERVICOPNEU | SELECT |
| SUBGRUPO | SELECT |
| TIPOPEDIDOPNEU | SELECT |
| TIPOPESSOA | SELECT |
| TIPOSERVICORECAP | SELECT |
| TIPOVENDEDOR | SELECT |
| TROCADESENHOPNEU | SELECT |
| VULCANIZACAO | SELECT |