Pular para o conteúdo principal

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, respeitando PARMFATUR.ST_VARIOSVENDEDORES para usar ITEMNOTAVENDEDOR.CD_VENDEDOR ou NOTA.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));
TabelaCampoEfeito
PARMFATURST_VARIOSVENDEDORESSe '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.
PARAMRECAPSTGERAPEDIDORECUSADOQuando '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).
PARAMRECAPSTSERVICONOPEDIDOCombinada 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".
TabelaOperacoes
AREACOMERCIALSELECT
AUTOCLAVESELECT
BANDAPNEUSELECT
DESENHOPNEUSELECT
EMPRESASELECT
ENDERECOPESSOASELECT
ESCAREACAOPNEUSELECT
ETAPAPNEUEMPRESASELECT
ETAPASPRODUCAOPNEUSELECT
EXAMEFINALPNEUSELECT
EXAMEINICIALSELECT
EXECUTORETAPASELECT
FORMAPAGTOSELECT
GARANTIAPNEUSELECT
GRUPOSELECT
ITEMSELECT
ITEMNOTASELECT
ITEMNOTAVENDEDORSELECT
ITEMORDEMPRODSELECT
ITEMPEDIDOSELECT
ITEMPEDIDOPNEUSELECT
ITEMPEDIDOPNEUBORRACHEIROSELECT
ITEMPERFILSELECT
MARCAPNEUSELECT
MATRIZPNEUSELECT
MEDIDAPNEUSELECT
MODELOPNEUSELECT
MUNICIPIOSELECT
NOTASELECT
ORDEMCARREGRECAPSELECT
ORDEMPRODUCAOSELECT
ORDEMPRODUCAORECAPSELECT
ORDEMPRODUCAORECAPRETRABALHOSELECT
PARAMRECAPSELECT
PARMFATURSELECT
PEDIDOSELECT
PEDIDOPNEUSELECT
PEDIDOPNEUMOVELSELECT
PERFILSELECT
PESSOASELECT
PICOTAMENTOPNEUSELECT
PLUGORDRECAPORDPRODSELECT
PLUGORDRECAPPEDIDOSELECT
PLUGPREPBANDAPRODSELECT
PNEUSELECT
PREPARACAOBANDAPNEUSELECT
PRODUTORECAPSELECT
RASPAGEMPNEUSELECT
REGIAOCOMERCIALSELECT
SECAOSELECT
SERVICOPNEUSELECT
SUBGRUPOSELECT
TIPOPEDIDOPNEUSELECT
TIPOPESSOASELECT
TIPOSERVICORECAPSELECT
TIPOVENDEDORSELECT
TROCADESENHOPNEUSELECT
VULCANIZACAOSELECT

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âmetroTabela
ST_VARIOSVENDEDORESPARMFATUR

Procedures Chamadas​

ProcedureTabelas Acessadas
RETORNA_CAMPOSRRC001CONSERTOMANCHAO (SELECT), ITEMNOTA (SELECT), ITEMPEDIDOPNEU (SELECT), LIMPEZAMANCHAO (SELECT), NOTA (SELECT), ORDEMPRODUCAORECAP (SELECT) +3
RETORNA_CHAVENOTANOTA (SELECT), ORDEMCARREG (SELECT), PEDIDONOTA (SELECT)
RETORNA_CHAVEPEDIDOEMBARQUE (SELECT), NOTA (SELECT), ORDEMCARREG (SELECT), PEDIDO (SELECT), PEDIDONOTA (SELECT)
RETORNA_CUSTOPRODRECAPMOVESTOQUE (SELECT), ORDEMPRODUCAO (SELECT)
RETORNA_ETAPASPRODUCAOACABAMENTOPNEU (SELECT), APLICACAOCOLAPNEU (SELECT), APLICCONSERTOPNEU (SELECT), DESENVELOPAMENTO (SELECT), EMBORRACHAMENTO (SELECT), ENVELOPAMENTO (SELECT) +14
RETORNA_MOTIVOORDEMITEMPEDIDOPNEU (SELECT), LAUDOTECNICOPNEURECAP (SELECT), MOTIVO (SELECT), MOTIVOLAUDO (SELECT), MOTIVOPNEU (SELECT), ORDEMPRODUCAORECAP (SELECT)
RETORNA_SALDOESTOQUEESTOQUE (SELECT), ESTOQUEDIA (SELECT), ITEMLOCAL (SELECT), MOVESTOQUE (SELECT), OPERACAO (SELECT), PARMESTOQUE (SELECT)
RETORNA_TROCASOPORDEMPRODUCAORECAP (SELECT), TROCADESENHO (SELECT)
VERIFICA_EXECUTORORDEMACABAMENTOPNEU (SELECT), APLICACAOCOLAPNEU (SELECT), APLICCONSERTOPNEU (SELECT), DESENVELOPAMENTO (SELECT), EMBORRACHAMENTO (SELECT), ENVELOPAMENTO (SELECT) +13

Tabelas via Procedures (acesso indireto)​

TabelaOperacoes
ACABAMENTOPNEUSELECT
APLICACAOCOLAPNEUSELECT
APLICCONSERTOPNEUSELECT
CONSERTOMANCHAOSELECT
DESENVELOPAMENTOSELECT
EMBARQUESELECT
EMBORRACHAMENTOSELECT
ENVELOPAMENTOSELECT
ESCAREACAOPNEUSELECT
ESTOQUESELECT
ESTOQUEDIASELECT
ETAPASPRODUCAOPNEUSELECT
EXAMEFINALPNEUSELECT
EXAMEINICIALSELECT
EXECUTORETAPASELECT
EXTRUSORAAUTOPNEUSELECT
EXTRUSORAPNEUSELECT
ITEMLOCALSELECT
ITEMNOTASELECT
ITEMPEDIDOPNEUSELECT
...+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)​

TabelaOperacoes
AREACOMERCIALSELECT
AUTOCLAVESELECT
BANDAPNEUSELECT
DESENHOPNEUSELECT
EMPRESASELECT
ENDERECOPESSOASELECT
ESCAREACAOPNEUSELECT
ETAPAPNEUEMPRESASELECT
ETAPASPRODUCAOPNEUSELECT
EXAMEFINALPNEUSELECT
EXAMEINICIALSELECT
EXECUTORETAPASELECT
FORMAPAGTOSELECT
GARANTIAPNEUSELECT
GRUPOSELECT
ITEMSELECT
ITEMNOTASELECT
ITEMNOTAVENDEDORSELECT
ITEMORDEMPRODSELECT
ITEMPEDIDOSELECT
ITEMPEDIDOPNEUSELECT
ITEMPEDIDOPNEUBORRACHEIROSELECT
ITEMPERFILSELECT
MARCAPNEUSELECT
MATRIZPNEUSELECT
MEDIDAPNEUSELECT
MODELOPNEUSELECT
MUNICIPIOSELECT
NOTASELECT
ORDEMCARREGRECAPSELECT
ORDEMPRODUCAOSELECT
ORDEMPRODUCAORECAPSELECT
ORDEMPRODUCAORECAPRETRABALHOSELECT
PARAMRECAPSELECT
PARMFATURSELECT
PEDIDOSELECT
PEDIDOPNEUSELECT
PEDIDOPNEUMOVELSELECT
PERFILSELECT
PESSOASELECT
PICOTAMENTOPNEUSELECT
PLUGORDRECAPORDPRODSELECT
PLUGORDRECAPPEDIDOSELECT
PLUGPREPBANDAPRODSELECT
PNEUSELECT
PREPARACAOBANDAPNEUSELECT
PRODUTORECAPSELECT
RASPAGEMPNEUSELECT
REGIAOCOMERCIALSELECT
SECAOSELECT
SERVICOPNEUSELECT
SUBGRUPOSELECT
TIPOPEDIDOPNEUSELECT
TIPOPESSOASELECT
TIPOSERVICORECAPSELECT
TIPOVENDEDORSELECT
TROCADESENHOPNEUSELECT
VULCANIZACAOSELECT