Pular para o conteúdo principal

LOS038 — Layout LOS038

Visão Geral​

Layout de impressão da família LOS (Ordem de Serviço). Acionado via ExecLayout a partir das telas que imprimem este tipo de documento.

Descrição​

Consulta baseada em ORDEMSERVICO, com junção em PESSOA, ENDERECOPESSOA, MUNICIPIO, CONDPAGTO, FORMAPAGTO, EMPRESA (+9), filtrada por CD_PESSOA, JO, CD_MUNICIPIO, CD_CONDPAGTO, CD_EMPRESA, CD_EMPRORDEM (+4).

Chamada​

ExecLayout(Connection, [
// 0 - Nome do Layout
// 1 - Cod Empresa
// 2 - Nr Orcamento
// 3 - Path Servidor
// 4 - Visualiza -> V ou Imprime -> I
// 5 - Origem
// 7 - Cod Usuario Logado
]);

SQL Base​

tabORDEMLOCACAO​

SELECT /*Dados Empresa*/ E.NM_EMPRESA, PE.NR_CNPJCPF NR_CNPJCPFEMP, EE.NR_INSCEST NR_INSCESTEMP, EE.DS_ENDERECO||COALESCE(', '||EE.NR_ENDERECO,' ')|| COALESCE(COALESCE(' - '||EE.DS_BAIRRO, EE.DS_COMPLEMENTO),' ') DS_ENDEREMP, ME.DS_MUNICIPIO||' - '||ME.SG_ESTADO DS_MUNICEMP, PE.DS_SITE DS_SITEEMP, PE.DS_EMAIL DS_EMAILEMP, EE.NR_FONE NR_FONEEMP, EE.NR_FAX NR_FAXEMP, EE.NR_CEP NR_CEPEMP, PARM.DS_LOGOTIPO, /*Dados Ordem*/ OS.CD_EMPRESA, OS.NR_ORDEMSERVICO, OS.CD_PESSOA, P.NM_PESSOA, OS.CD_ENDERECO, EP.DS_ENDERECO, OS.DT_EMISSAO, OS.DT_ENTREGA, OS.DT_RETORNO, OS.CD_FORMAPAGTO, FP.DS_FORMAPAGTO, OS.CD_CONDPAGTO, CP.DS_CONDPAGTO, OS.DT_VENCIMENTO, EP.CD_CONDFISCAL, P.NR_CNPJCPF, EP.NR_CEP, EP.NR_INSCEST, COALESCE(EP.NR_FONE,'')||COALESCE(' Cel.: '||EP.NR_CELULAR,'') NR_FONE, EP.DS_ENDERECO||COALESCE(', N '||EP.NR_ENDERECO,'')||COALESCE(', '||EP.DS_BAIRRO,'') DS_ENDCOMPLETO, M.DS_MUNICIPIO||' - '||M.SG_ESTADO DS_MUNICIPIO, OS.DS_OBSERVACAO, OS.DS_LOCALENTREGA, OS.ST_ORDEMSERVICO, TRIM(CASE OS.ST_ORDEMSERVICO WHEN 'A' THEN 'Aberta' WHEN 'P' THEN 'Devoluções Pendentes' WHEN 'F' THEN 'Fechada' WHEN 'G' THEN 'Gerado Pedido' END) STORDEM, OS.NR_ORDEMSERVICO NR_ORDEMSERVICOAUX, OS.DT_FECHAMENTO, OS.DT_REGISTRO, OS.TP_ORDEMSERVICO, OS.CD_USUARIO, OS.CD_AUTORIZADOR, U.NM_USUARIO, PD.NR_PEDIDO, COALESCE(PD.ST_PEDIDO,'G') ST_PEDIDO, PD.DT_PEDIDO, SUM(COALESCE(TOT.O_VL_TOTAL,0)) VL_TOTALOS, SUM(COALESCE(CASE O_TIPO WHEN 'S' THEN COALESCE(O_VL_TOTAL,0) END,0)) VL_TOTALSV, SUM(COALESCE(CASE O_TIPO WHEN 'E' THEN COALESCE(O_VL_TOTAL,0) END,0)) VL_TOTALEQ, SUM(COALESCE(CASE O_TIPO WHEN 'P' THEN COALESCE(O_VL_TOTAL,0) END,0)) VL_TOTALPC
FROM ORDEMSERVICO OS
INNER JOIN PESSOA P ON (P.CD_PESSOA = OS.CD_PESSOA)
INNER JOIN ENDERECOPESSOA EP ON (EP.CD_PESSOA = OS.CD_PESSOA
AND EP.CD_ENDERECO = OS.CD_ENDERECO)
INNER JOIN MUNICIPIO M ON (M.CD_MUNICIPIO = EP.CD_MUNICIPIO)
INNER JOIN CONDPAGTO CP ON (CP.CD_CONDPAGTO = OS.CD_CONDPAGTO)
INNER JOIN FORMAPAGTO FP on (FP.CD_FORMAPAGTO = OS.CD_FORMAPAGTO) /*Dados Empresa*/
INNER JOIN EMPRESA E ON (E.CD_EMPRESA = OS.CD_EMPRESA)
INNER JOIN PESSOA PE ON (PE.CD_PESSOA = E.CD_PESSOA)
INNER JOIN ENDERECOPESSOA EE ON (EE.CD_PESSOA = PE.CD_PESSOA
AND EE.CD_ENDERECO =(
SELECT MIN(CD_ENDERECO)
FROM ENDERECOPESSOA ENDER
WHERE ENDER.CD_PESSOA = EE.CD_PESSOA))
INNER JOIN MUNICIPIO ME ON (ME.CD_MUNICIPIO = EE.CD_MUNICIPIO)
INNER JOIN CONDPAGTO C ON (C.CD_CONDPAGTO = OS.CD_CONDPAGTO)
INNER JOIN PARMFATUR PARM ON (PARM.CD_EMPRESA = OS.CD_EMPRESA)
LEFT JOIN VIEW_LOCACAOITEMPEDIDO (OS.CD_EMPRESA, OS.NR_ORDEMSERVICO, null, 'SEP')TOT on (1=1) /*Dados Pedido*/
LEFT JOIN PEDIDO PD ON (PD.CD_EMPRORDEM = OS.CD_EMPRESA
AND PD.NR_ORDEMSERVICO = OS.NR_ORDEMSERVICO
AND PD.ST_PEDIDO <> 'C')
LEFT JOIN USUARIO U on ( U.CD_USUARIO = OS.CD_USUARIO)
WHERE OS.CD_EMPRESA = :CD_EMPRESA
AND OS.NR_ORDEMSERVICO = :NR_ORDEMSERVICO
AND OS.TP_ORDEMSERVICO = 'L'
GROUP BY E.NM_EMPRESA, PE.NR_CNPJCPF , EE.NR_INSCEST , EE.DS_ENDERECO, EE.NR_ENDERECO, EE.DS_BAIRRO, EE.DS_COMPLEMENTO, ME.DS_MUNICIPIO,ME.SG_ESTADO, PE.DS_SITE, PE.DS_EMAIL, EE.NR_FONE, EE.NR_FAX, EE.NR_CEP, PARM.DS_LOGOTIPO, OS.CD_EMPRESA, OS.NR_ORDEMSERVICO, OS.CD_PESSOA, P.NM_PESSOA, OS.CD_ENDERECO, EP.DS_ENDERECO, OS.DT_EMISSAO, OS.DT_ENTREGA, OS.DT_RETORNO, OS.CD_FORMAPAGTO, FP.DS_FORMAPAGTO, OS.CD_CONDPAGTO, CP.DS_CONDPAGTO, OS.DT_VENCIMENTO, EP.CD_CONDFISCAL, P.NR_CNPJCPF, EP.NR_CEP, EP.NR_INSCEST, EP.NR_FONE, EP.NR_CELULAR, EP.DS_ENDERECO, EP.NR_ENDERECO, EP.DS_BAIRRO, M.DS_MUNICIPIO, M.SG_ESTADO, OS.DS_OBSERVACAO, OS.DS_LOCALENTREGA, OS.ST_ORDEMSERVICO, OS.DT_FECHAMENTO, OS.DT_REGISTRO, OS.TP_ORDEMSERVICO, OS.CD_USUARIO, OS.CD_AUTORIZADOR, U.NM_USUARIO, PD.NR_PEDIDO, PD.ST_PEDIDO, PD.DT_PEDIDO CD_EMPRESA NR_ORDEMSERVICO
SELECT ITL.CD_EMPRESA, ITL.NR_ORDEMSERVICO, ITL.CD_ITEMLOCACAO, I.DS_ITEM, ITL.NR_ITEMLOCACAO, ITL.CD_MOVIMENTACAO, M.DS_MOVIMENTACAO, ITL.CD_TABPRECO, T.DS_TABPRECO, I.SG_UNIDALT, I.PS_LIQUIDO, ITL.QT_ITEMLOCACAO QT_ITEM, ITL.PS_ITEMLOCACAO PS_ITEM, ITL.QT_HORAS, ITL.ST_ITEMLOCACAO ST_ITEM, TRIM (CASE ITL.ST_ITEMLOCACAO WHEN 'I' THEN 'Indisponivel' WHEN 'L' THEN 'Locado' WHEN 'D' THEN 'Devolvido' WHEN 'C' THEN 'Cancelado' END) STITEM, ITL.VL_UNITARIO, LPAD(DIVIDENDO((( ITL.QT_HORAS) * 3600 ),3600),3,'0')||':'|| LPAD((MOD((( ITL.QT_HORAS) * 3600),3600)/60), 2, '0') DS_HORAS, ITL.VL_TOTAL, ITL.VL_DESCONTO, ITL.DT_ENTREGA, ITL.DT_RETORNO, ITL.ST_RETORNO, ITL.CD_OPERADOR, ITL.DS_OBSERVACAO, ITL.DT_REGISTRO, H.DS_PESO DS_UNIDPESO, H.DS_QTDE DS_UNIDQTDE, H.V_TIPO, TP.TP_UNIDADE, ITL.QT_ITEMLOCACAO QT_ITEMOLD, ITL.PS_ITEMLOCACAO PS_ITEMOLD, TOT.O_VL_UNITARIO, TOT.O_VL_TOTAL
FROM ITEMLOCACAO ITL
INNER JOIN ITEM I ON(I.CD_ITEM = ITL.CD_ITEMLOCACAO)
INNER JOIN TIPOCALCULO TP on ( TP.CD_TIPOCALCULO = I.CD_TIPOCALCULO)
INNER JOIN MOVIMENTACAO M ON (M.CD_MOVIMENTACAO = ITL.CD_MOVIMENTACAO)
LEFT JOIN TABPRECO T ON (T.CD_TABPRECO = ITL.CD_TABPRECO)
LEFT JOIN HABILITA_PESOQTDE(ITL.CD_ITEMLOCACAO) H ON (1 = 1)
LEFT JOIN VIEW_LOCACAOITEMPEDIDO(ITL.CD_EMPRESA, ITL.NR_ORDEMSERVICO, ITL.CD_ITEMLOCACAO, 'E') TOT ON (1=1)
WHERE ITL.CD_EMPRESA = :CD_EMPRESA
AND ITL.NR_ORDEMSERVICO = :NR_ORDEMSERVICO
AND ITL.ST_ITEMLOCACAO <> 'C' CD_EMPRESA NR_ORDEMSERVICO
SELECT ITL.CD_EMPRESA, ITL.NR_ORDEMSERVICO, ITL.CD_SERVICO, I.DS_ITEM, ITL.NR_SERVICO, ITL.CD_MOVIMENTACAO, M.DS_MOVIMENTACAO, ITL.CD_TABPRECO, T.DS_TABPRECO, I.SG_UNIDALT, I.PS_LIQUIDO, ITL.QT_SERVICOLOCACAO QT_ITEM, ITL.PS_SERVICOLOCACAO PS_ITEM, ITL.QT_HORAS, ITL.ST_SERVICOLOCACAO ST_ITEM, TRIM(CASE ITL.ST_SERVICOLOCACAO WHEN 'A' THEN 'Aberto' WHEN 'F' THEN 'Fechado' WHEN 'C' THEN 'Cancelado' END) STITEM, ITL.VL_UNITARIO, LPAD(DIVIDENDO((( ITL.QT_HORAS) * 3600 ),3600),3,'0')||':'|| LPAD((MOD((( ITL.QT_HORAS) * 3600),3600)/60), 2, '0') DS_HORAS, ITL.VL_TOTAL, ITL.VL_DESCONTO, ITL.DT_ENTREGA, ITL.DT_RETORNO, ITL.ST_RETORNO, ITL.CD_OPERADOR, ITL.DS_OBSERVACAO, ITL.DT_REGISTRO, H.DS_PESO DS_UNIDPESO, H.DS_QTDE DS_UNIDQTDE, H.V_TIPO, TP.TP_UNIDADE, ITL.QT_SERVICOLOCACAO QT_ITEMOLD, ITL.PS_SERVICOLOCACAO PS_ITEMOLD, TOT.O_VL_UNITARIO, TOT.O_VL_TOTAL
FROM SERVICOLOCACAO ITL
INNER JOIN ITEM I ON(I.CD_ITEM = ITL.CD_SERVICO)
INNER JOIN TIPOCALCULO TP on ( TP.CD_TIPOCALCULO = I.CD_TIPOCALCULO)
INNER JOIN MOVIMENTACAO M ON (M.CD_MOVIMENTACAO = ITL.CD_MOVIMENTACAO)
LEFT JOIN TABPRECO T ON (T.CD_TABPRECO = ITL.CD_TABPRECO)
LEFT JOIN HABILITA_PESOQTDE(ITL.CD_SERVICO) H ON (1 = 1)
LEFT JOIN VIEW_LOCACAOITEMPEDIDO(ITL.CD_EMPRESA, ITL.NR_ORDEMSERVICO, ITL.CD_SERVICO, 'S')TOT ON (1=1)
WHERE ITL.CD_EMPRESA = :CD_EMPRESA
AND ITL.NR_ORDEMSERVICO = :NR_ORDEMSERVICO
AND ITL.ST_SERVICOLOCACAO <> 'C' CD_EMPRESA NR_ORDEMSERVICO
SELECT ITL.CD_EMPRESA, ITL.NR_ORDEMSERVICO, ITL.CD_ITEMLOCACAO, I.DS_ITEM, ITL.NR_ITEMLOCACAO, ITL.CD_PECA, ITL.NR_PECA, ITL.CD_TABPRECO, I.SG_UNIDALT, I.PS_LIQUIDO, ITL.QT_ITEMLOCACAO QT_ITEM, ITL.PS_ITEMLOCACAO PS_ITEM, ITL.QT_PARTICIPACAO, ITL.ST_PECAITEMLOCACAO ST_ITEM, TRIM(CASE ITL.ST_PECAITEMLOCACAO WHEN 'I' THEN 'Indisponivel' WHEN 'L' THEN 'Locado' WHEN 'D' THEN 'Devolvido' WHEN 'C' THEN 'Cancelado' END) STITEM, ITL.VL_UNITARIO, ITL.VL_TOTAL, ITL.VL_DESCONTO, ITL.DT_ENTREGA, ITL.DT_RETORNO, ITL.ST_RETORNO, ITL.CD_OPERADOR, ITL.DS_OBSERVACAO, ITL.DT_REGISTRO, H.DS_PESO DS_UNIDPESO, H.DS_QTDE DS_UNIDQTDE, H.V_TIPO, TP.TP_UNIDADE, ITL.QT_ITEMLOCACAO QT_ITEMOLD, ITL.PS_ITEMLOCACAO PS_ITEMOLD, TOT.O_VL_UNITARIO, TOT.O_VL_TOTAL
FROM PECAITEMLOCACAO ITL
INNER JOIN ITEM I ON(I.CD_ITEM = ITL.CD_PECA)
INNER JOIN TIPOCALCULO TP on ( TP.CD_TIPOCALCULO = I.CD_TIPOCALCULO)
LEFT JOIN HABILITA_PESOQTDE(ITL.CD_PECA) H ON (1 = 1)
LEFT JOIN VIEW_LOCACAOITEMPEDIDO(ITL.CD_EMPRESA, ITL.NR_ORDEMSERVICO, ITL.CD_ITEMLOCACAO, 'P')TOT ON (1=1)
WHERE ITL.CD_EMPRESA = :CD_EMPRESA
AND ITL.NR_ORDEMSERVICO = :NR_ORDEMSERVICO
AND ITL.CD_ITEMLOCACAO = :CD_ITEMLOCACAO
AND ITL.NR_ITEMLOCACAO = :NR_ITEMLOCACAO
AND ITL.ST_PECAITEMLOCACAO <> 'C' CD_EMPRESA NR_ORDEMSERVICO CD_ITEMLOCACAO NR_ITEMLOCACAO

Tabelas Utilizadas​

TabelaUso
CONDPAGTOreferenciada nas queries do layout
EMPRESAreferenciada nas queries do layout
ENDERECOPESSOAreferenciada nas queries do layout
FORMAPAGTOreferenciada nas queries do layout
HABILITA_PESOQTDEreferenciada nas queries do layout
ITEMreferenciada nas queries do layout
ITEMLOCACAOreferenciada nas queries do layout
MOVIMENTACAOreferenciada nas queries do layout
MUNICIPIOreferenciada nas queries do layout
ORDEMSERVICOreferenciada nas queries do layout
PARMFATURreferenciada nas queries do layout
PECAITEMLOCACAOreferenciada nas queries do layout
PEDIDOreferenciada nas queries do layout
PESSOAreferenciada nas queries do layout
SERVICOLOCACAOreferenciada nas queries do layout
TABPRECOreferenciada nas queries do layout
TIPOCALCULOreferenciada nas queries do layout
USUARIOreferenciada nas queries do layout
VIEW_LOCACAOITEMPEDIDOreferenciada nas queries do layout

Shared Units​

  • jCommon
  • jPesquisa

Fonte​

  • Unit: source/LOS038/ULOS038.pas
  • DFM: source/LOS038/ULOS038.dfm
  • Package: source/LOS038/LOS038.dpk