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
| Tabela | Uso |
|---|---|
EMPRESA | referenciada nas queries do layout |
ITEM | referenciada nas queries do layout |
MAQUINA | referenciada nas queries do layout |
ORDEMSERVICO | referenciada nas queries do layout |
ORDEMSERVITEM | referenciada nas queries do layout |
PESSOA | referenciada nas queries do layout |
RETORNA_DADOSCADASTRAIS | referenciada nas queries do layout |
SERVICOITEM | referenciada nas queries do layout |
TIPOCALCULO | referenciada nas queries do layout |
Shared Units
- jCommon
- jPesquisa
Fonte
- Unit:
source/LOS035/ULOS035.pas - DFM:
source/LOS035/ULOS035.dfm - Package:
source/LOS035/LOS035.dpk