Pular para o conteúdo principal

LOS035 — Layout LOS035

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 ORDEMSERVITEM, com junção em EMPRESA, PESSOA, RETORNA_DADOSCADASTRAIS, ITEM, TIPOCALCULO, MAQUINA, filtrada por CD_EMPRESA, NR_ORDEMSERVICO, EMPRESA, JO, CD_PESSOA, CLIENTE (+8).

Chamada​

ExecLayout(Connection, [
// 0 - Nome do Layout
// 1 - Cod Empresa
// 2 - Nr Orcamento
// 3 - Path Servidor
// 4 - Visualiza -> V ou Imprime -> I
// 5 - Máquinas da Ordem de Serviço
// 6 - Abertura ou Fechamento
// 7 - Módulo Origem
]);

SQL Base​

tabOS​

SELECT CD_EMPRESA, NR_ORDEMSERVICO, DT_EMISSAO, DS_OBSERVACAO, DS_SITUACAO, EMP_NM_PESSOA, EMP_DS_ENDERECO, EMP_DS_MUNICICPIO, EMP_NR_FONE, EMP_NR_CNPJCPF, EMP_DS_SITE, CLI_NM_PESSOA, CLI_CD_NM_PESSOA, CLI_NR_FONE, CLI_NR_CELULAR, CLI_DS_ENDERECO, CLI_DS_MUNICIPIO, CLI_NR_CEP, CLI_NR_CNPJCPF, CLI_DS_BAIRRO, CLI_DS_COMPLEMENTO, VL_TOTAL_GERAL, VL_TOTAL_DESCONTO, VL_TOTAL_GERAL - VL_TOTAL_DESCONTO VL_TOTAL_LIQUIDO
FROM (
SELECT OS.CD_EMPRESA, OS.NR_ORDEMSERVICO, OS.DT_EMISSAO, SUBSTRING(OS.DS_OBSERVACAO
FROM 1 FOR 5000) DS_OBSERVACAO, --Empresa CASE OS.ST_ORDEMSERVICO WHEN 'A' THEN 'Aberta' WHEN 'F' THEN 'Fechada' WHEN 'C' THEN 'Cancelada' WHEN 'P' THEN 'Gerado Pedido' WHEN 'B' THEN 'Bloqueada' END DS_SITUACAO, PE.NM_PESSOA EMP_NM_PESSOA, EPE.DS_ENDERECO||COALESCE(', N° '||EPE.NR_ENDERECO,'')EMP_DS_ENDERECO, EPE.DS_MUNICIPIO||' - '||EPE.SG_ESTADO EMP_DS_MUNICICPIO, 'Fone: '||EPE.NR_FONE EMP_NR_FONE, 'CNPJ: '||PE.NR_CNPJCPF EMP_NR_CNPJCPF, 'Site: '||EPE.DS_SITE EMP_DS_SITE, --Cliente PC.NM_PESSOA CLI_NM_PESSOA, 'Cliente: '||PC.CD_PESSOA||' - '||PC.NM_PESSOA CLI_CD_NM_PESSOA, 'Fone: '||ECLI.NR_FONE CLI_NR_FONE, 'Cel: '||ECLI.NR_CELULAR CLI_NR_CELULAR, 'Endereço: '||ECLI.DS_ENDERECO||COALESCE(', N° '||ECLI.NR_ENDERECO,'')CLI_DS_ENDERECO, 'Cidade: '||ECLI.DS_MUNICIPIO||' - '||ECLI.SG_ESTADO CLI_DS_MUNICIPIO, 'CEP: '||ECLI.NR_CEP CLI_NR_CEP, CASE WHEN CHAR_LENGTH(PC.NR_CNPJCPF) > 14 THEN 'CNPJ: ' ELSE 'CPF: ' END||PC.NR_CNPJCPF CLI_NR_CNPJCPF, 'Bairro: '||ECLI.DS_BAIRRO CLI_DS_BAIRRO, 'Comp: '||ECLI.DS_COMPLEMENTO CLI_DS_COMPLEMENTO, (
SELECT SUM(VL_TOTAL)
FROM (
SELECT VL_TOTAL
FROM ORDEMSERVITEM
WHERE CD_EMPRESA = OS.CD_EMPRESA
AND NR_ORDEMSERVICO = OS.NR_ORDEMSERVICO
UNION ALL
SELECT VL_TOTAL
FROM SERVICOITEM
WHERE CD_EMPRESA = OS.CD_EMPRESA
AND NR_ORDEMSERVICO = OS.NR_ORDEMSERVICO) ) VL_TOTAL_GERAL, (
SELECT SUM(COALESCE(VL_DESCONTO,0))
FROM (
SELECT VL_DESCONTO
FROM ORDEMSERVITEM
WHERE CD_EMPRESA = OS.CD_EMPRESA
AND NR_ORDEMSERVICO = OS.NR_ORDEMSERVICO
UNION ALL
SELECT VL_DESCONTO
FROM SERVICOITEM
WHERE CD_EMPRESA = OS.CD_EMPRESA
AND NR_ORDEMSERVICO = OS.NR_ORDEMSERVICO) ) VL_TOTAL_DESCONTO
FROM ORDEMSERVICO OS --Empresa
INNER JOIN EMPRESA E ON (E.CD_EMPRESA = OS.CD_EMPRESA)
INNER JOIN PESSOA PE ON (PE.CD_PESSOA = E.CD_PESSOA)
LEFT JOIN RETORNA_DADOSCADASTRAIS(PE.CD_PESSOA, NULL) EPE ON (1=1) --Cliente
INNER JOIN PESSOA PC ON (PC.CD_PESSOA = OS.CD_PESSOA)
LEFT JOIN RETORNA_DADOSCADASTRAIS(PC.CD_PESSOA, NULL) ECLI ON (1=1)
WHERE OS.CD_EMPRESA = :CD_EMPRESA
AND OS.NR_ORDEMSERVICO = :NR_ORDEMSERVICO); CD_EMPRESA NR_ORDEMSERVICO
SELECT OSI.CD_SERVICO, I.DS_ITEM, OSI.QT_SERVICO QTDE, OSI.VL_UNITARIO, OSI.VL_TOTAL, OSI.VL_DESCONTO, OSI.VL_TOTAL - COALESCE(OSI.VL_DESCONTO, 0) VL_LIQUIDO
FROM ORDEMSERVITEM OSI
INNER JOIN ITEM I ON (I.CD_ITEM = OSI.CD_SERVICO)
WHERE OSI.CD_EMPRESA = :CD_EMPRESA
AND OSI.NR_ORDEMSERVICO = :NR_ORDEMSERVICO CD_EMPRESA NR_ORDEMSERVICO
SELECT OSI.CD_ITEM, I.DS_ITEM, CASE TC.TP_UNIDADE WHEN 'Q' THEN OSI.QT_SERVICOITEM ELSE OSI.PS_SERVICOITEM END QTDE, OSI.VL_UNITARIO, OSI.VL_TOTAL, OSI.VL_DESCONTO, OSI.VL_TOTAL - COALESCE(OSI.VL_DESCONTO, 0) VL_LIQUIDO
FROM SERVICOITEM OSI
INNER JOIN ITEM I ON (I.CD_ITEM = OSI.CD_ITEM)
INNER JOIN TIPOCALCULO TC ON (TC.CD_TIPOCALCULO = I.CD_TIPOCALCULO)
WHERE OSI.CD_EMPRESA = :CD_EMPRESA
AND OSI.NR_ORDEMSERVICO = :NR_ORDEMSERVICO CD_EMPRESA NR_ORDEMSERVICO
SELECT 'Descrição: '||M.DS_MAQUINA DS_MAQUINA, 'Modelo: '||M.DS_MODELO DS_MODELO, 'Série: '||OS.NR_SERIEMAQUINA NR_SERIEMAQUINA
FROM ORDEMSERVICO OS
INNER JOIN MAQUINA M ON (M.NR_SERIEMAQUINA = OS.NR_SERIEMAQUINA)
WHERE OS.CD_EMPRESA = :CD_EMPRESA
AND OS.NR_ORDEMSERVICO = :NR_ORDEMSERVICO CD_EMPRESA NR_ORDEMSERVICO

Tabelas Utilizadas​

TabelaUso
EMPRESAreferenciada nas queries do layout
ITEMreferenciada nas queries do layout
MAQUINAreferenciada nas queries do layout
ORDEMSERVICOreferenciada nas queries do layout
ORDEMSERVITEMreferenciada nas queries do layout
PESSOAreferenciada nas queries do layout
RETORNA_DADOSCADASTRAISreferenciada nas queries do layout
SERVICOITEMreferenciada nas queries do layout
TIPOCALCULOreferenciada nas queries do layout

Shared Units​

  • jCommon
  • jPesquisa

Fonte​

  • Unit: source/LOS035/ULOS035.pas
  • DFM: source/LOS035/ULOS035.dfm
  • Package: source/LOS035/LOS035.dpk