Você está na página 1de 4

Padronização

• Padrões de nomes para os principais componentes do Delphi. Os componentes usados na


programação devem possui nomes com o padrão descrito Abaixo:

EdCodigo – Edit;
LPesquisa – Label;
BPesquisa – Button;
CBOrdem – ComboBox;
LBDados – ListBox;
GBDadosAdic – GroupBox;
RGSexo – RadioGroup;
MEdCodigo – MaskEdit;
PageFatClie – PageControl;
DSFatClie – DataSource;
QRFatClie – Query;
USqlFatClie – UpdateSQL;
SProc – StoredProc;
DBFatClie – DataBase;
DBGItens – DBGrid;
DBNavFatClie – DBNavegador;
DBEdCodigo – DBEdit;
DBMObservacao – DBMemo;
DBLBDados – DBListBox;
DBCBUnidade – DBComboBox;
DBRGSexo – DBRadioGroup;
DEdEmissão – RxDateEdit;
CEdValor – RxCurrencyEdit;
DBLProdutos – RxDBLookupCombo;
DBDEdEmissao – DBDateEdit;
DBCEdValor – DBCalcEdit;
FrameFatClie – Frame;
FormClientes – Form de Clientes;

• Padrões para nomes de Arquivos salvos pelo Delphi

UFatFatu – “U” de Unit, “Fat” é o nome do Sistema e “Fatu” é o nome do Módulo de Fatura

• Padrões de nomes para triggers

TBIDU_FATITFT – “T” de Trigger, “B” de Before se for “A” é After, “FATITFT” nome da tabela

• Padrões para nomes de Tables


FATFATU – “FAT” é o nome do Sistema e “FATU” é o nome do Módulo de Fatura

• Padrão para nomes de Sequences

SEQFATFATU – “SEQ” de sequence , “FAT” é o nome do Sistema e “FATU” é o nome do


Módulo de Fatura

• As estruturas de controle/comando no Delphi são escritos em letra minúscula e os


componentes e variáveis com as Iniciais de palavras em maiúscula.

• Os comandos Sql escritos no Delphi Devem possui este Formato


SELECT --+INDEX(TABELA INDICE) -- HINT
CAMPOS
FROM USUARIO.TABELA
WHERE FILTRO
ORDER BY CAMPOS

SELECT --+INDEX(TABELA INDICE) – HINT


MAX(CAMPO1), CAMPO2
FROM USUARIO.TABELA
WHERE FILTRO
GROUP BY CAMPO2

• Os Programas feitos PL/SQL no banco devem possuir a seguinte padronização:


o Todas as Estruturas de controle/comandos em PL/SQL devem estar em
maiúscula;
o Todas as Vaiáveis, campos, tabelas, etc. devem estar em minúsculo;
o Os parâmetros devem possuir a inicial “p_”;
o Os cursores devem possuir a inicial “c_”;
o Seque abaixo um exemplo de Trigger, Procedure e Function:

CERATE OR REPLACE TRIGGER TBIDU_FATMVME


BEFORE INSERT OR UPDATE OF nquanmvme OR DELETE
ON FATMVME
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
declare
-- local variables here
fili cfgfili.ncodifili%TYPE;
depa cfgdepa.ncodidepa%TYPE;
fatu fatfatu.ncodifatu%TYPE;
produto fatmerc.cnomemerc%TYPE;
qntmvme fatmvme.nquanmvme%TYPE;
tpft fattpft%ROWTYPE;
sles fatsles%ROWTYPE;
sem_saldo EXCEPTION;

CURSOR c_fatsles(p_ncodifili IN NUMBER, p_ncodidepa IN NUMBER,


p_ncodimerc IN NUMBER) IS
SELECT
*
FROM fatsles
WHERE ncodifili = p_ncodifili
AND ncodidepa = p_ncodidepa
AND ncodimerc = p_ncodimerc;

PROCEDURE opensles(filial IN NUMBER, depart IN NUMBER, mercad IN NUMBER) IS


BEGIN
OPEN c_fatsles(filial,depart, mercad);
FETCH c_fatsles INTO sles;
IF c_fatsles%NOTFOUND THEN
INSERT INTO fatsles
(ncodifili, ncodidepa, ncodimerc)
VALUES
(Filial, Depart, Mercad);
END IF;
END;
begin
IF INSERTING OR UPDATING THEN -- Quando o registro está sendo incluído/Alterado
SELECT * INTO tpft
FROM fattpft
WHERE ncoditpft = :new.ncoditpft;
SELECT cnomemerc INTO produto
FROM fatmerc
WHERE ncodimerc = :new.ncodimerc;
fili := TO_NUMBER(SUBSTR(:new.cdocomvme,2,2),'99'); -- FILIAL
depa := TO_NUMBER(SUBSTR(:new.cdocomvme,4,2),'99'); -- DEPARTAMENTO
fatu := TO_NUMBER(SUBSTR(:new.cdocomvme,6,6),'999999'); -- FATURA
opensles(fili,depa,:new.ncodimerc); -- Abre o cursor Saldo de Estoque e se
não existir registro ele incluí..
IF INSERTING THEN
qntmvme := :new.nquanmvme;
ELSIF UPDATING THEN
qntmvme := (:old.nquanmvme - :new.nquanmvme) * -1;
END IF;
IF tpft.ctpmvtpft = 'E' THEN -- Movimento de Entrada
UPDATE fatsles
SET nquansles = nquansles + qntmvme, -- Adiciona ao Estoque
ncuunsles = :new.ncuunmvme
WHERE ncodifili = fili
AND ncodidepa = depa
AND ncodimerc = :new.ncodimerc;
ELSIF tpft.ctpmvtpft = 'S' THEN -- Movimento de Saída
IF sles.nquansles < qntmvme THEN -- Verifica saldo em estoque
RAISE sem_saldo;
END IF;
UPDATE fatsles
SET nquansles = nquansles - qntmvme -- Retira do Estoque
WHERE ncodifili = fili
AND ncodidepa = depa
AND ncodimerc = :new.ncodimerc;
END IF;
/*nqtfrsles = nqtfrsles + qntfr,
nqtfesles = nqtfesles + qntfe*/
ELSIF DELETING THEN -- Quando o registro está sendo excluído
SELECT * INTO tpft
FROM fattpft
WHERE ncoditpft = :old.ncoditpft;
SELECT cnomemerc INTO produto
FROM fatmerc
WHERE ncodimerc = :old.ncodimerc;
fili := TO_NUMBER(SUBSTR(:old.cdocomvme,2,2),'99'); -- FILIAL
depa := TO_NUMBER(SUBSTR(:old.cdocomvme,4,2),'99'); -- DEPARTAMENTO
fatu := TO_NUMBER(SUBSTR(:old.cdocomvme,6,6),'999999'); -- FATURA
opensles(fili,depa,:old.ncodimerc); -- Abre o cursor Saldo de Estoque e se
não existir registro ele incluí..
IF tpft.ctpmvtpft = 'E' THEN -- Movimento de Entrada
IF sles.nquansles < :old.nquanmvme THEN -- Verifica saldo em estoque
RAISE sem_saldo;
END IF;
UPDATE fatsles
SET nquansles = nquansles - :old.nquanmvme, -- Retira do Estoque
ncuunsles = :old.ncuunmvme
WHERE ncodifili = fili
AND ncodidepa = depa
AND ncodimerc = :old.ncodimerc;
ELSIF tpft.ctpmvtpft = 'S' THEN -- Movimento de Saída
UPDATE fatsles
SET nquansles = nquansles + :old.nquanmvme -- Adiciona ao Estoque
WHERE ncodifili = fili
AND ncodidepa = depa
AND ncodimerc = :old.ncodimerc;
END IF;
END IF;
CLOSE c_fatsles;
EXCEPTION
WHEN sem_saldo THEN
RAISE_APPLICATION_ERROR (-20999,produto);
END tbid_fatmvme;

CERATE OR REPLACE PROCEDURE


cancfatu(p_ncodifili IN NUMBER, p_ncodidepa IN NUMBER,
p_ncodifatu IN NUMBER) is

dtfatu DATE;
tpfatu fattpft.ncoditpft%TYPE;
qntitft fatitft.nquanitft%TYPE;
numeped logpedi.ncninpedi%TYPE;
compedi fattpft.cenpdtpft%TYPE;

CURSOR c_fatften(p_fili IN NUMBER, p_depa IN NUMBER, p_fatu IN NUMBER) IS


SELECT ncninpedi
FROM fatften
WHERE ncodifili = p_fili
AND ncodidepa = p_depa
AND ncodifatu = p_fatu;
begin
SELECT ddatafatu, ncoditpft INTO dtfatu, tpfatu
FROM fatfatu
WHERE ncodifili = p_ncodifili
AND ncodidepa = p_ncodidepa
AND ncodifatu = p_ncodifatu;
SELECT cenpdtpft INTO compedi
FROM fattpft
WHERE ncoditpft = tpfatu; -- verifica se é com ou sem pedido
FOR itft IN (SELECT ncodimerc, nquanitft
FROM fatitft
WHERE ncodifili = p_ncodifili
AND ncodidepa = p_ncodidepa
AND ncodifatu = p_ncodifatu)
LOOP
removemvme(p_ncodifili, p_ncodidepa, p_ncodifatu, itft.ncodimerc);
IF compedi = 'S' THEN
OPEN c_fatften(p_ncodifili,p_ncodidepa,p_ncodifatu);
FETCH c_fatften INTO numeped; -- busca o nº do pedido
CLOSE c_fatften;
IF (tpfatu = 4) OR (tpfatu = 11) THEN -- caso de fatura de devolução
UPDATE logitpe -- Atualiza Item de pedido decrementando a qnt.devolvida
SET nqtdvitpe = nqtdvitpe - itft.nquanitft
WHERE ncninpedi = numeped
AND ncodimerc = itft.ncodimerc;
ELSE -- caso de outras faturas
UPDATE logitpe-- Atualiza Item de pedido decrementando a qnt.faturada
SET nqtftitpe = nqtftitpe - itft.nquanitft
WHERE ncninpedi = numeped
AND ncodimerc = itft.ncodimerc;
END IF;
END IF;
END LOOP;
end cancfatu;

CERATE OR REPLACE FUNCTION


FSOMADECA(P_NCODIANCA IN NUMBER, P_NPNETCARG IN NUMBER) return number is
Result NUMBER;
begin
Result := 0;
FOR deca IN (SELECT
*
FROM baldeca
WHERE ncodianca = P_NCODIANCA)
LOOP
Result := Result + (P_NPNETCARG * deca.npededeca)/100;
END LOOP;
return(Result);
end FSOMADECA;