/* Server version: WI-V6.3.1.32609 Firebird 3.0
SQLDialect: 3. ODS: 12.0. Forced writes: On. Sweep interval: 0.
Page size: 16384. Cache pages: 2048 (32768 Kb). Read-only: False. */
SET CLIENTLIB 'C:\Users\Ti4\Desktop\Firebird-3.0.0.32503-0_Win32\fbclient.dll';
SET NAMES UTF8;
SET SQL DIALECT 3;
CONNECT '192.168.0.178/3050:D:\Temp\GC_12_09_2017.FDB' USER 'SYSDBA' PASSWORD 'masterkey' ROLE 'RDB$ADMIN';
SET AUTODDL ON;
/******************************************************************************/
/**** Deactivating dependencies of objects ****/
/******************************************************************************/
SET TERM ^ ;
ALTER PROCEDURE SP_REPLICA_TABELA(
TABELA VARCHAR(50))
RETURNS (
ID INTEGER,
ANO INTEGER,
MES INTEGER,
DATA_INICIAL VARCHAR(10),
DATA_FINAL VARCHAR(10))
AS
BEGIN
SUSPEND;
END
^
ALTER PROCEDURE SPC_REPOSICAO_ESTOQUE_KAMBAN(
ESTABELECIMENTO_ID INTEGER,
LOCALIZACAO_ID INTEGER,
FAMILIA_ID INTEGER)
RETURNS (
PRODUTO_ID INTEGER,
PRODUTO_DESCRICAO VARCHAR(400),
TAMANHO VARCHAR(10),
ESTOQUE NUMERIC(18,4),
EST_MIN NUMERIC(18,4),
EST_MAX NUMERIC(18,4),
PERC_PONTO_REP NUMERIC(18,4),
QTD_PONTO_REP NUMERIC(18,4),
TIPO_REP CHAR(12),
QTD_REP NUMERIC(18,4),
NECESSIDADE NUMERIC(18,4))
AS
BEGIN
SUSPEND;
END
^
ALTER PROCEDURE SPI_ESTOQUE_TRANSACAO_REGRA(
REGRA_TIPO INTEGER,
GP_ID INTEGER,
PERFIL_UP VARCHAR(10),
FAMILIA_ID INTEGER,
LOCALIZACAO_ID INTEGER,
TABELA VARCHAR(32),
TABELA_NIVEL INTEGER,
TABELA_ID INTEGER,
ESTABELECIMENTO_ID INTEGER,
DATA DATE,
PRODUTO_ID INTEGER,
TAMANHO INTEGER,
QUANTIDADE NUMERIC(10,5),
TIPO CHAR,
CONSUMO CHAR,
CCUSTO VARCHAR(10),
OBSERVACAO VARCHAR(100),
TRANSACAO_ID INTEGER = NULL,
DOCUMENTO INTEGER = NULL,
TALAO INTEGER = 0,
PECA_ID VARCHAR(100) = NULL)
AS
BEGIN
EXIT;
END
^
ALTER PROCEDURE SPU_CONFERENCIA_TRANSACAO(
I_ESTOQUE_ID VARCHAR(3000),
I_OPERADOR_ID INTEGER,
I_CONFERIR INTEGER = 2)
AS
BEGIN
EXIT;
END
^
ALTER PROCEDURE SPU_LIBERAR_TALAO_COLETOR(
COD_BARRAS VARCHAR(100),
OPERADOR_ID INTEGER,
COD_UP VARCHAR(100))
RETURNS (
ID_SAIDA INTEGER,
ID_ENTRADA INTEGER)
AS
BEGIN
SUSPEND;
END
^
ALTER PROCEDURE SPU_PEDIDO_CLASSIFICACAO(
DATA_1 DATE,
DATA_2 DATE,
PEDIDO_1 VARCHAR(10))
RETURNS (
PEDIDO INTEGER,
SKU1200A9999 INTEGER,
SKU0800A1200 INTEGER,
SKU0400A0800 INTEGER,
SKU0000A0400 INTEGER,
MODCOR2000A9999 INTEGER,
MODCOR1000A2000 INTEGER,
MODCOR0000A1000 INTEGER)
AS
BEGIN
SUSPEND;
END
^
ALTER TRIGGER TTBESTOQUE_SALDO_MES_999
AS
BEGIN
EXIT;
END
^
ALTER TRIGGER TTBKANBAN_LOTE_B2I
AS
BEGIN
EXIT;
END
^
ALTER TRIGGER TTBMODELO_LINHA_999
AS
BEGIN
EXIT;
END
^
ALTER TRIGGER TTBPEDIDO_ITEM_PROC_B0U_03
AS
BEGIN
EXIT;
END
^
ALTER TRIGGER TTBPEDIDO_ITEM_PROCESSADO_B8U
AS
BEGIN
EXIT;
END
^
ALTER TRIGGER TTBREMESSA_CONSUMO_B0U_03
AS
BEGIN
EXIT;
END
^
ALTER TRIGGER TTBREMESSA_ITEM_PROCESSADO_B3U
AS
BEGIN
EXIT;
END
^
ALTER TRIGGER TTBREMESSA_TALAO_VINCULO_B3D
AS
BEGIN
EXIT;
END
^
ALTER TRIGGER TTBREMESSA_TALAO_VINCULO_B4D
AS
BEGIN
EXIT;
END
^
ALTER TRIGGER TTBREMESSA_TALAO_VINCULO_B5I
AS
BEGIN
EXIT;
END
^
SET TERM ; ^
DROP VIEW VWESTOQUE_MINIMO_TAMANHO;
DROP VIEW VWREGISTRO_DEFEITO_DIA;
DROP VIEW VWREGISTRO_PRODUCAO_DIA;
/******************************************************************************/
/**** Dropping stored procedures ****/
/******************************************************************************/
DROP PROCEDURE SPI_ESTOQUE_TRANSACAO_REGRA;
DROP PROCEDURE SPU_EXCLUIR_LIBERACAO;
DROP PROCEDURE SPU_HISTORICO_TRANSACAO;
/******************************************************************************/
/**** Dropping stored functions ****/
/******************************************************************************/
DROP FUNCTION FN_STRTOINT_DEF;
DROP FUNCTION FN_TIPO_TOLERANCIA;
/******************************************************************************/
/**** Dropping views ****/
/******************************************************************************/
DROP VIEW VWCONFERENCIA_PENDENTE;
DROP VIEW VWESTOQUE_TRANSACAO_REGRA;
/******************************************************************************/
/**** Dropping triggers ****/
/******************************************************************************/
DROP TRIGGER TTBREMESSA_TALAO_VINCULO_B6I;
/******************************************************************************/
/**** Dropping indices ****/
/******************************************************************************/
DROP INDEX ITBESTOQUE_TRANSACAO_ITEM_19;
DROP INDEX ITBREMESSA_TALAO_VINCULO_07;
/******************************************************************************/
/**** Dropping tables ****/
/******************************************************************************/
DROP TABLE TMPGP_ESTOQUE;
/******************************************************************************/
/**** Dropping generators (sequences) ****/
/******************************************************************************/
DROP SEQUENCE GTBCASO_CONTATO;
/******************************************************************************/
/**** Creating generators (sequences) ****/
/******************************************************************************/
CREATE SEQUENCE GTBCASO_CONTATO
START WITH 0
INCREMENT BY 1;
/******************************************************************************/
/**** Altering tables ****/
/******************************************************************************/
ALTER TABLE TBCASO_USUARIOS
ADD NOTIFICACAO INTEGER DEFAULT 0;
ALTER TABLE TBESTOQUE_SALDO_MES DROP DATA;
ALTER TABLE TBESTOQUE_SALDO_MES ADD DATA DATE;
ALTER TABLE TBLOCALIZACAO
ADD WIP CHAR DEFAULT '0';
ALTER TABLE TBMOVCONTABIL
ADD DATAHORA TIMESTAMP DEFAULT 'NOW';
ALTER TABLE TBNOTIFICACAO ALTER COLUMN DATA_HORA SET DEFAULT 'now';
ALTER TABLE TBPEDIDO_ITEM
ADD CLASSIFICACAO INTEGER;
ALTER DOMAIN RDB$61288
TYPE INTEGER CHARACTER SET UTF8;
ALTER TABLE TBREPLICA_TABELA
ADD LINHA_ID INTEGER DEFAULT 0;
/******************************************************************************/
/**** Creating indices ****/
/******************************************************************************/
CREATE INDEX ITBESTOQUE_SALDO_MES_04
ON TBESTOQUE_SALDO_MES (DATA);
CREATE INDEX ITBESTOQUE_TRANSACAO_ITEM_19
ON TBESTOQUE_TRANSACAO_ITEM (ESTABELECIMENTO_CODIGO, LOCALIZACAO_CODIGO, PRODUTO_CODIGO, TABELA, TABELA_ID, TABELA_NIVEL);
CREATE INDEX ITBREMESSA_TALAO_VINCULO_07
ON TBREMESSA_TALAO_VINCULO (ORIGEM_TABELA);
/******************************************************************************/
/**** Creating views ****/
/******************************************************************************/
CREATE VIEW VWESTOQUE_MINIMO_TAMANHO (
ID,
ESTABELECIMENTO_ID,
PRODUTO_ID,
LOCALIZACAO_ID,
FAMILIA_ID,
PRODUTO_DESCRICAO,
SEGURANCA,
PONTO_REPOSICAO,
TIPO_REPOSICAO,
TAMANHO,
ESTOQUE_MIN,
ESTOQUE_MAX,
TAM_DESCRICAO,
HABILITA_KANBAN)
AS
SELECT CAST(A.ID||LPAD(00,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 00 TAMANHO, A.QUANTIDADE, A.ESTOQUE_MAX, '' TAM_DESCRICAO, A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.QUANTIDADE > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO = 0 UNION
SELECT CAST(A.ID||LPAD(01,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 01 TAMANHO, A.T01, A.M01, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,01)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T01 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(02,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 02 TAMANHO, A.T02, A.M02, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,02)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T02 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(03,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 03 TAMANHO, A.T03, A.M03, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,03)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T03 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(04,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 04 TAMANHO, A.T04, A.M04, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,04)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T04 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(05,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 05 TAMANHO, A.T05, A.M05, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,05)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T05 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(06,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 06 TAMANHO, A.T06, A.M06, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,06)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T06 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(07,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 07 TAMANHO, A.T07, A.M07, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,07)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T07 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(08,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 08 TAMANHO, A.T08, A.M08, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,08)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T08 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(09,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 09 TAMANHO, A.T09, A.M09, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,09)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T09 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(10,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 10 TAMANHO, A.T10, A.M10, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,10)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T10 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(11,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 11 TAMANHO, A.T11, A.M11, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,11)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T11 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(12,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 12 TAMANHO, A.T12, A.M12, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,12)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T12 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(13,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 13 TAMANHO, A.T13, A.M13, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,13)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T13 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(14,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 14 TAMANHO, A.T14, A.M14, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,14)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T14 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(15,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 15 TAMANHO, A.T15, A.M15, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,15)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T15 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(16,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 16 TAMANHO, A.T16, A.M16, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,16)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T16 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(17,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 17 TAMANHO, A.T17, A.M17, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,17)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T17 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(18,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 18 TAMANHO, A.T18, A.M18, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,18)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T18 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(19,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 19 TAMANHO, A.T19, A.M19, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,19)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T19 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0 UNION
SELECT CAST(A.ID||LPAD(20,2,0) AS INTEGER), A.ESTABELECIMENTO_CODIGO, A.PRODUTO_CODIGO, A.LOCALIZACAO_CODIGO, P.FAMILIA_CODIGO, P.DESCRICAO, A.SEGURANCA, A.PONTO_REPOSICAO, A.TIPO_REPOSICAO, 20 TAMANHO, A.T20, A.M20, (SELECT TAM_DESCRICAO FROM SP_TAMANHO_GRADE (P.GRADE_CODIGO,20)), A.HABILITA_KANBAN FROM TBESTOQUE_MINIMO A LEFT JOIN TBPRODUTO P ON P.CODIGO = A.PRODUTO_CODIGO WHERE A.T20 > 0 AND P.STATUS = '1' AND P.GRADE_CODIGO > 0;
CREATE VIEW VWREGISTRO_DEFEITO_DIA (
DATA_REGISTRO,
DEFEITO,
MODELO,
PRODUTO,
COR,
GP,
LINHA,
PERFIL,
QUANTIDADE,
QTD_TURNO1,
QTD_TURNO2,
TALOES,
DEFEITO_SETOR,
DEFEITO_ID,
MODELO_ID,
PRODUTO_ID,
COR_ID,
GP_ID,
LINHA_ID,
PERFIL_ID,
FAMILIA_ID,
ESTABELECIMENTO_ID,
TAMANHO,
DENSIDADE,
ESPESSURA)
AS
select
DATA_REGISTRO,
DEFEITO,
MODELO,
PRODUTO,
COR,
GP,
LINHA,
PERFIL,
sum(Quantidade) as Quantidade,
sum(QTD_TURNO1) as QTD_TURNO1,
sum(QTD_TURNO2) as QTD_TURNO2,
sum(TALOES) as TALOES,
defeito_setor,
defeito_id,
MODELO_ID,
PRODUTO_ID,
COR_ID,
GP_ID,
LINHA_ID,
PERFIL_ID,
familia_id,
estabelecimento_id,
tamanho,
cast(substring(Densidade from 1 for 10) as numeric(5,2)) DENSIDADE,
cast(substring(Densidade from 11 for 20) as numeric(5,2)) espessura
from(
Select
B.Data DATA_REGISTRO,
d.descricao as DEFEITO,
d.setor as SETOR,
m.descricao as MODELO,
p.descricao as PRODUTO,
c.descricao as COR,
e.descricao as GP,
r.descricao as LINHA,
s.descricao as PERFIL,
B.Quantidade,
IIF(B.TURNO=1,B.Quantidade,0) QTD_TURNO1,
IIF(B.TURNO=2,B.Quantidade,0) QTD_TURNO2,
1 as TALOES,
d.setor as defeito_setor,
d.codigo as defeito_id,
m.codigo as modelo_id,
p.codigo as produto_id,
c.codigo cor_id,
e.codigo gp_id,
r.codigo linha_id,
s.id perfil_id,
p.familia_codigo as familia_id,
b.estabelecimento_id,
FN_TAMANHO_GRADE(p.grade_codigo, b.tamanho) tamanho,
(Select First 1
Coalesce((Select First 1 lpad(M.Densidade,10,0)||lpad(m.espessura,10,0)
From TbModelo M Where M.Codigo = P2.Modelo_Codigo),'0000000000')
From TbModelo_Consumo_Cor MC, TbFamilia F, TbProduto P2
Where MC.Modelo_Id = p.modelo_codigo
and MC.Cor_Id = c.codigo
and MC.Produto_Id = P2.Codigo
and P2.Familia_Codigo = F.Codigo
and F.Densidade_Espessura = '1'
and((b.tamanho = 1 and MC.T01 > 0) or
(b.Tamanho = 2 and MC.T02 > 0) or
(b.Tamanho = 3 and MC.T03 > 0) or
(b.Tamanho = 4 and MC.T04 > 0) or
(b.Tamanho = 5 and MC.T05 > 0) or
(b.Tamanho = 6 and MC.T06 > 0) or
(b.Tamanho = 7 and MC.T07 > 0) or
(b.Tamanho = 8 and MC.T08 > 0) or
(b.Tamanho = 9 and MC.T09 > 0) or
(b.Tamanho =10 and MC.T10 > 0) or
(b.Tamanho =11 and MC.T11 > 0) or
(b.Tamanho =12 and MC.T12 > 0) or
(b.Tamanho =13 and MC.T13 > 0) or
(b.Tamanho =14 and MC.T14 > 0) or
(b.Tamanho =15 and MC.T15 > 0) or
(b.Tamanho =16 and MC.T16 > 0) or
(b.Tamanho =17 and MC.T17 > 0) or
(b.Tamanho =18 and MC.T18 > 0) or
(b.Tamanho =19 and MC.T19 > 0) or
(b.Tamanho =20 and MC.T20 > 0))) as Densidade
From TbDefeito_Transacao_Item B,tbsac_defeito d, TbEsteira E, TbProduto P, tbmodelo M, tbcor c,tbmodelo_linha r,tbperfil s
Where B.Esteira_id = E.Codigo
and B.Produto_id = P.Codigo
--and B.Estabelecimento_Id = :ESTABELECIMENTO
--and B.Data between :DATA1 and :DATA2
AND (B.DEFEITO_ID > 0)
--and P.Familia_Codigo = :FAMILIA
and m.codigo = p.modelo_codigo
and d.codigo = b.defeito_id
and c.codigo = p.cor_codigo
and r.codigo = m.linha_codigo
and s.id = b.perfil
and s.tabela = 'SKU'
and s.familia_id = p.familia_codigo
)
group by
DATA_REGISTRO,
DEFEITO,
MODELO,
PRODUTO,
COR,
GP,
LINHA,
PERFIL,
defeito_setor,
defeito_id,
MODELO_ID,
PRODUTO_ID,
COR_ID,
GP_ID,
LINHA_ID,
PERFIL_ID,
familia_id,
estabelecimento_id,
tamanho,
Densidade,
espessura;
CREATE VIEW VWREGISTRO_PRODUCAO_DIA (
DATA_REGISTRO,
MODELO,
PRODUTO,
COR,
GP,
LINHA,
PERFIL,
QUANTIDADE,
QTD_TURNO1,
QTD_TURNO2,
TALOES,
MODELO_ID,
PRODUTO_ID,
COR_ID,
GP_ID,
LINHA_ID,
PERFIL_ID,
FAMILIA_ID,
ESTABELECIMENTO_ID,
TAMANHO,
DENSIDADE,
ESPESSURA)
AS
select
DATA_REGISTRO,
MODELO,
PRODUTO,
COR,
GP,
LINHA,
PERFIL,
sum(QUANTIDADE_PEDIDO) as QUANTIDADE,
sum(QTD_TURNO1) as QTD_TURNO1,
sum(QTD_TURNO2) as QTD_TURNO2,
sum(TALOES) as TALOES,
MODELO_ID,
PRODUTO_ID,
COR_ID,
GP_ID,
LINHA_ID,
PERFIL_ID,
familia_id,
estabelecimento_id,
tamanho,
cast(substring(Densidade from 1 for 10) as numeric(5,2)) DENSIDADE,
cast(substring(Densidade from 11 for 20) as numeric(5,2)) espessura
from(
select
A.Data_Producao as DATA_REGISTRO,
A.pedido_item_controle as ID,
m.descricao as MODELO,
p.descricao as PRODUTO,
c.descricao as COR,
e.descricao as GP,
r.descricao as LINHA,
s.descricao as PERFIL,
A.QUANTIDADE_PEDIDO,
IIF(A.TURNO=1,A.QUANTIDADE_PEDIDO,0) QTD_TURNO1,
IIF(A.TURNO=2,A.QUANTIDADE_PEDIDO,0) QTD_TURNO2,
1 as TALOES,
m.codigo as modelo_id,
p.codigo as produto_id,
c.codigo cor_id,
e.codigo gp_id,
r.codigo linha_id,
s.id perfil_id,
a.familia_codigo as familia_id,
a.estabelecimento_codigo as estabelecimento_id,
FN_TAMANHO_GRADE(p.grade_codigo, a.tamanho) tamanho,
(Select First 1
Coalesce((Select First 1 lpad(M.Densidade,10,0)||lpad(m.espessura,10,0)
From TbModelo M Where M.Codigo = P2.Modelo_Codigo),'0000000000')
From TbModelo_Consumo_Cor MC, TbFamilia F, TbProduto P2
Where MC.Modelo_Id = p.modelo_codigo
and MC.Cor_Id = c.codigo
and MC.Produto_Id = P2.Codigo
and P2.Familia_Codigo = F.Codigo
and F.Densidade_Espessura = '1'
and((a.tamanho = 1 and MC.T01 > 0) or
(a.Tamanho = 2 and MC.T02 > 0) or
(a.Tamanho = 3 and MC.T03 > 0) or
(a.Tamanho = 4 and MC.T04 > 0) or
(a.Tamanho = 5 and MC.T05 > 0) or
(a.Tamanho = 6 and MC.T06 > 0) or
(a.Tamanho = 7 and MC.T07 > 0) or
(a.Tamanho = 8 and MC.T08 > 0) or
(a.Tamanho = 9 and MC.T09 > 0) or
(a.Tamanho =10 and MC.T10 > 0) or
(a.Tamanho =11 and MC.T11 > 0) or
(a.Tamanho =12 and MC.T12 > 0) or
(a.Tamanho =13 and MC.T13 > 0) or
(a.Tamanho =14 and MC.T14 > 0) or
(a.Tamanho =15 and MC.T15 > 0) or
(a.Tamanho =16 and MC.T16 > 0) or
(a.Tamanho =17 and MC.T17 > 0) or
(a.Tamanho =18 and MC.T18 > 0) or
(a.Tamanho =19 and MC.T19 > 0) or
(a.Tamanho =20 and MC.T20 > 0))) as Densidade
From TbPedido_Item_Processado A, TbEsteira E, TbProduto P, tbmodelo M, tbcor c,tbmodelo_linha r,tbperfil s
where
--and A.Estabelecimento_Codigo = :ESTABELECIMENTO
--and A.Data_Producao between :DATA1 and :DATA2
--and A.familia_codigo = :FAMILIA
e.codigo = a.Esteira_Producao
and p.codigo = a.produto_codigo
and m.codigo = p.modelo_codigo
and c.codigo = p.cor_codigo
and r.codigo = m.linha_codigo
and s.id = a.perfil
and s.tabela = 'SKU'
)
group by
DATA_REGISTRO,
MODELO,
PRODUTO,
COR,
GP,
LINHA,
PERFIL,
MODELO_ID,
PRODUTO_ID,
COR_ID,
GP_ID,
LINHA_ID,
PERFIL_ID,
familia_id,
estabelecimento_id,
tamanho,
Densidade,
espessura;
/******************************************************************************/
/**** Creating triggers ****/
/******************************************************************************/
SET TERM ^ ;
CREATE TRIGGER TTBESTOQUE_SALDO_MES_BI0 FOR TBESTOQUE_SALDO_MES
ACTIVE
BEFORE INSERT
POSITION 0
AS
begin
NEW.DATA = CAST('01.'||NEW.MES||'.'||NEW.ANO AS DATE);
end
^
CREATE TRIGGER TTBMODELO_CONSUMO_999 FOR TBMODELO_CONSUMO
ACTIVE
BEFORE INSERT OR UPDATE OR DELETE
POSITION 999
AS
declare variable vLinha_Id Integer;
begin
vLinha_Id = (Select First 1 Linha_Codigo from tbmodelo where codigo = New.Modelo_Codigo);
if (vLinha_Id > 0) then
Begin
UpDate tbreplica_tabela set Status = '0'
Where tabela = 'TBMODELO_FICHA_TECNICA'
and linha_id = :vLinha_id
and Status = '1';
End
end
^
CREATE TRIGGER TTBMODELO_CONSUMO_COR_999 FOR TBMODELO_CONSUMO_COR
ACTIVE
BEFORE INSERT OR UPDATE OR DELETE
POSITION 999
AS
declare variable vLinha_Id Integer;
begin
vLinha_Id = (Select First 1 Linha_Codigo from tbmodelo where codigo = New.Modelo_Id);
if (vLinha_Id > 0) then
Begin
UpDate tbreplica_tabela set Status = '0'
Where tabela = 'TBMODELO_FICHA_TECNICA'
and linha_id = :vLinha_id
and Status = '1';
End
end
^
/******************************************************************************/
/**** Altering stored procedures (with empty bodies) ****/
/******************************************************************************/
ALTER PROCEDURE SP_REPLICA_TABELA(
TABELA VARCHAR(50))
RETURNS (
ID INTEGER,
ANO INTEGER,
MES INTEGER,
DATA_INICIAL VARCHAR(10),
DATA_FINAL VARCHAR(10),
LINHA_ID INTEGER)
AS
BEGIN
SUSPEND;
END
^
ALTER PROCEDURE SPC_CONFERENCIA_TRANSACAO(
COD_BARRAS VARCHAR(100),
CONFERENCIA_TIPO INTEGER)
RETURNS (
ESTOQUE_ID INTEGER,
PRODUTO_ID INTEGER,
PRODUTO_DESCRICAO VARCHAR(100),
USUARIO_ID INTEGER,
USUARIO_DESCRICAO VARCHAR(100),
DATAHORA TIMESTAMP,
LOCALIZACAO_CODIGO INTEGER,
CONFERENCIA INTEGER,
ESTOQUE_TRANSACAO_REGRA_ID INTEGER,
QUANTIDADE NUMERIC(15,4),
TAMANHO INTEGER)
AS
BEGIN
SUSPEND;
END
^
ALTER PROCEDURE SPI_ESTOQUE_TRANSACAO(
TABELA VARCHAR(32),
TABELA_NIVEL INTEGER,
TABELA_ID INTEGER,
ESTABELECIMENTO_ID INTEGER,
LOCALIZACAO_ID INTEGER,
DATA DATE,
PRODUTO_ID INTEGER,
TAMANHO INTEGER,
QUANTIDADE NUMERIC(10,5),
TIPO CHAR,
OPERACAO VARCHAR(3),
CONSUMO CHAR,
CCUSTO VARCHAR(10),
OBSERVACAO VARCHAR(100),
TRANSACAO_ID INTEGER = NULL,
DOCUMENTO INTEGER = NULL,
TALAO INTEGER = 0)
AS
BEGIN
EXIT;
END
^
ALTER PROCEDURE SPU_LIBERACAO_TALAO_COLETOR(
COD_BARRAS VARCHAR(100),
OPERADOR_ID INTEGER)
RETURNS (
PRODUTO_ID INTEGER,
PRODUTO_DESCRICAO VARCHAR(100),
OPERACAO1 VARCHAR(10),
OPERACAO2 VARCHAR(10),
LOCALIZACAO_ID_VELHA INTEGER,
LOCALIZACAO_ID_NOVA INTEGER,
LOCALIZACAO_DESC_VELHA VARCHAR(100),
LOCALIZACAO_DESC_NOVA VARCHAR(100),
REMESSA VARCHAR(20),
TALAO VARCHAR(20),
QUANTIDADE VARCHAR(15),
FAMILIA INTEGER,
ID VARCHAR(20),
QUANTIDADE_ALT VARCHAR(15),
SITUACAO INTEGER)
AS
BEGIN
SUSPEND;
END
^
ALTER PROCEDURE SPU_LIBERAR_TALAO_COLETOR(
COD_BARRAS VARCHAR(100),
OPERADOR_ID INTEGER)
AS
BEGIN
EXIT;
END
^
ALTER PROCEDURE SPU_PEDIDO_CLASSIFICACAO(
DATA_1 DATE,
DATA_2 DATE,
PEDIDO_1 VARCHAR(10))
RETURNS (
PEDIDO INTEGER,
MODCOR4000A9999 INTEGER,
MODCOR2000A4000 INTEGER,
MODCOR1000A2000 INTEGER,
MODCOR0600A1000 INTEGER,
MODCOR0200A0600 INTEGER,
MODCOR0000A0200 INTEGER)
AS
BEGIN
SUSPEND;
END
^
/******************************************************************************/
/**** Altering triggers ****/
/******************************************************************************/
ALTER TRIGGER TBCASO_FEED_B03I
AS
declare variable old_status integer;
declare variable new_status integer;
declare variable tmp integer;
begin
old_status = (select r.status_id from tbcaso_registro r where r.id = new.caso_id and r.painel_id = new.painel_id);
tmp = (select s.aberto from tbcaso_status s where s.id = :old_status);
if(tmp = 1 and new.usuario_id > 0)then
begin
tmp = (select first 1 s.id from tbcaso_status s where s.atendido = 1);
if(tmp > 0)then
begin
update tbcaso_registro r set r.status_id = :tmp where r.id = new.caso_id and r.painel_id = new.painel_id;
end
end
end
^
ALTER TRIGGER TTBAGRUPAMENTO_B0I_01
AS
DECLARE VARIABLE Agrup_Id Integer;
DECLARE VARIABLE Agrup_Desc VARCHAR(50);
begin
if (New.Simulacao = '0') Then
Begin
Agrup_Id = Coalesce((Select First 1 Id From TbAgrupamento
Where ((Data_Inicial <= New.Data_Inicial and Data_Final >= New.Data_Inicial) or
(Data_Inicial <= New.Data_Final and Data_Final >= New.Data_Final))
and Simulacao = '0' and Perfil = New.Perfil
and localizacao_Id = New.Localizacao_Id),0);
if (:Agrup_Id > 0) Then
Begin
Agrup_Desc = (Select First 1 Id||'-'||Descricao From TbAgrupamento Where Id = :Agrup_Id);
Exception "..." 'PERIODO INFORMADO SOBREPONDO PERIODO DE OUTRO AGRUPAMENTO: '||:AGRUP_DESC||
' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
End
End
end
^
ALTER TRIGGER TTBAGRUPAMENTO_B0U_01
AS
DECLARE VARIABLE Agrup_Id Integer;
DECLARE VARIABLE Agrup_Desc VARCHAR(50);
DECLARE VARIABLE Pedidos Integer;
begin
if (New.Simulacao <> Old.Simulacao or New.Data_Inicial <> Old.Data_Inicial or New.Data_Final <> Old.Data_Final) Then
Begin
if (New.Simulacao = '1') then
Begin
Pedidos = Coalesce((Select First 1 Id From TbAgrupamento_Pedido Where Agrupamento_Id = Old.Id and Tipo = 'P'),0);
if (:Pedidos > 0) Then
Begin
Exception "..." 'TIPO DE AGRUPAMENTO NAO PODE SER ALTERADO, JA EXISTEM PEDIDOS VINCULADOS!'||
' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
End
End
if (New.Simulacao = '0') then
Begin
Agrup_Id = Coalesce((Select First 1 Id From TbAgrupamento
Where ((Data_Inicial <= New.Data_Inicial and Data_Final >= New.Data_Inicial) or
(Data_Inicial <= New.Data_Final and Data_Final >= New.Data_Final))
and Simulacao = '0' and Id <> Old.Id and Perfil = New.Perfil
and localizacao_Id = New.Localizacao_Id
),0);
if (:Agrup_Id > 0) Then
Begin
Agrup_Desc = (Select First 1 Id||'-'||Descricao From TbAgrupamento Where Id = :Agrup_Id);
Exception "..." 'PERIODO INFORMADO SOBREPONDO PERIODO DE OUTRO AGRUPAMENTO: '||:AGRUP_DESC||
' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
End
End
End
end
^
ALTER TRIGGER TTBCASO_FEED_B02I
AS
declare variable corpo varchar(8000);
declare variable html1 varchar(4000);
declare variable html2 varchar(4000);
begin
if(new.origem = 0)then
begin
if(new.de <> '' and new.para <> '' and new.assunto <> '' and new.mensagem <> '' and (new.tipo = 1 /*or new.tipo = 4*/) and new.usuario_id > 0 and new.subfeed = 0)then
begin
html1 = (SELECT first 1 p.html FROM tbcaso_html p where p.id = 3);
html2 = (SELECT first 1 p.html FROM tbcaso_html p where p.id = 2);
corpo = '
[ABRIR CASO NA WEB]
';
corpo = corpo || html1;
corpo = corpo || 'Data: '||formatdatetime(current_timestamp) || '
';
corpo = corpo || new.mensagem;
corpo = corpo || html2;
insert into tbemail (status, email, assunto, corpo, usuario_id, cc, cco, painel_id, datahora)
values (
0,
new.para,
new.assunto,
:corpo,
new.usuario_id,
new.em_copia,
new.em_copia_oculta,
new.painel_id,
current_timestamp
);
end
end
end
^
ALTER TRIGGER TTBCASO_REGISTRO_B02I
INACTIVE
AS
declare variable tipo integer;
declare variable descricao varchar(50);
declare variable monitor varchar(100);
declare variable motivo varchar(100);
declare variable valor varchar(1000);
declare variable corpo varchar(8000);
declare variable html1 varchar(4000);
declare variable html2 varchar(4000);
begin
monitor = (SELECT first 1 p.email_monitor FROM tbcaso_painel p where p.id = new.painel_id);
html1 = (SELECT first 1 p.html FROM tbcaso_html p where p.id = 1);
html2 = (SELECT first 1 p.html FROM tbcaso_html p where p.id = 2);
corpo = 'Abrir Caso '||new.id||' na web
';
corpo = corpo || html1;
corpo = corpo || 'Data: '||formatdatetime(current_timestamp)||'
';
for
select
TIPO,
DESCRICAO,
coalesce(VALOR,' ') as VALOR
from CASO_DETALHE(new.painel_id, new.id)
into
:tipo,
:descricao,
:valor
do
begin
corpo = corpo||''||descricao||': '||:valor||'
';
if(descricao = 'Motivo')then
begin
motivo = valor;
end
end
corpo = corpo || html2;
insert into tbemail (status, email, assunto, corpo, usuario_id, cc, cco, painel_id)
values (
0,
:monitor,
'NOVO - [CASO:'||lpad(new.id,8,0)||'] Aberto: '|| :motivo,
:corpo,
0,
(select u.email from tbusuario u where u.codigo = new.usuario_id),
'',
new.painel_id
);
end
^
ALTER TRIGGER TTBCCUSTO_COTA_B0U_04
As
/***************************************************
Registra histórico de alteração
***************************************************/
Declare Variable Historico VarChar(500);
Begin
Historico = '';
If (Old.CCusto <> New.CCusto) Then
Begin
Historico = Historico||' C.Custo: '||Old.CCusto||'->'||New.CCusto;
End
If (Old.ContaContabil <> New.ContaContabil) Then
Begin
Historico = Historico||' C.Contábil: '||Old.ContaContabil||'->'||New.ContaContabil;
End
If (Old.Mes <> New.Mes) Then
Begin
Historico = Historico||' Mês: '||Old.Mes||'->'||New.Mes;
End
If (Old.Ano <> New.Ano) Then
Begin
Historico = Historico||' Ano: '||Old.Ano||'->'||New.Ano;
End
If (Old.Valor <> New.Valor) Then
Begin
Historico = Historico||' Valor: '||Cast(Old.Valor As Numeric(15,2))||'->'||Cast(New.Valor As Numeric(15,2));
End
If (Old.Bloqueio <> New.Bloqueio) Then
Begin
Historico = Historico||' Bloq.: '||iif(Old.Bloqueio = '1', 'Ativo','Inativo')||'->'||iif(New.Bloqueio = '1', 'Ativo','Inativo');
End
If (Old.Notificacao <> New.Notificacao) Then
Begin
Historico = Historico||' Notif.: '||iif(Old.Notificacao = '1', 'Ativo','Inativo')||'->'||iif(New.Notificacao = '1', 'Ativo','Inativo');
End
If (Old.Destaque <> New.Destaque) Then
Begin
Historico = Historico||' Destaq.: '||iif(Old.Destaque = '1', 'Ativo','Inativo')||'->'||iif(New.Destaque = '1', 'Ativo','Inativo');
End
If (Old.OBSERVACAO_GERAL <> New.OBSERVACAO_GERAL) Then
Begin
Historico = Historico||' Obs. Anterior: '||CAST(SUBSTRING(Old.OBSERVACAO_GERAL FROM 1 FOR 450) AS VARCHAR(450));
End
If (Historico <> '') Then
Begin
Insert Into TbHistorico (
Tabela,
Tabela_Id,
Usuario,
Ip,
Historico
) VALUES (
'TBCCUSTO_COTA',
New.Id,
(Select First 1 MON$USER from mon$attachments where mon$attachment_id = current_connection),
(Select First 1 MON$REMOTE_ADDRESS from mon$attachments where mon$attachment_id = current_connection),
:Historico
);
End
End
^
ALTER TRIGGER TTBCCUSTO_COTA_EXTRA_B9U
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
HISTORICO = '';
IF ( NEW.STATUSEXCLUSAO = '1' AND OLD.STATUSEXCLUSAO = '0') THEN
BEGIN
HISTORICO = HISTORICO||' COTA EXTRA ID: '||OLD.ID||' - EXCLUIDA. VALOR: ' || OLD.VALOR || ' OBS.: ' || OLD.OBSERVACAO;
END
IF (HISTORICO <> '') THEN
BEGIN
EXECUTE PROCEDURE SPI_HISTORICO('TBCCUSTO_COTA',NEW.CCUSTO_COTA_ID,HISTORICO);
END
END
^
ALTER TRIGGER TTBESTEIRA_B10U
INACTIVE
^
ALTER TRIGGER TTBESTOQUE_BAIXA_B2U_03
AS
/* BAIXA DE ESTOQUE */
DECLARE VARIABLE ESTOQUE_ID INTEGER;
DECLARE VARIABLE ESTABELECIMENTO_ID INTEGER;
DECLARE VARIABLE PRODUTO_ID INTEGER;
DECLARE VARIABLE TAMANHO INTEGER;
DECLARE VARIABLE DOCUMENTO INTEGER;
DECLARE VARIABLE TURNO_ID INTEGER;
DECLARE VARIABLE CCUSTO VARCHAR(10);
DECLARE VARIABLE RESPOSTA VARCHAR(100);
DECLARE VARIABLE GRADE INTEGER;
BEGIN
IF (NEW.TIPO = 'R') THEN
BEGIN
IF (((OLD.QUANTIDADE IS NULL) OR (NEW.QUANTIDADE <> OLD.QUANTIDADE))
OR ((OLD.OPERACAO_CODIGO IS NULL) OR (NEW.OPERACAO_CODIGO <> OLD.OPERACAO_CODIGO))
OR ((OLD.LOCALIZACAO_ID IS NULL) OR (NEW.LOCALIZACAO_ID <> OLD.LOCALIZACAO_ID)))
THEN
BEGIN
RESPOSTA = COALESCE((SELECT FIRST 1
LPAD(COALESCE(C.ESTABELECIMENTO_ID, 0), 4, '0')||
LPAD(COALESCE(C.PRODUTO_ID, 0), 6, '0')||
LPAD(COALESCE(C.TAMANHO, 0), 2, '0')||
LPAD(COALESCE(C.DOCUMENTO, 0), 6, '0')||
LPAD(COALESCE(C.TURNO_ID, 0), 2, '0')||
LPAD(COALESCE(C.CCUSTO, 0), 8, '0')
FROM TBCONSUMO_REQUISICAO C
WHERE
C.ID = NEW.TABELA_ID), 0);
ESTABELECIMENTO_ID = CAST(SUBSTRING(RESPOSTA FROM 1 FOR 4) AS INTEGER);
PRODUTO_ID = CAST(SUBSTRING(RESPOSTA FROM 5 FOR 6) AS INTEGER);
TAMANHO = CAST(SUBSTRING(RESPOSTA FROM 11 FOR 2) AS INTEGER);
DOCUMENTO = lpad(EXTRACT(YEAR FROM current_date),4,'0') || lpad(EXTRACT(MONTH FROM current_date),2,'0') || lpad(EXTRACT(DAY from current_date),2,'0');
TURNO_ID = CAST(SUBSTRING(RESPOSTA FROM 19 FOR 2) AS INTEGER);
CCUSTO = cast(SUBSTRING(RESPOSTA FROM 21 FOR 8) as integer);
--se produto nao tem grade tamanho he 0
GRADE = COALESCE((select first 1 p.grade_codigo from tbproduto p where p.codigo = :PRODUTO_ID),0);
if(GRADE = 0)then
begin
TAMANHO = 0;
end
IF (OLD.ESTOQUE_ID IS NULL) THEN
BEGIN
ESTOQUE_ID = COALESCE((SELECT GEN_ID(GTBESTOQUE_TRANSACAO_ITEM, 1) FROM RDB$DATABASE),0);
END
ELSE
BEGIN
ESTOQUE_ID = OLD.ESTOQUE_ID;
END
EXECUTE PROCEDURE SPU_ESTOQUE_SALDO4 (
:ESTABELECIMENTO_ID,NEW.LOCALIZACAO_ID,
:PRODUTO_ID,'S',CURRENT_DATE,
NEW.QUANTIDADE,
IIF(:TAMANHO = 1,NEW.QUANTIDADE,0),
IIF(:TAMANHO = 2,NEW.QUANTIDADE,0),
IIF(:TAMANHO = 3,NEW.QUANTIDADE,0),
IIF(:TAMANHO = 4,NEW.QUANTIDADE,0),
IIF(:TAMANHO = 5,NEW.QUANTIDADE,0),
IIF(:TAMANHO = 6,NEW.QUANTIDADE,0),
IIF(:TAMANHO = 7,NEW.QUANTIDADE,0),
IIF(:TAMANHO = 8,NEW.QUANTIDADE,0),
IIF(:TAMANHO = 9,NEW.QUANTIDADE,0),
IIF(:TAMANHO =10,NEW.QUANTIDADE,0),
IIF(:TAMANHO =11,NEW.QUANTIDADE,0),
IIF(:TAMANHO =12,NEW.QUANTIDADE,0),
IIF(:TAMANHO =13,NEW.QUANTIDADE,0),
IIF(:TAMANHO =14,NEW.QUANTIDADE,0),
IIF(:TAMANHO =15,NEW.QUANTIDADE,0),
IIF(:TAMANHO =16,NEW.QUANTIDADE,0),
IIF(:TAMANHO =17,NEW.QUANTIDADE,0),
IIF(:TAMANHO =18,NEW.QUANTIDADE,0),
IIF(:TAMANHO =19,NEW.QUANTIDADE,0),
IIF(:TAMANHO =20,NEW.QUANTIDADE,0),
:ESTOQUE_ID,:DOCUMENTO,
NULL,NULL,NEW.OPERACAO_CODIGO,
NULL,1,'0',0,NEW.USUARIO_ID,
CURRENT_DATE,:TURNO_ID,:CCUSTO,
'REQUISICAO DE CONSUMO',
'0',0,0,0,0);
NEW.ESTOQUE_ID = :ESTOQUE_ID;
END
END
END
^
ALTER TRIGGER TTBESTOQUE_SALDO_DIARIO_B0U_03
AS
DECLARE VARIABLE vData VarChar(10);
DECLARE VARIABLE SALDO1 Numeric(15,5);
DECLARE VARIABLE SALDO2 Numeric(15,5);
DECLARE VARIABLE SALDO3 Numeric(15,5);
Begin
For
Select extract(day from OLD.DATA)||'/'||extract(month from OLD.DATA)||'/'||extract(year from OLD.DATA),
OLD.SALDO-NEW.SALDO, OLD.SALDO_DETERCEIRO-NEW.SALDO_DETERCEIRO, OLD.SALDO_EMTERCEIRO-NEW.SALDO_EMTERCEIRO
FROM RDB$DATABASE
Into :vData,:SALDO1,:SALDO2,:SALDO3
Do
begin
if (NEW.SALDO < 0) then Exception "..." 'SALDO NÃO PODE FICAR NEGATIVO EM '||:vDATA||' QUANTIDADE DISPONÍVEL: '||OLD.SALDO||' QUANTIDADE A BAIXAR: '||:SALDO1||' PRODUTO: '||OLD.PRODUTO_CODIGO||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
if (NEW.SALDO_DETERCEIRO < 0) then Exception "..." 'SALDO DE TERCEIROS NÃO PODE FICAR NEGATIVO EM '||:vDATA||' QUANTIDADE DISPONÍVEL: '||OLD.SALDO_DETERCEIRO||' QUANTIDADE A BAIXAR: '||SALDO2||' PRODUTO: '||OLD.PRODUTO_CODIGO||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
if (NEW.SALDO_EMTERCEIRO < 0) then Exception "..." 'SALDO EM TERCEIROS NÃO PODE FICAR NEGATIVO EM '||:vDATA||' QUANTIDADE DISPONÍVEL: '||OLD.SALDO_EMTERCEIRO||' QUANTIDADE A BAIXAR: '||SALDO3||' PRODUTO: '||OLD.PRODUTO_CODIGO||' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
end
End
^
ALTER TRIGGER TTBESTOQUE_TRANS_ITEM_B0D_00
AS
begin
IF ( OLD.ESTOQUE_TRANSACAO_REGRA_ID > 0 AND OLD.TIPO = 'E' AND OLD.CONFERENCIA = 1 ) THEN
BEGIN
DELETE
FROM TBESTOQUE_DETALHE_ALOCACAO D
WHERE TIPO = 'E'
AND TAB_ITEM_ID = OLD.CONTROLE;
END
end
^
ALTER TRIGGER TTBESTOQUE_TRANSACAO_ITEM_A0I
AS
DECLARE VARIABLE REGRAS BIGINT;
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE TIPO INTEGER;
DECLARE VARIABLE GP_ID INTEGER;
DECLARE VARIABLE PERFIL_UP VARCHAR(40);
DECLARE VARIABLE FAMILIA_ID INTEGER;
DECLARE VARIABLE LOCALIZACAO_ID_SAIDA INTEGER;
DECLARE VARIABLE LOCALIZACAO_ID_ENTRADA INTEGER;
DECLARE VARIABLE CONFERENCIA INTEGER;
DECLARE VARIABLE OPERACAO_ESTOQUE_SAIDA VARCHAR(40);
DECLARE VARIABLE OPERACAO_ESTOQUE_ENTRADA VARCHAR(40);
DECLARE VARIABLE ALOCACAO_TIPO VARCHAR(10);
DECLARE VARIABLE ALOCACAO_TABELA_ID INTEGER;
DECLARE VARIABLE ALOCACAO_TAB_ITEM_ID INTEGER;
begin
IF ( NEW.ESTOQUE_TRANSACAO_REGRA_ID > 0 AND NEW.CONFERENCIA = 1 ) THEN
BEGIN
ID = 0;
SELECT
ID,
TIPO,
GP_ID,
PERFIL_UP,
FAMILIA_ID,
LOCALIZACAO_ID_SAIDA,
LOCALIZACAO_ID_ENTRADA,
CONFERENCIA,
OPERACAO_ESTOQUE_SAIDA,
OPERACAO_ESTOQUE_ENTRADA
FROM TBESTOQUE_TRANSACAO_REGRA R
WHERE R.ID = NEW.ESTOQUE_TRANSACAO_REGRA_ID
INTO
ID,
TIPO,
GP_ID,
PERFIL_UP,
FAMILIA_ID,
LOCALIZACAO_ID_SAIDA,
LOCALIZACAO_ID_ENTRADA,
CONFERENCIA,
OPERACAO_ESTOQUE_SAIDA,
OPERACAO_ESTOQUE_ENTRADA
;
IF ( ID = 0 ) THEN
BEGIN
EXCEPTION "..." 'REGRA DE TRANSACAO DE ESTOQUE NAO ENCONTRADA. ENTRE EM CONTATO COM SUPORTE TECNICO. RAMAL 27';
END
if ( CONFERENCIA = '1' AND NEW.TIPO = 'E' ) then
begin
ALOCACAO_TIPO = '';
ALOCACAO_TABELA_ID = 0;
ALOCACAO_TAB_ITEM_ID = 0;
IF ( TIPO = 1 ) THEN
BEGIN
ALOCACAO_TIPO = 'E'; -- E = REGRAS DE 'E'STOQUE;
ALOCACAO_TABELA_ID = NEW.DOCUMENTO;
ALOCACAO_TAB_ITEM_ID = NEW.CONTROLE;
END
IF ( ALOCACAO_TIPO = '' OR ALOCACAO_TABELA_ID = 0 OR ALOCACAO_TAB_ITEM_ID = 0 ) THEN
BEGIN
exception "..." 'INFORMACOES DE ALOCACAO PARA CONFERENCIA DA TRANSACAO DE ESTOQUE NAO ENCONTRADA. ENTRE EM CONTATO COM O SUPORTE TECNICO, RAMAL 27';
END
INSERT INTO TBESTOQUE_DETALHE_ALOCACAO (
ESTABELECIMENTO_ID,
TABELA_ID,
TAB_ITEM_ID,
TIPO,
LOCALIZACAO_ID,
PRODUTO_ID,
TAMANHO,
QUANTIDADE,
SALDO
) VALUES (
NEW.ESTABELECIMENTO_CODIGO,
:ALOCACAO_TABELA_ID,
:ALOCACAO_TAB_ITEM_ID,
:ALOCACAO_TIPO,
NEW.LOCALIZACAO_CODIGO,
NEW.PRODUTO_CODIGO,
IIF(NEW.T01 > 0,01,
IIF(NEW.T02 > 0,02,
IIF(NEW.T03 > 0,03,
IIF(NEW.T04 > 0,04,
IIF(NEW.T05 > 0,05,
IIF(NEW.T06 > 0,06,
IIF(NEW.T07 > 0,07,
IIF(NEW.T08 > 0,08,
IIF(NEW.T09 > 0,09,
IIF(NEW.T10 > 0,10,
IIF(NEW.T11 > 0,11,
IIF(NEW.T12 > 0,12,
IIF(NEW.T13 > 0,13,
IIF(NEW.T14 > 0,14,
IIF(NEW.T15 > 0,15,
IIF(NEW.T16 > 0,16,
IIF(NEW.T17 > 0,17,
IIF(NEW.T18 > 0,18,
IIF(NEW.T19 > 0,19,
IIF(NEW.T20 > 0,20,0)))))))))))))))))))),
NEW.QUANTIDADE,
NEW.QUANTIDADE
);
end
END
end
^
ALTER TRIGGER TTBESTOQUE_TRANSACAO_ITEM_B3U
AS
DECLARE VARIABLE REGRAS BIGINT;
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE TIPO INTEGER;
DECLARE VARIABLE GP_ID INTEGER;
DECLARE VARIABLE PERFIL_UP VARCHAR(40);
DECLARE VARIABLE FAMILIA_ID INTEGER;
DECLARE VARIABLE LOCALIZACAO_ID_SAIDA INTEGER;
DECLARE VARIABLE LOCALIZACAO_ID_ENTRADA INTEGER;
DECLARE VARIABLE CONFERENCIA INTEGER;
DECLARE VARIABLE OPERACAO_ESTOQUE_SAIDA VARCHAR(40);
DECLARE VARIABLE OPERACAO_ESTOQUE_ENTRADA VARCHAR(40);
DECLARE VARIABLE ALOCACAO_TIPO VARCHAR(10);
DECLARE VARIABLE ALOCACAO_TABELA_ID INTEGER;
DECLARE VARIABLE ALOCACAO_TAB_ITEM_ID INTEGER;
BEGIN
IF ( NEW.ESTOQUE_TRANSACAO_REGRA_ID > 0 AND NEW.TIPO = 'E' ) THEN
BEGIN
IF ( OLD.CONFERENCIA = 1 AND NEW.CONFERENCIA = 2 ) THEN
BEGIN
DELETE
FROM TBESTOQUE_DETALHE_ALOCACAO D
WHERE TIPO = 'E'
AND TAB_ITEM_ID = NEW.CONTROLE;
END
IF ( OLD.CONFERENCIA = 2 AND NEW.CONFERENCIA = 1 ) THEN
BEGIN
ID = 0;
SELECT
ID,
TIPO,
GP_ID,
PERFIL_UP,
FAMILIA_ID,
LOCALIZACAO_ID_SAIDA,
LOCALIZACAO_ID_ENTRADA,
CONFERENCIA,
OPERACAO_ESTOQUE_SAIDA,
OPERACAO_ESTOQUE_ENTRADA
FROM TBESTOQUE_TRANSACAO_REGRA R
WHERE R.ID = NEW.ESTOQUE_TRANSACAO_REGRA_ID
INTO
ID,
TIPO,
GP_ID,
PERFIL_UP,
FAMILIA_ID,
LOCALIZACAO_ID_SAIDA,
LOCALIZACAO_ID_ENTRADA,
CONFERENCIA,
OPERACAO_ESTOQUE_SAIDA,
OPERACAO_ESTOQUE_ENTRADA
;
IF ( ID = 0 ) THEN
BEGIN
EXCEPTION "..." 'REGRA DE TRANSACAO DE ESTOQUE NAO ENCONTRADA. ENTRE EM CONTATO COM SUPORTE TECNICO. RAMAL 27';
END
if ( CONFERENCIA = '1' ) then
begin
ALOCACAO_TIPO = '';
ALOCACAO_TABELA_ID = 0;
ALOCACAO_TAB_ITEM_ID = 0;
IF ( TIPO = 1 ) THEN
BEGIN
ALOCACAO_TIPO = 'E'; -- E = REGRAS DE 'E'STOQUE;
ALOCACAO_TABELA_ID = NEW.DOCUMENTO;
ALOCACAO_TAB_ITEM_ID = NEW.CONTROLE;
END
IF ( ALOCACAO_TIPO = '' OR ALOCACAO_TABELA_ID = 0 OR ALOCACAO_TAB_ITEM_ID = 0 ) THEN
BEGIN
exception "..." 'INFORMACOES DE ALOCACAO PARA CONFERENCIA DA TRANSACAO DE ESTOQUE NAO ENCONTRADA. ENTRE EM CONTATO COM O SUPORTE TECNICO, RAMAL 27';
END
INSERT INTO TBESTOQUE_DETALHE_ALOCACAO (
ESTABELECIMENTO_ID,
TABELA_ID,
TAB_ITEM_ID,
TIPO,
LOCALIZACAO_ID,
PRODUTO_ID,
TAMANHO,
QUANTIDADE,
SALDO
) VALUES (
NEW.ESTABELECIMENTO_CODIGO,
:ALOCACAO_TABELA_ID,
:ALOCACAO_TAB_ITEM_ID,
:ALOCACAO_TIPO,
NEW.LOCALIZACAO_CODIGO,
NEW.PRODUTO_CODIGO,
IIF(NEW.T01 > 0,01,
IIF(NEW.T02 > 0,02,
IIF(NEW.T03 > 0,03,
IIF(NEW.T04 > 0,04,
IIF(NEW.T05 > 0,05,
IIF(NEW.T06 > 0,06,
IIF(NEW.T07 > 0,07,
IIF(NEW.T08 > 0,08,
IIF(NEW.T09 > 0,09,
IIF(NEW.T10 > 0,10,
IIF(NEW.T11 > 0,11,
IIF(NEW.T12 > 0,12,
IIF(NEW.T13 > 0,13,
IIF(NEW.T14 > 0,14,
IIF(NEW.T15 > 0,15,
IIF(NEW.T16 > 0,16,
IIF(NEW.T17 > 0,17,
IIF(NEW.T18 > 0,18,
IIF(NEW.T19 > 0,19,
IIF(NEW.T20 > 0,20,0)))))))))))))))))))),
NEW.QUANTIDADE,
NEW.QUANTIDADE
);
END
END
END
END
^
ALTER TRIGGER TTBFERRAMENTARIA_B2U
AS
DECLARE VARIABLE GP_ID BIGINT;
DECLARE VARIABLE UP_ID BIGINT;
DECLARE VARIABLE ESTACAO BIGINT;
DECLARE VARIABLE OPERADOR_ID BIGINT;
DECLARE VARIABLE FERRAMENTAS_ALOCADAS VARCHAR(3000);
begin
IF (
COALESCE(NEW.GP_ID ,0) <> COALESCE(OLD.GP_ID ,0)
OR COALESCE(NEW.UP_ID ,0) <> COALESCE(OLD.UP_ID ,0)
OR COALESCE(NEW.ESTACAO ,0) <> COALESCE(OLD.ESTACAO ,0)
OR COALESCE(NEW.OPERADOR_ID,0) <> COALESCE(OLD.OPERADOR_ID,0)
OR COALESCE(NEW.TALAO_ID,0) <> COALESCE(OLD.TALAO_ID,0)) THEN
BEGIN
/* VERIFICA OPERADOR */
OPERADOR_ID = COALESCE((SELECT FIRST 1 O.CODIGO FROM TBOPERADOR O WHERE O.CODIGO = NEW.OPERADOR_ID AND O.STATUS = '1'),0);
IF ( NOT (OPERADOR_ID > 0) ) THEN
BEGIN
EXCEPTION "..." 'OPERACAO NAO PERMITIDA. OPERADOR DE PROCESSOS INVALIDO';
END
IF ( NEW.SITUACAO = 'E' ) THEN
BEGIN
NEW.TALAO_ID = 0;
END
IF ( NOT(NEW.SITUACAO = 'E') AND NOT(NEW.TALAO_ID > 0) ) THEN
BEGIN
EXCEPTION "..." 'ACAO NAO PERMITIDA PARA A FERRAMENTA. TALAO INVALIDO';
END
/* REGISTRA ACOES NA FERRAMENTARIA */
IF (COALESCE(NEW.GP_ID ,0) = 0
AND COALESCE(NEW.UP_ID ,0) = 0
AND COALESCE(NEW.ESTACAO,0) = 0
AND (NEW.SITUACAO = 'E' OR NEW.SITUACAO = 'R')
)THEN
BEGIN
NEW.GP_ID = 0;
NEW.UP_ID = 0;
NEW.ESTACAO = 0;
/* REGISTRA HISTORICO DE ENTRADA DA FERRAMENTA */
INSERT INTO TBFERRAMENTARIA_HISTORICO (
FERRAMENTA_TIPO,
FERRAMENTA_ID,
STATUS,
OPERADOR_ID,
GP_ID,
UP_ID,
ESTACAO,
TALAO_ID
) VALUES (
'M',
NEW.ID,
NEW.SITUACAO,
NEW.OPERADOR_ID,
NEW.GP_ID,
NEW.UP_ID,
NEW.ESTACAO,
NEW.TALAO_ID
);
END
ELSE
/* REGISTRA OUTRAS ACOES */
IF (
(COALESCE(NEW.GP_ID ,0) <> COALESCE(OLD.GP_ID ,0)
OR COALESCE(NEW.UP_ID ,0) <> COALESCE(OLD.UP_ID ,0)
OR COALESCE(NEW.ESTACAO ,0) <> COALESCE(OLD.ESTACAO ,0))
AND (NEW.GP_ID > 0
OR NEW.UP_ID > 0
OR NEW.ESTACAO > 0)
AND NOT (NEW.SITUACAO = '')
)THEN
BEGIN
/* VERIFICA O GRUPO DE PRODUCAO */
GP_ID = COALESCE((SELECT FIRST 1 G.ID FROM TBGP G WHERE G.ID = NEW.GP_ID AND G.STATUS = '1'),0);
IF ( NOT (GP_ID > 0) ) THEN
BEGIN
EXCEPTION "..." 'ACAO DA FERRAMENTA NAO PERMITIDA. GRUPO DE PRODUCAO INVALIDO';
END
/* VERIFICA A UNIDADE PRODUTIVA */
UP_ID = COALESCE((SELECT FIRST 1 U.ID FROM TBUP U WHERE U.ID = NEW.UP_ID AND U.STATUS = '1'),0);
IF ( NOT (UP_ID > 0) ) THEN
BEGIN
EXCEPTION "..." 'ACAO DA FERRAMENTA NAO PERMITIDA. UNIDADE PRODUTIVA INVALIDA';
END
/* VERIFICA A ESTACAO DE TRABALHO */
ESTACAO = COALESCE((SELECT FIRST 1 SU.ID FROM TBSUB_UP SU WHERE SU.UP_ID = :UP_ID AND SU.ID = NEW.ESTACAO AND SU.STATUS = '1'),0);
IF ( NOT (ESTACAO > 0) ) THEN
BEGIN
EXCEPTION "..." 'ACAO DA FERRAMENTA NAO PERMITIDA. ESTACAO DE TRABALHO INVALIDA';
END
FERRAMENTAS_ALOCADAS = COALESCE(
(SELECT LIST(LPAD(F.SERIE,4,'0') || ' - ' || F.DESCRICAO,', ')
FROM TBFERRAMENTARIA F
WHERE F.GP_ID = :GP_ID
AND F.UP_ID = :UP_ID
AND F.ESTACAO = :ESTACAO
),'');
IF ( FERRAMENTAS_ALOCADAS <> '' ) THEN
BEGIN
-- EXCEPTION "..." 'ACAO DA FERRAMENTA NAO PERMITIDA. A ESTACAO ESTA BLOQUEADA COM A SEGUINTE FERRAMENTA: ' || FERRAMENTAS_ALOCADAS;
END
/* REGISTRA HISTORICO DE SAIDA DA FERRAMENTA */
INSERT INTO TBFERRAMENTARIA_HISTORICO (
FERRAMENTA_TIPO,
FERRAMENTA_ID,
STATUS,
OPERADOR_ID,
GP_ID,
UP_ID,
ESTACAO,
TALAO_ID
) VALUES (
'M',
NEW.ID,
NEW.SITUACAO,
NEW.OPERADOR_ID,
NEW.GP_ID,
NEW.UP_ID,
NEW.ESTACAO,
NEW.TALAO_ID
);
END
ELSE
BEGIN
EXCEPTION "..." 'OPERACAO DE INVALIDA PARA ESTA FERRAMENTA.';
END
END
end
^
ALTER TRIGGER TTBKANBAN_LOTE_DETALHE_B0D
AS
declare variable LOTE_STATUS VARCHAR(10);
begin
LOTE_STATUS = (
SELECT FIRST 1 STATUS
FROM TBKANBAN_LOTE L
WHERE L.ID = OLD.KANBAN_LOTE_ID);
IF ( LOTE_STATUS = '1' ) THEN
BEGIN
EXCEPTION "..." 'EXCLUSAO NAO PERMITIDA. LOTE: ' || OLD.KANBAN_LOTE_ID || ' JA FINALIZADO';
END
end
^
ALTER TRIGGER TTBMODELO_CONSUMO_B1IU_01
AS
DECLARE VARIABLE MODELO_ID INTEGER;
DECLARE VARIABLE PRODUTO_ID INTEGER;
DECLARE VARIABLE TAM SMALLINT;
DECLARE VARIABLE SETOR_ID INTEGER;
DECLARE VARIABLE QUANTIDADE NUMERIC(15,8);
DECLARE VARIABLE OBSERVACAO VARCHAR(100);
DECLARE VARIABLE FATOR_CONVERSAO NUMERIC(15,8);
DECLARE VARIABLE PERCENTUAL_CONSUMO INTEGER;
DECLARE VARIABLE NIVEL INTEGER;
DECLARE VARIABLE MODELO_DESTINO INTEGER;
DECLARE VARIABLE PRODUTO_DESTINO INTEGER;
DECLARE VARIABLE TAM_DESTINO INTEGER;
Begin
For
SELECT
B.MODELO_CODIGO,
B.CONSUMO_PRODUTO_CODIGO,
B.TAM,
B.SETOR_CODIGO,
IIF(NEW.TAM= 1,B.CONSUMO_QUANTIDADE_T01,
IIF(NEW.TAM= 2,B.CONSUMO_QUANTIDADE_T02,
IIF(NEW.TAM= 3,B.CONSUMO_QUANTIDADE_T03,
IIF(NEW.TAM= 4,B.CONSUMO_QUANTIDADE_T04,
IIF(NEW.TAM= 5,B.CONSUMO_QUANTIDADE_T05,
IIF(NEW.TAM= 6,B.CONSUMO_QUANTIDADE_T06,
IIF(NEW.TAM= 7,B.CONSUMO_QUANTIDADE_T07,
IIF(NEW.TAM= 8,B.CONSUMO_QUANTIDADE_T08,
IIF(NEW.TAM= 9,B.CONSUMO_QUANTIDADE_T09,
IIF(NEW.TAM=10,B.CONSUMO_QUANTIDADE_T10,
IIF(NEW.TAM=11,B.CONSUMO_QUANTIDADE_T11,
IIF(NEW.TAM=12,B.CONSUMO_QUANTIDADE_T12,
IIF(NEW.TAM=13,B.CONSUMO_QUANTIDADE_T13,
IIF(NEW.TAM=14,B.CONSUMO_QUANTIDADE_T14,
IIF(NEW.TAM=15,B.CONSUMO_QUANTIDADE_T15,
IIF(NEW.TAM=16,B.CONSUMO_QUANTIDADE_T16,
IIF(NEW.TAM=17,B.CONSUMO_QUANTIDADE_T17,
IIF(NEW.TAM=18,B.CONSUMO_QUANTIDADE_T18,
IIF(NEW.TAM=19,B.CONSUMO_QUANTIDADE_T19,
IIF(NEW.TAM=20,B.CONSUMO_QUANTIDADE_T20,
B.CONSUMO_QUANTIDADE)))))))))))))))))))),
B.OBSERVACAO,B.FATOR_CONVERSAO,B.PERCENTUAL_CONSUMO,
B.NIVEL,B.MODELO_DESTINO, B.PRODUTO_DESTINO, B.TAM_DESTINO
--DESCOBRIR AS MATERIAS-PRIMAS DA MANTA (CACHARREL E ESPUMA)
FROM TBMODELO_CONSUMO B,
--DESCOBRIR O MODELO E COR DA MATERIA-PRIMA MANTA
(Select First 1 P.Modelo_Codigo From TbProduto P Where P.Codigo = NEW.CONSUMO_PRODUTO_CODIGO) P
WHERE B.MODELO_CODIGO = P.MODELO_CODIGO
Into
:MODELO_ID,:PRODUTO_ID,:TAM,:SETOR_ID,
:QUANTIDADE,:OBSERVACAO,:FATOR_CONVERSAO,
:PERCENTUAL_CONSUMO, :NIVEL,
:MODELO_DESTINO, :PRODUTO_DESTINO, :TAM_DESTINO
Do
Begin
if (:PRODUTO_ID > 0 AND NEW.FLAG = '1') then
BEGIN
update or insert into TBMODELO_CONSUMO
(MODELO_CODIGO, CONSUMO_PRODUTO_CODIGO, TAM, SETOR_CODIGO,
CONSUMO_QUANTIDADE_T01, CONSUMO_QUANTIDADE_T02,
CONSUMO_QUANTIDADE_T03, CONSUMO_QUANTIDADE_T04,
CONSUMO_QUANTIDADE_T05, CONSUMO_QUANTIDADE_T06,
CONSUMO_QUANTIDADE_T07, CONSUMO_QUANTIDADE_T08,
CONSUMO_QUANTIDADE_T09, CONSUMO_QUANTIDADE_T10,
CONSUMO_QUANTIDADE_T11, CONSUMO_QUANTIDADE_T12,
CONSUMO_QUANTIDADE_T13, CONSUMO_QUANTIDADE_T14,
CONSUMO_QUANTIDADE_T15, CONSUMO_QUANTIDADE_T16,
CONSUMO_QUANTIDADE_T17, CONSUMO_QUANTIDADE_T18,
CONSUMO_QUANTIDADE_T19, CONSUMO_QUANTIDADE_T20,
CONSUMO_QUANTIDADE, OBSERVACAO, FATOR_CONVERSAO,
VALOR_BASE,
VB01,VB02,VB03,VB04,VB05,VB06,VB07,VB08,VB09,VB10,
VB11,VB12,VB13,VB14,VB15,VB16,VB17,VB18,VB19,VB20,
PERCENTUAL_CONSUMO, NIVEL,
MODELO_ORIGEM, PRODUTO_ORIGEM,TAM_ORIGEM,
MODELO_DESTINO,PRODUTO_DESTINO,TAM_DESTINO, FLAG)
values (NEW.MODELO_CODIGO,
:PRODUTO_ID,
:TAM,
:SETOR_ID,
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
:OBSERVACAO,
:FATOR_CONVERSAO,
Cast((NEW.CONSUMO_QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.CONSUMO_QUANTIDADE_T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
:PERCENTUAL_CONSUMO,
:NIVEL+1,
:MODELO_ID,
NEW.CONSUMO_PRODUTO_CODIGO,
NEW.TAM,
IIF(:MODELO_DESTINO>0,:MODELO_DESTINO,:MODELO_ID),
IIF(:PRODUTO_DESTINO>0,:PRODUTO_DESTINO,NEW.CONSUMO_PRODUTO_CODIGO),
IIF(:PRODUTO_DESTINO>0,:TAM_DESTINO,NEW.TAM), '0' )
Matching (MODELO_CODIGO,
CONSUMO_PRODUTO_CODIGO,
TAM,
SETOR_CODIGO,
MODELO_ORIGEM,
PRODUTO_ORIGEM,
TAM_ORIGEM,
MODELO_DESTINO,
PRODUTO_DESTINO,
TAM_DESTINO);
END
end
End
^
ALTER TRIGGER TTBMODELO_CONSUMO_B2IU_01
AS
DECLARE VARIABLE MODELO_ID INTEGER;
DECLARE VARIABLE COR_ID INTEGER;
DECLARE VARIABLE PRODUTO_ID INTEGER;
DECLARE VARIABLE TAM SMALLINT;
DECLARE VARIABLE SETOR_ID INTEGER;
DECLARE VARIABLE QUANTIDADE NUMERIC(15,8);
DECLARE VARIABLE OBSERVACAO VARCHAR(100);
DECLARE VARIABLE FATOR_CONVERSAO NUMERIC(15,8);
DECLARE VARIABLE PERCENTUAL_CONSUMO INTEGER;
DECLARE VARIABLE NIVEL INTEGER;
DECLARE VARIABLE MODELO_DESTINO INTEGER;
DECLARE VARIABLE PRODUTO_DESTINO INTEGER;
DECLARE VARIABLE TAM_DESTINO INTEGER;
Begin
For
SELECT
B.MODELO_ID,
B.COR_ID,
B.PRODUTO_ID,
B.TAM,
B.SETOR_ID,
IIF(NEW.TAM= 1,B.T01,
IIF(NEW.TAM= 2,B.T02,
IIF(NEW.TAM= 3,B.T03,
IIF(NEW.TAM= 4,B.T04,
IIF(NEW.TAM= 5,B.T05,
IIF(NEW.TAM= 6,B.T06,
IIF(NEW.TAM= 7,B.T07,
IIF(NEW.TAM= 8,B.T08,
IIF(NEW.TAM= 9,B.T09,
IIF(NEW.TAM=10,B.T10,
IIF(NEW.TAM=11,B.T11,
IIF(NEW.TAM=12,B.T12,
IIF(NEW.TAM=13,B.T13,
IIF(NEW.TAM=14,B.T14,
IIF(NEW.TAM=15,B.T15,
IIF(NEW.TAM=16,B.T16,
IIF(NEW.TAM=17,B.T17,
IIF(NEW.TAM=18,B.T18,
IIF(NEW.TAM=19,B.T19,
IIF(NEW.TAM=20,B.T20,
B.QUANTIDADE)))))))))))))))))))),
B.OBSERVACAO,
B.FATOR_CONVERSAO,
B.PERCENTUAL_CONSUMO,
B.NIVEL,
B.MODELO_DESTINO, B.PRODUTO_DESTINO, B.TAM_DESTINO
--DESCOBRIR AS MATERIEAS-PRIMAS DA MANTA (CACHARREL E ESPUMA)
FROM TBMODELO_CONSUMO_COR B,
--DESCOBRIR O MODELO E COR DA MATERIA-PRIMA MANTA
(Select First 1 P.Modelo_Codigo, P.Cor_Codigo From TbProduto P Where P.Codigo = NEW.CONSUMO_PRODUTO_CODIGO) P
WHERE B.MODELO_ID = P.MODELO_CODIGO
AND B.COR_ID = P.COR_CODIGO
Into
:MODELO_ID,:COR_ID,:PRODUTO_ID,:TAM,:SETOR_ID,
:QUANTIDADE,:OBSERVACAO,:FATOR_CONVERSAO,
:PERCENTUAL_CONSUMO, :NIVEL,
:MODELO_DESTINO, :PRODUTO_DESTINO, :TAM_DESTINO
Do
begin
If(:PRODUTO_ID > 0 AND NEW.FLAG = '1') then
BEGIN
Update or Insert into TBMODELO_CONSUMO
(MODELO_CODIGO, CONSUMO_PRODUTO_CODIGO, TAM, SETOR_CODIGO,
CONSUMO_QUANTIDADE_T01, CONSUMO_QUANTIDADE_T02,
CONSUMO_QUANTIDADE_T03, CONSUMO_QUANTIDADE_T04,
CONSUMO_QUANTIDADE_T05, CONSUMO_QUANTIDADE_T06,
CONSUMO_QUANTIDADE_T07, CONSUMO_QUANTIDADE_T08,
CONSUMO_QUANTIDADE_T09, CONSUMO_QUANTIDADE_T10,
CONSUMO_QUANTIDADE_T11, CONSUMO_QUANTIDADE_T12,
CONSUMO_QUANTIDADE_T13, CONSUMO_QUANTIDADE_T14,
CONSUMO_QUANTIDADE_T15, CONSUMO_QUANTIDADE_T16,
CONSUMO_QUANTIDADE_T17, CONSUMO_QUANTIDADE_T18,
CONSUMO_QUANTIDADE_T19, CONSUMO_QUANTIDADE_T20,
CONSUMO_QUANTIDADE, OBSERVACAO, FATOR_CONVERSAO,
VALOR_BASE,
VB01,VB02,VB03,VB04,VB05,VB06,VB07,VB08,VB09,VB10,
VB11,VB12,VB13,VB14,VB15,VB16,VB17,VB18,VB19,VB20,
PERCENTUAL_CONSUMO, NIVEL,
MODELO_ORIGEM, PRODUTO_ORIGEM, TAM_ORIGEM,
MODELO_DESTINO, PRODUTO_DESTINO, TAM_DESTINO, FLAG)
Values (NEW.MODELO_CODIGO, :PRODUTO_ID, :TAM, :SETOR_ID,
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE_T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.CONSUMO_QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
:OBSERVACAO,
:FATOR_CONVERSAO,
Cast((NEW.CONSUMO_QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.CONSUMO_QUANTIDADE_T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
:PERCENTUAL_CONSUMO, :NIVEL+1,
:MODELO_ID, NEW.CONSUMO_PRODUTO_CODIGO, NEW.TAM,
IIF(:MODELO_DESTINO>0,:MODELO_DESTINO,:MODELO_ID),
IIF(:PRODUTO_DESTINO>0,:PRODUTO_DESTINO,NEW.CONSUMO_PRODUTO_CODIGO),
IIF(:PRODUTO_DESTINO>0,:TAM_DESTINO,NEW.TAM), '0' )
Matching (MODELO_CODIGO, CONSUMO_PRODUTO_CODIGO, TAM, SETOR_CODIGO,
MODELO_ORIGEM, PRODUTO_ORIGEM, TAM_ORIGEM, MODELO_DESTINO,
PRODUTO_DESTINO, TAM_DESTINO);
END
end
End
^
ALTER TRIGGER TTBMODELO_CONSUMO_COR_B1IU_01
AS
DECLARE VARIABLE MODELO_ID INTEGER;
DECLARE VARIABLE COR_ID INTEGER;
DECLARE VARIABLE PRODUTO_ID INTEGER;
DECLARE VARIABLE TAM SMALLINT;
DECLARE VARIABLE SETOR_ID INTEGER;
DECLARE VARIABLE QUANTIDADE NUMERIC(15,8);
DECLARE VARIABLE OBSERVACAO VARCHAR(100);
DECLARE VARIABLE FATOR_CONVERSAO NUMERIC(15,8);
DECLARE VARIABLE PERCENTUAL_CONSUMO INTEGER;
DECLARE VARIABLE NIVEL INTEGER;
DECLARE VARIABLE MODELO_DESTINO INTEGER;
DECLARE VARIABLE PRODUTO_DESTINO INTEGER;
DECLARE VARIABLE TAM_DESTINO INTEGER;
Begin
For
SELECT
B.MODELO_ID,
B.COR_ID,
B.PRODUTO_ID,
B.TAM,
B.SETOR_ID,
IIF(NEW.TAM= 1,B.T01,
IIF(NEW.TAM= 2,B.T02,
IIF(NEW.TAM= 3,B.T03,
IIF(NEW.TAM= 4,B.T04,
IIF(NEW.TAM= 5,B.T05,
IIF(NEW.TAM= 6,B.T06,
IIF(NEW.TAM= 7,B.T07,
IIF(NEW.TAM= 8,B.T08,
IIF(NEW.TAM= 9,B.T09,
IIF(NEW.TAM=10,B.T10,
IIF(NEW.TAM=11,B.T11,
IIF(NEW.TAM=12,B.T12,
IIF(NEW.TAM=13,B.T13,
IIF(NEW.TAM=14,B.T14,
IIF(NEW.TAM=15,B.T15,
IIF(NEW.TAM=16,B.T16,
IIF(NEW.TAM=17,B.T17,
IIF(NEW.TAM=18,B.T18,
IIF(NEW.TAM=19,B.T19,
IIF(NEW.TAM=20,B.T20,
B.QUANTIDADE)))))))))))))))))))),
B.OBSERVACAO,
B.FATOR_CONVERSAO,
B.PERCENTUAL_CONSUMO,
B.NIVEL,
B.MODELO_DESTINO, B.PRODUTO_DESTINO, B.TAM_DESTINO
--DESCOBRIR AS MATERIEAS-PRIMAS DA MANTA (CACHARREL E ESPUMA)
FROM TBMODELO_CONSUMO_COR B,
--DESCOBRIR O MODELO E COR DA MATERIA-PRIMA MANTA
(Select First 1 P.Modelo_Codigo, P.Cor_Codigo From TbProduto P Where P.Codigo = NEW.PRODUTO_ID) P
WHERE B.MODELO_ID = P.MODELO_CODIGO
AND B.COR_ID = P.COR_CODIGO
Into
:MODELO_ID,:COR_ID,:PRODUTO_ID,:TAM,:SETOR_ID,
:QUANTIDADE,:OBSERVACAO,:FATOR_CONVERSAO,
:PERCENTUAL_CONSUMO, :NIVEL,
:MODELO_DESTINO, :PRODUTO_DESTINO, :TAM_DESTINO
Do
begin
if (:PRODUTO_ID > 0 AND NEW.FLAG = '1') then
BEGIN
update or insert into TBMODELO_CONSUMO_COR
(MODELO_ID, COR_ID, PRODUTO_ID, TAM, SETOR_ID,
T01, T02, T03, T04, T05, T06, T07, T08, T09, T10,
T11, T12, T13, T14, T15, T16, T17, T18, T19, T20,
QUANTIDADE, OBSERVACAO, FATOR_CONVERSAO,
VALOR_BASE,
VB01,VB02,VB03,VB04,VB05,VB06,VB07,VB08,VB09,VB10,
VB11,VB12,VB13,VB14,VB15,VB16,VB17,VB18,VB19,VB20,
PERCENTUAL_CONSUMO, NIVEL,
MODELO_ORIGEM, PRODUTO_ORIGEM, TAM_ORIGEM,
MODELO_DESTINO, PRODUTO_DESTINO, TAM_DESTINO, FLAG)
Values (NEW.MODELO_ID, NEW.COR_ID, :PRODUTO_ID, :TAM, :SETOR_ID,
Cast(:QUANTIDADE*Cast((NEW.T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
:OBSERVACAO,
:FATOR_CONVERSAO,
Cast((NEW.QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
Cast((NEW.T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)),
:PERCENTUAL_CONSUMO, :NIVEL+1,
:MODELO_ID, NEW.PRODUTO_ID, NEW.TAM,
IIF(:MODELO_DESTINO>0,:MODELO_DESTINO,:MODELO_ID),
IIF(:PRODUTO_DESTINO>0,:PRODUTO_DESTINO,NEW.PRODUTO_ID),
IIF(:PRODUTO_DESTINO>0,:TAM_DESTINO,NEW.TAM), '0')
Matching (MODELO_ID, COR_ID, PRODUTO_ID, TAM, SETOR_ID, MODELO_ORIGEM,
PRODUTO_ORIGEM, TAM_ORIGEM, MODELO_DESTINO, PRODUTO_DESTINO, TAM_DESTINO);
END
end
End
^
ALTER TRIGGER TTBMODELO_CONSUMO_COR_B2IU_01
AS
DECLARE VARIABLE MODELO_ID INTEGER;
DECLARE VARIABLE PRODUTO_ID INTEGER;
DECLARE VARIABLE TAM SMALLINT;
DECLARE VARIABLE SETOR_ID INTEGER;
DECLARE VARIABLE QUANTIDADE NUMERIC(15,8);
DECLARE VARIABLE OBSERVACAO VARCHAR(100);
DECLARE VARIABLE FATOR_CONVERSAO NUMERIC(15,8);
DECLARE VARIABLE PERCENTUAL_CONSUMO INTEGER;
DECLARE VARIABLE NIVEL INTEGER;
DECLARE VARIABLE MODELO_DESTINO INTEGER;
DECLARE VARIABLE PRODUTO_DESTINO INTEGER;
DECLARE VARIABLE TAM_DESTINO INTEGER;
Begin
For
SELECT
B.MODELO_CODIGO,
B.CONSUMO_PRODUTO_CODIGO,
B.TAM,
B.SETOR_CODIGO,
IIF(NEW.TAM= 1,B.CONSUMO_QUANTIDADE_T01,
IIF(NEW.TAM= 2,B.CONSUMO_QUANTIDADE_T02,
IIF(NEW.TAM= 3,B.CONSUMO_QUANTIDADE_T03,
IIF(NEW.TAM= 4,B.CONSUMO_QUANTIDADE_T04,
IIF(NEW.TAM= 5,B.CONSUMO_QUANTIDADE_T05,
IIF(NEW.TAM= 6,B.CONSUMO_QUANTIDADE_T06,
IIF(NEW.TAM= 7,B.CONSUMO_QUANTIDADE_T07,
IIF(NEW.TAM= 8,B.CONSUMO_QUANTIDADE_T08,
IIF(NEW.TAM= 9,B.CONSUMO_QUANTIDADE_T09,
IIF(NEW.TAM=10,B.CONSUMO_QUANTIDADE_T10,
IIF(NEW.TAM=11,B.CONSUMO_QUANTIDADE_T11,
IIF(NEW.TAM=12,B.CONSUMO_QUANTIDADE_T12,
IIF(NEW.TAM=13,B.CONSUMO_QUANTIDADE_T13,
IIF(NEW.TAM=14,B.CONSUMO_QUANTIDADE_T14,
IIF(NEW.TAM=15,B.CONSUMO_QUANTIDADE_T15,
IIF(NEW.TAM=16,B.CONSUMO_QUANTIDADE_T16,
IIF(NEW.TAM=17,B.CONSUMO_QUANTIDADE_T17,
IIF(NEW.TAM=18,B.CONSUMO_QUANTIDADE_T18,
IIF(NEW.TAM=19,B.CONSUMO_QUANTIDADE_T19,
IIF(NEW.TAM=20,B.CONSUMO_QUANTIDADE_T20,
B.CONSUMO_QUANTIDADE)))))))))))))))))))),
B.OBSERVACAO,B.FATOR_CONVERSAO,B.PERCENTUAL_CONSUMO,
B.NIVEL,B.MODELO_DESTINO, B.PRODUTO_DESTINO, B.TAM_DESTINO
--DESCOBRIR AS MATERIEAS-PRIMAS DA MANTA (CACHARREL E ESPUMA)
FROM TBMODELO_CONSUMO B,
--DESCOBRIR O MODELO E COR DA MATERIA-PRIMA MANTA
(Select First 1 P.Modelo_Codigo From TbProduto P Where P.Codigo = NEW.PRODUTO_ID) P
WHERE B.MODELO_CODIGO = P.MODELO_CODIGO
Into
:MODELO_ID,:PRODUTO_ID,:TAM,:SETOR_ID,
:QUANTIDADE,:OBSERVACAO,:FATOR_CONVERSAO,
:PERCENTUAL_CONSUMO,:NIVEL,
:MODELO_DESTINO, :PRODUTO_DESTINO, :TAM_DESTINO
Do
begin
if (:PRODUTO_ID > 0 AND NEW.FLAG = '1') then
BEGIN
update or insert into TBMODELO_CONSUMO_COR
(MODELO_ID, COR_ID, PRODUTO_ID, TAM, SETOR_ID,
T01, T02, T03, T04, T05, T06, T07, T08, T09, T10,
T11, T12, T13, T14, T15, T16, T17, T18, T19, T20,
QUANTIDADE, OBSERVACAO, FATOR_CONVERSAO,
VALOR_BASE,
VB01,VB02,VB03,VB04,VB05,VB06,VB07,VB08,VB09,VB10,
VB11,VB12,VB13,VB14,VB15,VB16,VB17,VB18,VB19,VB20,
PERCENTUAL_CONSUMO, NIVEL,
MODELO_ORIGEM, PRODUTO_ORIGEM, TAM_ORIGEM,
MODELO_DESTINO, PRODUTO_DESTINO, TAM_DESTINO, FLAG)
values (NEW.MODELO_ID, NEW.COR_ID,
:PRODUTO_ID,
:TAM,
:SETOR_ID,
Cast(:QUANTIDADE*Cast((NEW.T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
Cast(:QUANTIDADE*Cast((NEW.QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)) as Numeric(15,8)),
:OBSERVACAO,
:FATOR_CONVERSAO,
Cast((NEW.QUANTIDADE/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T01/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T02/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T03/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T04/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T05/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T06/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T07/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T08/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T09/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T10/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T11/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T12/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T13/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T14/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T15/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T16/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T17/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T18/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T19/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
Cast((NEW.T20/NEW.FATOR_CONVERSAO) as Numeric(15,8)) ,
:PERCENTUAL_CONSUMO,
:NIVEL+1,
:MODELO_ID,
NEW.PRODUTO_ID,
NEW.TAM,
IIF(:MODELO_DESTINO>0,:MODELO_DESTINO,:MODELO_ID),
IIF(:PRODUTO_DESTINO>0,:PRODUTO_DESTINO,NEW.PRODUTO_ID),
IIF(:PRODUTO_DESTINO>0,:TAM_DESTINO,NEW.TAM), '0')
Matching (MODELO_ID,
COR_ID,
PRODUTO_ID,
TAM,
SETOR_ID,
MODELO_ORIGEM,
PRODUTO_ORIGEM,
TAM_ORIGEM,
MODELO_DESTINO,
PRODUTO_DESTINO,
TAM_DESTINO);
END
end
End
^
ALTER TRIGGER TTBMODELO_LINHA_999
BEFORE INSERT
AS
begin
INSERT INTO TBREPLICA_TABELA (TABELA, LINHA_ID) VALUES ('TBMODELO_FICHA_TECNICA', NEW.CODIGO);
end
^
ALTER TRIGGER TTBPEDIDO_ITEM_PROC_B0U_02
AS
DECLARE VARIABLE UM_ALTERNATIVA CHAR(1);
DECLARE VARIABLE DADOS_APROVEITAMENTO VARCHAR(40);
DECLARE VARIABLE QUANTIDADE_APROVEIT NUMERIC(15,4);
DECLARE VARIABLE QUANTIDADE_APROVEIT_ALTERN NUMERIC(15,4);
DECLARE VARIABLE QUANTIDADE_PRODUCAO NUMERIC(15,4);
DECLARE VARIABLE QUANTIDADE_PRODUCAO_ALTERN NUMERIC(15,4);
DECLARE VARIABLE TALAO_PRODUTO_DESCRICAO VARCHAR(100);
Declare variable WEB Char(1);
Begin
WEB = Coalesce((Select First 1 R.WEB From TbRemessa R Where R.Numero = New.Remessa),'0');
IF (COALESCE(WEB,'0') = '1' ) THEN
Begin
/* ESTA TRIGGER SO SERA PROCESSADA NAS NOVAS REMESSAS (GCWEB) */
IF ( COALESCE(OLD.FAMILIA_CODIGO,0) = 0 ) THEN
BEGIN
/* 2 - EM PRODUCAO ; 3 - PRODUZIDO */
IF ( OLD.SITUACAO = 2 AND NEW.SITUACAO = 3 AND NEW.situacao <> 6) THEN
BEGIN
TALAO_PRODUTO_DESCRICAO = '';
SELECT
P.DESCRICAO
FROM
TBPRODUTO P
WHERE
P.CODIGO = NEW.PRODUTO_CODIGO
INTO
TALAO_PRODUTO_DESCRICAO
;
UM_ALTERNATIVA = (SELECT FIRST 1 IIF((TRIM(F.UNIDADEMEDIDA_ALTERNATIVO)='') OR F.UNIDADEMEDIDA_ALTERNATIVO IS NULL,'0','1')
FROM TBFAMILIA F
WHERE F.CODIGO = (SELECT FIRST 1 FAMILIA_CODIGO
FROM TBPRODUTO P
WHERE P.CODIGO = OLD.PRODUTO_CODIGO));
/* Guarda os valores do aproveitamento */
DADOS_APROVEITAMENTO = (SELECT FIRST 1
LPAD(COALESCE(V.QUANTIDADE,0),20) ||
LPAD(COALESCE(V.QUANTIDADE_ALTERNATIVA,0),20)
FROM
RDB$DATABASE
LEFT JOIN
TBREMESSA_TALAO_VINCULO V ON
V.REMESSA_TALAO_DETALHE_ID = NEW.CONTROLE
AND V.STATUS = '0');
QUANTIDADE_APROVEIT = CAST(SUBSTRING(DADOS_APROVEITAMENTO FROM 1 FOR 20) AS NUMERIC(15,4));
QUANTIDADE_APROVEIT_ALTERN = CAST(SUBSTRING(DADOS_APROVEITAMENTO FROM 21 FOR 20) AS NUMERIC(15,4));
/* Guarda os valores produzidos */
QUANTIDADE_PRODUCAO = OLD.QUANTIDADE_PRODUCAO_TMP + QUANTIDADE_APROVEIT;
QUANTIDADE_PRODUCAO_ALTERN = OLD.QUANTIDADE_ALTERN_PRODUCAO_TMP + QUANTIDADE_APROVEIT_ALTERN;
/* Zera as quantidades temporarias */
-- NEW.QUANTIDADE_PRODUCAO_TMP = 0;
-- NEW.QUANTIDADE_ALTERN_PRODUCAO_TMP = 0;
/* VERIFICA SE A FAMILIA DO PRODUTO TEM UNIDADE DE MEDIDA ALTERNATIVA CONFIGURADA */
IF (UM_ALTERNATIVA = '1') THEN
BEGIN
/* VERIFICA SE QUANTIDADE ALTERNATIVA TEMPORARIA PRODUZIDA ESTA MAIOR QUE ZERO */
IF ( NOT ( QUANTIDADE_PRODUCAO_ALTERN > 0 ) ) THEN
BEGIN
EXCEPTION "..." 'FAMILIA DO PRODUTO ' || TALAO_PRODUTO_DESCRICAO || ' CONFIGURADA COM UNIDADE DE MEDIDA ALTERNATIVA. QUANTIDADE ALTERNATIVA DEVERA SER MAIOR QUE ZERO. OPERACAO CANCELADA! ';
END
END
/* VERIFICA SE QUANTIDADE PRODUZIDA TEMPORARIA ETA MAIOR QUE ZERO */
IF ( NOT (QUANTIDADE_PRODUCAO > 0) ) THEN
BEGIN
EXCEPTION "..." 'QUANTIDADE PRODUZIDA DEVERA SER MAIOR QUE ZERO NO PRODUTO ' || TALAO_PRODUTO_DESCRICAO || '. OPERACAO CANCELADA!';
END
/* Grava os valores produzidos*/
NEW.QUANTIDADE_PRODUCAO = QUANTIDADE_PRODUCAO;
NEW.QUANTIDADE_SALDO = QUANTIDADE_PRODUCAO;
NEW.QUANTIDADE_ALTERN_PRODUCAO = QUANTIDADE_PRODUCAO_ALTERN;
NEW.QUANTIDADE_ALTERN_SALDO = QUANTIDADE_PRODUCAO_ALTERN;
/* Grava data e hora de producao */
NEW.DATA_PRODUCAO = CURRENT_DATE;
NEW.HORA_PRODUCAO = CURRENT_TIME;
/* GERA SOBRA DE PRODUÇÃO*/
IF ( OLD.quantidade_sobra_tmp > 0) THEN
BEGIN
UPDATE OR INSERT INTO TBREVISAO (
ESTABELECIMENTO_ID,
PRODUTO_ID,
TAMANHO,
DATA_REVISAO,
OPERADOR_ID,
DATAHORA_COLETA,
PESO_LIQUIDO,
SALDO,
METRAGEM,
TALAO_ID,
NFE_ID,
OB
) VALUES(
OLD.ESTABELECIMENTO_CODIGO,
OLD.PRODUTO_CODIGO,
OLD.TAMANHO,
CURRENT_DATE,
OLD.OPERADOR,
CURRENT_TIMESTAMP,
OLD.QUANTIDADE_SOBRA_TMP,
OLD.QUANTIDADE_SOBRA_TMP,
OLD.QUANTIDADE_SOBRA_TMP,
OLD.CONTROLE ,
0,
0
) MATCHING (TALAO_ID);
END
NEW.quantidade_sobra = OLD.QUANTIDADE_SOBRA_TMP;
/* ATUALIZA O STATUS PARA UTILIZADO DO APROVEITAMENTO */
UPDATE TBREMESSA_TALAO_VINCULO V SET
V.STATUS = '1'
WHERE V.REMESSA_TALAO_DETALHE_ID = NEW.CONTROLE;
END
END
END
END
^
ALTER TRIGGER TTBPEDIDO_ITEM_PROC_B0U_03
AS
DECLARE VARIABLE REMESSA_COMPONENTE CHAR(1) ;
DECLARE VARIABLE LOCALIZACAO_ID INTEGER ;
DECLARE VARIABLE ESTOQUE_ID INTEGER ;
DECLARE VARIABLE alternativa INTEGER ;
DECLARE VARIABLE OPERACAO_ENTRADA VARCHAR(10) ;
DECLARE VARIABLE CCUSTO VARCHAR(10);
DECLARE VARIABLE RETORNO_SP VARCHAR(500);
Declare variable WEB Char(1);
Begin
WEB = Coalesce((Select First 1 R.WEB From TbRemessa R Where R.Numero = New.Remessa),'0');
IF (COALESCE(WEB,'0') = '1' ) THEN
Begin
/* ESTA TRIGGER SO SERA PROCESSADA NAS NOVAS REMESSAS (GCWEB) */
IF ( COALESCE(OLD.FAMILIA_CODIGO,0) = 0 ) THEN
BEGIN
/* 3 - PRODUZIDO */
IF ( OLD.SITUACAO = 2 AND NEW.SITUACAO = 3 ) THEN
BEGIN
NEW.DATA_PRODUCAO = (SELECT FIRST 1 T.DATA_PRODUCAO
FROM TBTURNO T
WHERE T.TURNO_CORRENTE = '1');
IF ( NOT (NEW.QUANTIDADE_PRODUCAO > 0) ) THEN
BEGIN
EXCEPTION "..." 'HA ITENS COM QUANTIDADE PRODUZIDA IGUAL A ZERO . OPERACAO CANCELADA! '||
' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
END
/* Guarda o tipo da remessa ( '1' = Componente ) */
REMESSA_COMPONENTE = (SELECT FIRST 1 COMPONENTE FROM VWREMESSA WHERE REMESSA_ID = NEW.REMESSA);
/* VERIFICA SE A REMESSA EH DE COMPONENTE */
IF ( :REMESSA_COMPONENTE = '1' ) THEN
BEGIN
/* GUARDA A LOCALIZACAO DE PROCESSO (WIP) */
LOCALIZACAO_ID = COALESCE((SELECT FIRST 1 F.LOCALIZACAO_PROCESSO
FROM TBPRODUTO P, TBFAMILIA_FICHA F
WHERE F.FAMILIA_CODIGO = P.FAMILIA_CODIGO
AND F.ESTABELECIMENTO_CODIGO = NEW.ESTABELECIMENTO_CODIGO
AND P.CODIGO = NEW.PRODUTO_CODIGO),0);
/* VERIFICA SE A LOCALIZACAO DE PROCESSO ESTA CONFIGURADA */
IF ( LOCALIZACAO_ID = 0 ) THEN
BEGIN
EXCEPTION "..." 'FAMILIA DO PRODUTO SEM LOCALIZACAO DE PROCESSO (WIP) DEFINIDA. ID PRODUTO: ' || NEW.PRODUTO_CODIGO || '. OPERACAO CANCELADA! '||
' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
END
/* SIGLA DA OPERACAO DE ENTRADA NO ESTOQUE WORK IN PROCESS ENTRADA */
OPERACAO_ENTRADA = 'WPE';
END
ELSE
BEGIN
/* GUARDA A LOCALIZACAO PADRAO */
LOCALIZACAO_ID = COALESCE((SELECT FIRST 1 P.LOCALIZACAO_CODIGO
FROM TBPRODUTO P
WHERE P.CODIGO = NEW.PRODUTO_CODIGO),0);
/* VERIFICA SE A LOCALIZACAO PADRAO ESTA CONFIGURADA */
IF ( LOCALIZACAO_ID = 0 ) THEN
BEGIN
EXCEPTION "..." 'PRODUTO SEM LOCALIZACAO PADRAO DEFINIDA. CÓD. PRODUTO: ' || NEW.PRODUTO_CODIGO || '. OPERACAO CANCELADA! '||
' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
END
/* SIGLA DA OPERACAO DE ENTRADA NO ESTOQUE PADRAO */
OPERACAO_ENTRADA = (SELECT FIRST 1 VALOR_EXT FROM TBCONTROLE_N WHERE ID = 30);
END
--Entrada no Estoque
ESTOQUE_ID = COALESCE((SELECT GEN_ID(GTBESTOQUE_TRANSACAO_ITEM, 1) FROM RDB$DATABASE),0);
NEW.ESTOQUE_ID = :ESTOQUE_ID;
CCUSTO = (SELECT FIRST 1 U.CCUSTO
FROM TBUP U
WHERE U.ID = (SELECT FIRST 1 T.UP_ID
FROM VWREMESSA_TALAO T
WHERE T.REMESSA_ID = NEW.REMESSA
AND T.REMESSA_TALAO_ID = NEW.REMESSA_ACUMULADO_CONTROLE));
NEW.QUANTIDADE_PRODUCAO = CAST(NEW.QUANTIDADE_PRODUCAO AS NUMERIC(15,4));
NEW.LOCALIZACAO_CODIGO = :LOCALIZACAO_ID;
EXECUTE PROCEDURE SPU_ESTOQUE_SALDO4 (
NEW.ESTABELECIMENTO_CODIGO,
:LOCALIZACAO_ID,
NEW.PRODUTO_CODIGO,
'E', /* E = ENTRADA NO ESTOQUE */
NEW.DATA_PRODUCAO,
NEW.QUANTIDADE_PRODUCAO,
IIF(NEW.TAMANHO = 1,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO = 2,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO = 3,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO = 4,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO = 5,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO = 6,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO = 7,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO = 8,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO = 9,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO =10,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO =11,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO =12,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO =13,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO =14,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO =15,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO =16,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO =17,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO =18,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO =19,NEW.QUANTIDADE_PRODUCAO,0),
IIF(NEW.TAMANHO =20,NEW.QUANTIDADE_PRODUCAO,0),
:ESTOQUE_ID,
NEW.REMESSA,
0,
0,
:OPERACAO_ENTRADA,
NEW.CONTROLE,
0,
0,
0,
0,
Current_Date,
0,
:CCUSTO,
'ENTRADA POR REMESSA DE PRODUCAO',
'0',
0,
0,
0,
0
);
END else
begin
IF ( OLD.SITUACAO = 3 AND NEW.SITUACAO = 2 ) THEN
BEGIN
DELETE FROM TbEstoque_Transacao_Item
WHERE CONTROLE = OLD.estoque_id
AND ESTABELECIMENTO_CODIGO = OLD.estabelecimento_codigo
AND PRODUTO_CODIGO = OLD.produto_codigo;
END
END
END
END
END
^
ALTER TRIGGER TTBPEDIDO_ITEM_PROC_B3U_01
AS
Begin
if ( OLD.SITUACAO < 3 AND NEW.SITUACAO = 3 AND NEW.DATA_PRODUCAO IS NULL ) then
BEGIN
NEW.DATA_PRODUCAO = (SELECT FIRST 1 T.DATA_PRODUCAO FROM TBTURNO T WHERE T.TURNO_CORRENTE = '1');
END
if ((old.DATA_PRODUCAO IS NULL) and (new.data_producao is not null)) Then
begin
NEW.turno_producao = (SELECT FIRST 1 T.CODIGO FROM TBTURNO T WHERE T.TURNO_CORRENTE = '1');
NEW.turno = (SELECT FIRST 1 T.CODIGO FROM TBTURNO T WHERE T.TURNO_CORRENTE = '1');
end
if (NEW.DATA_PRODUCAO IS NULL and NEW.STATUS_PRODUCAO = '1') Then
Begin
NEW.STATUS_PRODUCAO = '0';
End else
Begin
NEW.STATUS_PRODUCAO = '1';
End
if (NEW.DATA_EXPEDICAO IS NULL and NEW.COLETA_ID <> 0) Then
Begin
NEW.COLETA_ID = 0;
End
if (OLD.COLETA_ID > 0 AND NEW.COLETA_ID > 0 AND NEW.COLETA_ID <> OLD.COLETA_ID and OLD.DATA_EXPEDICAO IS NOT NULL) Then
Begin
Exception "..." 'Talão já coletado, operação abortada! ID da coleta: '||OLD.COLETA_ID||'......................................................................................................................................................................................................................................................';
End
End
^
ALTER TRIGGER TTBPEDIDO_ITEM_PROCESSADO_B7U
AS
declare variable OLD_TALAO_ID INTEGER;
declare variable OLD_TALAO_STATUS INTEGER;
declare variable TALAO_ID INTEGER;
declare variable NEW_TALAO_ID INTEGER;
declare variable NEW_ESTABELECIMENTO_ID INTEGER;
declare variable NEW_REMESSA_ID INTEGER;
declare variable NEW_LOCALIZACAO_ID INTEGER;
declare variable NEW_PRODUTO_ID INTEGER;
declare variable NEW_MODELO_ID INTEGER;
declare variable NEW_TAMANHO INTEGER;
declare variable NEW_QUANTIDADE NUMERIC(15,4);
declare variable NEW_QUANTIDADE_ALTERNATIVA NUMERIC(15,4);
declare variable NEW_GP_ID INTEGER;
declare variable NEW_UP_ID INTEGER;
declare variable NEW_ESTACAO INTEGER;
declare variable NEW_DENSIDADE NUMERIC(15,4);
declare variable NEW_ESPESSURA NUMERIC(15,4);
declare variable NEW_STATUS INTEGER;
declare variable NEW_C_ESTABELECIMENTO_ID INTEGER;
declare variable NEW_C_FAMILIA_ID INTEGER;
declare variable NEW_C_REMESSA INTEGER;
declare variable NEW_C_TALAO INTEGER;
declare variable NEW_C_PRODUTO_ID INTEGER;
declare variable NEW_C_TAMANHO INTEGER;
declare variable NEW_C_LOCALIZACAO_ID INTEGER;
declare variable NEW_C_DENSIDADE NUMERIC(15,4);
declare variable NEW_C_ESPESSURA NUMERIC(15,4);
declare variable NEW_C_COR_ID INTEGER;
declare variable NEW_C_ESTEIRA_ID INTEGER;
declare variable NEW_C_SETOR_ID INTEGER;
declare variable NEW_C_FATOR_CONVERSAO NUMERIC(15,4);
declare variable NEW_C_QUANTIDADE NUMERIC(15,4);
declare variable NEW_C_CONSUMO_ML NUMERIC(15,4);
declare variable NEW_C_CONSUMO_KG NUMERIC(15,4);
declare variable NEW_C_QUANTIDADE_CONFERENCIA NUMERIC(15,4);
declare variable NEW_C_DATAHORA_CONFERENCIA NUMERIC(15,4);
declare variable NEW_C_REQUISICAO_ID INTEGER;
declare variable NEW_C_DATA DATE;
declare variable NEW_C_CCUSTO VARCHAR(12);
declare variable NEW_C_QUEBRA CHAR(1);
declare variable NEW_C_SEGURANCA NUMERIC(15,4);
declare variable NEW_C_TALAO_DETALHE_ID INTEGER;
declare variable NEW_C_SALDO NUMERIC(15,4);
declare variable NEW_C_CONTROLE INTEGER;
declare variable NEW_C_QUANTIDADE_CONFERENCIA_ML NUMERIC(15,4);
declare variable NEW_C_SALDO_ML NUMERIC(15,4);
declare variable NEW_C_COMPONENTE CHAR(1);
declare variable NEW_C_QUANTIDADE_SOBRA NUMERIC(15,4);
declare variable NEW_C_SALDO_BAIXAR NUMERIC(15,4);
declare variable NEW_C_QUANTIDADE_NECES NUMERIC(15,4);
declare variable NEW_C_QUANTIDADE_NECES_ALTERN NUMERIC(15,4);
BEGIN
IF ( OLD.REMESSA_ACUMULADO_CONTROLE <> NEW.REMESSA_ACUMULADO_CONTROLE ) THEN
BEGIN
SELECT FIRST 1 ID, STATUS
FROM VWREMESSA_TALAO T
WHERE T.REMESSA_ID = OLD.REMESSA
AND T.REMESSA_TALAO_ID = OLD.REMESSA_ACUMULADO_CONTROLE
INTO
:OLD_TALAO_ID,
:OLD_TALAO_STATUS;
IF ( OLD_TALAO_STATUS < 3 ) THEN
BEGIN
DELETE FROM TBREMESSA_TALAO_VINCULO V WHERE V.TALAO_ID = :OLD_TALAO_ID;
UPDATE VWREMESSA_TALAO_DETALHE D
SET D.QUANTIDADE_PRODUCAO_TMP = 0,
D.QUANTIDADE_ALTERN_PRODUCAO_TMP = 0,
D.QUANTIDADE_SOBRA_TMP = 0
WHERE D.REMESSA_ID = OLD.REMESSA
AND D.REMESSA_TALAO_ID = OLD.REMESSA_ACUMULADO_CONTROLE;
END
TALAO_ID = COALESCE((SELECT FIRST 1 ID
FROM VWREMESSA_TALAO T
WHERE T.REMESSA_ID = NEW.REMESSA
AND T.REMESSA_TALAO_ID = NEW.REMESSA_ACUMULADO_CONTROLE),0);
IF ( TALAO_ID = 0 ) THEN
BEGIN
SELECT FIRST 1
ESTABELECIMENTO_ID,
REMESSA_ID,
LOCALIZACAO_ID,
PRODUTO_ID,
MODELO_ID,
TAMANHO,
QUANTIDADE,
QUANTIDADE_ALTERNATIVA,
GP_ID,
UP_ID,
ESTACAO,
DENSIDADE,
ESPESSURA,
STATUS
FROM VWREMESSA_TALAO T
WHERE T.REMESSA_ID = NEW.REMESSA
AND T.REMESSA_TALAO_ID = OLD.REMESSA_ACUMULADO_CONTROLE
INTO
:NEW_ESTABELECIMENTO_ID ,
:NEW_REMESSA_ID ,
:NEW_LOCALIZACAO_ID ,
:NEW_PRODUTO_ID ,
:NEW_MODELO_ID ,
:NEW_TAMANHO ,
:NEW_QUANTIDADE ,
:NEW_QUANTIDADE_ALTERNATIVA,
:NEW_GP_ID ,
:NEW_UP_ID ,
:NEW_ESTACAO ,
:NEW_DENSIDADE ,
:NEW_ESPESSURA ,
:NEW_STATUS ;
NEW_MODELO_ID = COALESCE((SELECT FIRST 1 P.MODELO_CODIGO FROM TBPRODUTO P WHERE P.CODIGO = NEW.PRODUTO_CODIGO),NEW_MODELO_ID);
INSERT INTO VWREMESSA_TALAO (
ESTABELECIMENTO_ID,
REMESSA_ID,
REMESSA_TALAO_ID,
LOCALIZACAO_ID,
PRODUTO_ID,
MODELO_ID,
TAMANHO,
QUANTIDADE,
QUANTIDADE_ALTERNATIVA,
GP_ID,
UP_ID,
ESTACAO,
DENSIDADE,
ESPESSURA,
STATUS
)VALUES (
:NEW_ESTABELECIMENTO_ID ,
:NEW_REMESSA_ID ,
NEW.REMESSA_ACUMULADO_CONTROLE,
:NEW_LOCALIZACAO_ID ,
:NEW_PRODUTO_ID ,
:NEW_MODELO_ID ,
:NEW_TAMANHO ,
NEW.QUANTIDADE_PEDIDO ,
NEW.QUANTIDADE_ALTERN ,
:NEW_GP_ID ,
:NEW_UP_ID ,
:NEW_ESTACAO ,
:NEW_DENSIDADE ,
:NEW_ESPESSURA ,
:NEW_STATUS
) returning ID into :NEW_TALAO_ID;
EXECUTE PROCEDURE SPI_PROGRAMACAO2(
:NEW_ESTABELECIMENTO_ID,
'A',
:NEW_GP_ID,
:NEW_UP_ID,
:NEW_ESTACAO,
:NEW_TALAO_ID,
:NEW_PRODUTO_ID,
:NEW_TAMANHO,
NEW.QUANTIDADE_PEDIDO,
1,
:NEW_REMESSA_ID,
CURRENT_DATE
);
FOR
SELECT
ESTABELECIMENTO_ID ,
FAMILIA_ID ,
REMESSA ,
TALAO ,
PRODUTO_ID ,
TAMANHO ,
LOCALIZACAO_ID ,
DENSIDADE ,
ESPESSURA ,
COR_ID ,
ESTEIRA_ID ,
SETOR_ID ,
FATOR_CONVERSAO ,
QUANTIDADE ,
CONSUMO_ML ,
CONSUMO_KG ,
QUANTIDADE_CONFERENCIA ,
DATAHORA_CONFERENCIA ,
REQUISICAO_ID ,
DATA ,
CCUSTO ,
QUEBRA ,
SEGURANCA ,
TALAO_DETALHE_ID ,
CONTROLE ,
QUANTIDADE_CONFERENCIA_ML,
COMPONENTE ,
QUANTIDADE_SOBRA ,
SALDO_BAIXAR ,
QUANTIDADE_NECES ,
QUANTIDADE_NECES_ALTERN
FROM
TBREMESSA_CONSUMO C
WHERE
C.REMESSA = NEW.REMESSA
AND C.TALAO = OLD.REMESSA_ACUMULADO_CONTROLE
AND C.TALAO_DETALHE_ID = 0
INTO
:NEW_C_ESTABELECIMENTO_ID ,
:NEW_C_FAMILIA_ID ,
:NEW_C_REMESSA ,
:NEW_C_TALAO ,
:NEW_C_PRODUTO_ID ,
:NEW_C_TAMANHO ,
:NEW_C_LOCALIZACAO_ID ,
:NEW_C_DENSIDADE ,
:NEW_C_ESPESSURA ,
:NEW_C_COR_ID ,
:NEW_C_ESTEIRA_ID ,
:NEW_C_SETOR_ID ,
:NEW_C_FATOR_CONVERSAO ,
:NEW_C_QUANTIDADE ,
:NEW_C_CONSUMO_ML ,
:NEW_C_CONSUMO_KG ,
:NEW_C_QUANTIDADE_CONFERENCIA ,
:NEW_C_DATAHORA_CONFERENCIA ,
:NEW_C_REQUISICAO_ID ,
:NEW_C_DATA ,
:NEW_C_CCUSTO ,
:NEW_C_QUEBRA ,
:NEW_C_SEGURANCA ,
:NEW_C_TALAO_DETALHE_ID ,
:NEW_C_CONTROLE ,
:NEW_C_QUANTIDADE_CONFERENCIA_ML,
:NEW_C_COMPONENTE ,
:NEW_C_QUANTIDADE_SOBRA ,
:NEW_C_SALDO_BAIXAR ,
:NEW_C_QUANTIDADE_NECES ,
:NEW_C_QUANTIDADE_NECES_ALTERN
DO
BEGIN
INSERT INTO TBREMESSA_CONSUMO (
ESTABELECIMENTO_ID,
FAMILIA_ID,
REMESSA,
TALAO,
PRODUTO_ID,
TAMANHO,
LOCALIZACAO_ID,
DENSIDADE,
ESPESSURA,
COR_ID,
ESTEIRA_ID,
SETOR_ID,
FATOR_CONVERSAO,
QUANTIDADE,
CONSUMO_ML,
CONSUMO_KG,
QUANTIDADE_CONFERENCIA,
DATAHORA_CONFERENCIA,
REQUISICAO_ID,
DATA,
CCUSTO,
QUEBRA,
SEGURANCA,
TALAO_DETALHE_ID,
CONTROLE,
QUANTIDADE_CONFERENCIA_ML,
COMPONENTE,
QUANTIDADE_SOBRA,
SALDO_BAIXAR,
QUANTIDADE_NECES,
QUANTIDADE_NECES_ALTERN
) VALUES (
:NEW_C_ESTABELECIMENTO_ID ,
:NEW_C_FAMILIA_ID ,
:NEW_C_REMESSA ,
NEW.REMESSA_ACUMULADO_CONTROLE ,
:NEW_C_PRODUTO_ID ,
:NEW_C_TAMANHO ,
:NEW_C_LOCALIZACAO_ID ,
:NEW_C_DENSIDADE ,
:NEW_C_ESPESSURA ,
:NEW_C_COR_ID ,
:NEW_C_ESTEIRA_ID ,
:NEW_C_SETOR_ID ,
:NEW_C_FATOR_CONVERSAO ,
:NEW_C_QUANTIDADE ,
:NEW_C_CONSUMO_ML ,
:NEW_C_CONSUMO_KG ,
:NEW_C_QUANTIDADE_CONFERENCIA ,
:NEW_C_DATAHORA_CONFERENCIA ,
:NEW_C_REQUISICAO_ID ,
:NEW_C_DATA ,
:NEW_C_CCUSTO ,
:NEW_C_QUEBRA ,
:NEW_C_SEGURANCA ,
:NEW_C_TALAO_DETALHE_ID ,
:NEW_C_CONTROLE ,
:NEW_C_QUANTIDADE_CONFERENCIA_ML,
:NEW_C_COMPONENTE ,
:NEW_C_QUANTIDADE_SOBRA ,
:NEW_C_SALDO_BAIXAR ,
:NEW_C_QUANTIDADE_NECES ,
:NEW_C_QUANTIDADE_NECES_ALTERN
);
END
END
ELSE
BEGIN
UPDATE VWREMESSA_TALAO T
SET T.QUANTIDADE = T.QUANTIDADE + NEW.QUANTIDADE_PEDIDO,
T.QUANTIDADE_ALTERNATIVA = T.QUANTIDADE_ALTERNATIVA + NEW.QUANTIDADE_ALTERN
WHERE T.ID = :TALAO_ID;
END
UPDATE VWREMESSA_CONSUMO C
SET C.REMESSA_TALAO_ID = NEW.REMESSA_ACUMULADO_CONTROLE
WHERE C.REMESSA_TALAO_DETALHE_ID = OLD.CONTROLE;
UPDATE TBREMESSA_CONSUMO_VINCULO V
SET V.REMESSA_TALAO_ID = NEW.REMESSA_ACUMULADO_CONTROLE
WHERE V.REMESSA_TALAO_DETALHE_ID = OLD.CONTROLE;
NEW.TALAO_DESMEMBRAMENTO = OLD.REMESSA_ACUMULADO_CONTROLE;
EXECUTE PROCEDURE SPI_HISTORICO (
'TBREMESSA',
NEW.REMESSA,
'DETALHAMENTO: ' || NEW.CONTROLE || ' DESMEMBRADO DO TALAO: ' || OLD.REMESSA_ACUMULADO_CONTROLE || ' PARA: ' || NEW.REMESSA_ACUMULADO_CONTROLE
);
-- EXECUTE PROCEDURE SPI_EMAIL('emersoncoelho@delfa.com.br','Desmembramento Realizado REMESSA: ' || COALESCE((SELECT FIRST 1 REMESSA FROM VWREMESSA R WHERE R.REMESSA_ID = NEW.REMESSA),'') || ' PARA: ' || NEW.REMESSA_ACUMULADO_CONTROLE,'
-- REMESSA: ' || COALESCE((SELECT FIRST 1 REMESSA FROM VWREMESSA R WHERE R.REMESSA_ID = NEW.REMESSA),'') || '
-- REMESSA_ID: ' || NEW.REMESSA || '
-- DETALHAMENTO: ' || NEW.CONTROLE || ' DESMEMBRADO DO TALAO: ' || OLD.REMESSA_ACUMULADO_CONTROLE || ' PARA: ' || NEW.REMESSA_ACUMULADO_CONTROLE
-- );
END
END
^
ALTER TRIGGER TTBPEDIDO_ITEM_PROCESSADO_B8U
AS
declare variable WEB VARCHAR(10);
declare variable TALAO_ID INTEGER;
declare variable TALAO_UP_ID INTEGER;
declare variable TALAO_ESTACAO INTEGER;
declare variable TALAO_LOCALIZACAO_ID INTEGER;
declare variable TALAO_ESTOQUE_ID INTEGER;
declare variable PROGRAMACAO_STATUS VARCHAR(10);
declare variable OPERACAO_ENTRADA VARCHAR(255);
declare variable CCUSTO VARCHAR(10);
declare variable CONSUMO_ID INTEGER;
declare variable CONSUMO_PRODUTO_ID INTEGER;
declare variable CONSUMO_TAMANHO INTEGER;
declare variable CONSUMO_FATOR_UNIDADE NUMERIC(15,5);
declare variable CONSUMO_LOCALIZACAO_ID INTEGER;
declare variable CONSUMO_ESTOQUE_ID INTEGER;
declare variable CONSUMO_QUANTIDADE NUMERIC(15,5);
declare variable CONSUMO_QUANTIDADE_SALDO NUMERIC(15,5);
declare variable CONSUMO_UM VARCHAR(10);
declare variable CONSUMO_FAMILIA_ID INTEGER;
declare variable CONSUMO_PERMITE_FRACAO VARCHAR(5);
declare variable ULTIMO_TALAO BOOLEAN;
begin
SELECT FIRST 1
COALESCE(WEB,'0')
FROM VWREMESSA R
WHERE R.REMESSA_ID = NEW.REMESSA
INTO WEB;
IF ( OLD.SITUACAO < 3 AND NEW.SITUACAO = 3 AND WEB = '2' ) THEN
BEGIN
SELECT FIRST 1
T.ID,
T.UP_ID,
T.ESTACAO
FROM VWREMESSA_TALAO T
WHERE T.REMESSA_ID = NEW.REMESSA
AND T.REMESSA_TALAO_ID = NEW.REMESSA_ACUMULADO_CONTROLE
INTO TALAO_ID,
TALAO_UP_ID,
TALAO_ESTACAO;
/* VERIFICA SE EH O ULTIMO TALAO DA SEQUENCIA */
ULTIMO_TALAO = IIF(COALESCE((
SELECT COUNT(D.ID)
FROM VWREMESSA_TALAO_DETALHE D
WHERE D.REMESSA_ID = NEW.REMESSA
AND D.REMESSA_TALAO_ID = NEW.REMESSA_ACUMULADO_CONTROLE
AND D.STATUS < 3
),0) = 1,TRUE, FALSE);
SELECT STATUS
FROM TBPROGRAMACAO P
WHERE P.TABELA_ID = :TALAO_ID
AND P.TIPO = 'A'
INTO PROGRAMACAO_STATUS;
IF ( PROGRAMACAO_STATUS <> '2' ) THEN
BEGIN
EXCEPTION "..." 'O talão não está em produção. Operação cancelada.';
END
/* SE FOR O ULTIMO TALAO, ATUALIZA O TALAO ACUMULADO PARA PRODUZIDO E A PROGRAMACAO PARA FINALIZADO */
IF ( ULTIMO_TALAO ) THEN
BEGIN
UPDATE VWREMESSA_TALAO T
SET T.STATUS = 2
WHERE T.ID = :TALAO_ID;
UPDATE TBPROGRAMACAO P
SET P.STATUS = '3'
WHERE P.TABELA_ID = :TALAO_ID
AND P.TIPO = 'A';
UPDATE TBUP_ESTACAO
SET TALAO_ID = :TALAO_ID,
INCREMENTO = 1
WHERE (UP_ID = :TALAO_UP_ID) AND (ID = :TALAO_ESTACAO);
EXECUTE PROCEDURE SPU_PROGRAMACAO_PRODUZIDO1(
NEW.ESTABELECIMENTO_CODIGO,
'A',
:TALAO_ID
);
END
/* CAPTURA A LOCALIZACAO DE ENTRADA NO ESTOQUE */
TALAO_LOCALIZACAO_ID = COALESCE(( SELECT FIRST 1 P.LOCALIZACAO_CODIGO FROM TBPRODUTO P WHERE P.CODIGO = NEW.PRODUTO_CODIGO ),0);
/* CAPTURA A OPERACAO DE ESTOQUE */
OPERACAO_ENTRADA = (SELECT FIRST 1 VALOR_EXT FROM TBCONTROLE_N WHERE ID = 30);
/* CAPTURA O CCUSTO DA TRANSACAO */
CCUSTO = (SELECT FIRST 1 U.CCUSTO
FROM TBUP U
WHERE U.ID = (SELECT FIRST 1 T.UP_ID
FROM VWREMESSA_TALAO T
WHERE T.REMESSA_ID = NEW.REMESSA
AND T.REMESSA_TALAO_ID = NEW.REMESSA_ACUMULADO_CONTROLE));
/* GERA O ID DA TRANSACAO DE ENTRADA NO ESTOQUE */
TALAO_ESTOQUE_ID = COALESCE((SELECT GEN_ID(GTBESTOQUE_TRANSACAO_ITEM, 1) FROM RDB$DATABASE),0);
/* GUARDA DATA E HORA DE PRODUCAO */
NEW.HORA_PRODUCAO = CURRENT_TIMESTAMP;
/* GUARDA O ID DA TRANSACAO DE ESTOQUE NO TALAO DETALHADO */
NEW.ESTOQUE_ID = :TALAO_ESTOQUE_ID;
/* ATUALIZA A QUANTIDADE PRODUZIDA NO TALAO DETALHADO */
NEW.QUANTIDADE_PRODUCAO = NEW.QUANTIDADE_PEDIDO;
/* REGISTRA A ENTRADA NO ESTOQUE DO TALAO DETALHADO */
EXECUTE PROCEDURE SPI_ESTOQUE_TRANSACAO(
'TBPEDIDO_ITEM_PROCESSADO',
0,
NEW.CONTROLE,
NEW.ESTABELECIMENTO_CODIGO,
:TALAO_LOCALIZACAO_ID,
NEW.DATA_PRODUCAO,
NEW.PRODUTO_CODIGO,
NEW.TAMANHO,
NEW.QUANTIDADE_PRODUCAO,
'E',
OPERACAO_ENTRADA,
'0',
:CCUSTO,
'WEB22180 - ENTRADA POR REMESSA DE PRODUCAO',
NEW.ESTOQUE_ID
);
/* REALIZA AS BAIXAS DE CONSUMO */
FOR
SELECT
C.ID,
C.PRODUTO_ID,
C.TAMANHO,
C.FATOR_UNIDADE,
C.QUANTIDADE_SALDO,
P.UNIDADEMEDIDA_SIGLA,
P.FAMILIA_CODIGO
FROM
VWREMESSA_CONSUMO C,
TBPRODUTO P
WHERE
P.CODIGO = C.PRODUTO_ID
AND C.REMESSA_ID = NEW.REMESSA
AND C.REMESSA_TALAO_ID = NEW.REMESSA_ACUMULADO_CONTROLE
AND C.STATUS = '0'
AND C.COMPONENTE = '0'
INTO
CONSUMO_ID,
CONSUMO_PRODUTO_ID,
CONSUMO_TAMANHO,
CONSUMO_FATOR_UNIDADE,
CONSUMO_QUANTIDADE_SALDO,
CONSUMO_UM,
CONSUMO_FAMILIA_ID
DO
BEGIN
/* VERIFICA SE O PRODUTO PERMITE BAIXA FRACIONADA */
CONSUMO_PERMITE_FRACAO = COALESCE((
SELECT U.PODE_FRACIONAR
FROM TbUnidadeMedida U
WHERE U.SIGLA = :CONSUMO_UM),'N');
/* GERA O ID DA TRANSACAO DE SAIDA DO CONSUMO */
CONSUMO_ESTOQUE_ID = COALESCE((SELECT GEN_ID(GTBESTOQUE_TRANSACAO_ITEM, 1) FROM RDB$DATABASE),0);
/* REALIZA O CALCULO DE CONSUMO */
/*
OBS1:
SE FOR O ULTIMO TALAO DETALHADO A SER PRODUZIDO A BAIXA DEVE SER IGUAL AO RESTANTE A SER CONSUMIDO,
SENAO, DEVERA SER CALCULDO BASEADO NA QUANTIDADE DO TALAO DETALHADO.
OBS2:
SE O PRODUTO NAO PERMITIR QUANTIDADE FRANCIONADA, O VALOR SERA ARREDONDADO PARA CIMA.
*/
CONSUMO_QUANTIDADE = IIF(ULTIMO_TALAO,COALESCE(CONSUMO_QUANTIDADE_SALDO,0), COALESCE(NEW.QUANTIDADE_PRODUCAO * CONSUMO_FATOR_UNIDADE,0));
CONSUMO_QUANTIDADE = IIF(CONSUMO_PERMITE_FRACAO = 'S',CONSUMO_QUANTIDADE,FN_ARRENDONDAR_PARA_CIMA(CONSUMO_QUANTIDADE));
IF ( CONSUMO_QUANTIDADE <= 0 ) THEN
BEGIN
EXCEPTION "..." 'Quantidade consumida deverá ser maior que zero. Produto: ' || CONSUMO_PRODUTO_ID || ' Operação cancelada.';
END
/* VERIFICA SE O CONSUMO ESTÁ MAIOR QUE O PROJETADO. */
/*
OBS: ESSE ERRO SO DEVE DISPARAR SE HOUVER PROBLEMA COM O FATOR UNIDADE OU SE O PRODUTO NAO PERMITIR FRACAO PARA CONSUMO
*/
IF ( CONSUMO_QUANTIDADE > CONSUMO_QUANTIDADE_SALDO ) THEN
BEGIN
EXCEPTION "..." 'Quantidade consumida não deve ser maior que o saldo da projeção. Produto: ' || CONSUMO_PRODUTO_ID || ' Operação cancelada.';
END
/* ATUALIZA A QUANTIDADE CONSUMIDA */
UPDATE VWREMESSA_CONSUMO C
SET C.QUANTIDADE_CONSUMO = COALESCE(C.QUANTIDADE_CONSUMO,0) + :CONSUMO_QUANTIDADE,
C.ESTOQUE_ID = :CONSUMO_ESTOQUE_ID
WHERE C.ID = :CONSUMO_ID;
/* GUARDA A LOCALIZACAO DE PROCESSO (WIP) */
CONSUMO_LOCALIZACAO_ID = COALESCE((
SELECT FIRST 1 F.LOCALIZACAO_PROCESSO
FROM TBFAMILIA_FICHA F
WHERE F.FAMILIA_CODIGO = :CONSUMO_FAMILIA_ID
AND F.ESTABELECIMENTO_CODIGO = NEW.ESTABELECIMENTO_CODIGO),0);
/* VERIFICA SE A LOCALIZACAO DE PROCESSO ESTA CONFIGURADA */
IF ( CONSUMO_LOCALIZACAO_ID = 0 ) THEN
BEGIN
EXCEPTION "..." 'FAMILIA DO PRODUTO SEM LOCALIZACAO DE PROCESSO (WIP) DEFINIDA. ID PROD.' || CONSUMO_PRODUTO_ID || '. OPERACAO CANCELADA! ';
END
/* REALIZA A TRANSACAO DE SAIDA DO CONSUMO */
EXECUTE PROCEDURE SPI_ESTOQUE_TRANSACAO(
'TBREMESSA_CONSUMO',
2,
:CONSUMO_ID,
NEW.ESTABELECIMENTO_CODIGO,
:CONSUMO_LOCALIZACAO_ID,
NEW.DATA_PRODUCAO,
:CONSUMO_PRODUTO_ID,
:CONSUMO_TAMANHO,
:CONSUMO_QUANTIDADE,
'S',
'WPS',
'1',
:CCUSTO,
'WEB22180 - SAIDA POR PROJECAO DE CONSUMO DE REMESSA DE PRODUCAO',
:CONSUMO_ESTOQUE_ID
);
END
END
end
^
ALTER TRIGGER TTBPROGRAMACAO_B8U
AS
declare variable STATUS_DESCRICAO VARCHAR(20);
declare variable REMESSA VARCHAR(20);
declare variable REMESSA_TALAO_ID INTEGER;
begin
if(old.gp_id <> new.gp_id and new.status >= 2 AND NEW.TIPO = 'A')then
begin
STATUS_DESCRICAO = (CASE NEW.STATUS
WHEN '2' THEN 'EM PRODUCAO'
WHEN '3' THEN 'PRODUZIDO'
ELSE ''
END);
REMESSA = COALESCE((SELECT FIRST 1 R.REMESSA FROM VWREMESSA R WHERE R.REMESSA_ID = NEW.REMESSA_ID),'');
REMESSA_TALAO_ID = COALESCE((SELECT FIRST 1 T.REMESSA_TALAO_ID FROM VWREMESSA_TALAO T WHERE T.ID = NEW.TABELA_ID ),'');
EXCEPTION "..." 'ALTERACAO DE GRUPO DE PRODUCAO NAO PERMITIDA. O TALAO: [' || REMESSA || '/' || FN_LPAD(REMESSA_TALAO_ID,4,0) || '] ENCONTRA-SE "' || STATUS_DESCRICAO || '".';
end
end
^
ALTER TRIGGER TTBREMESSA_CONSUMO_B0U_03
AS
DECLARE VARIABLE REMESSA_COMPONENTE CHAR(1) ;
DECLARE VARIABLE LOCALIZACAO_ID INTEGER ;
DECLARE VARIABLE TABELA_ID INTEGER ;
DECLARE VARIABLE ESTOQUE_ID INTEGER ;
DECLARE VARIABLE OPERACAO_SAIDA VARCHAR(10) ;
DECLARE VARIABLE CCUSTO VARCHAR(10);
DECLARE VARIABLE USUARIO_ID INTEGER;
DECLARE VARIABLE VINCULO INTEGER;
declare variable VINCULO_QUANTIDADE INTEGER;
declare variable TALOES_PENDENTES VARCHAR(500);
Declare variable WEB Char(1);
DECLARE VARIABLE REQUISICAO CHAR(1);
Begin
WEB = Coalesce((Select First 1 R.WEB From TbRemessa R Where R.Numero = New.Remessa),'0');
IF (COALESCE(WEB,'0') = '1' ) THEN
Begin
/* ESTA TRIGGER SO SERA PROCESSADA NAS NOVAS REMESSAS (GCWEB) */
IF ( NEW.COMPONENTE = '1' OR NEW.COMPONENTE = '0' ) THEN
BEGIN
/* 1 - CONFERIDO */
IF ( OLD.CONFERENCIA = '0' AND NEW.CONFERENCIA = '1' AND NEW.QUANTIDADE_CONFERENCIA > 0) THEN
BEGIN
/* GUARDA O VALOR DE UM VINCULO D0 CONSUMO (SE HOUVER) */
VINCULO = COALESCE((
SELECT FIRST 1 V.ID
FROM TBREMESSA_CONSUMO_VINCULO V
WHERE V.CONSUMO_ID = NEW.ID
),0);
/* VERIFICA SE O CONSUMO TEM VINCULO */
IF( VINCULO > 0 ) THEN
BEGIN
/* GUARDA OS TALOES PENDETES DE PRODUCAO VINCULADOS A ESTE CONSUMO (SE HOUVER) */
TALOES_PENDENTES = (SELECT
CAST(LIST('[ ' || R.REMESSA || '/' || LPAD(D.REMESSA_TALAO_ID,4,'0') || ' (' ||
(CASE
D.STATUS
WHEN 1 THEN 'EM ABERTO'
WHEN 2 THEN 'EM PRODUCAO'
WHEN 3 THEN 'PRODUZIDO'
WHEN 6 THEN 'ENCERRADO'
ELSE 'INDEFINIDO' END) || ') ]',', ') AS VARCHAR(500))
FROM
TBREMESSA_CONSUMO_VINCULO V,
VWREMESSA_TALAO_DETALHE D,
VWREMESSA R
WHERE
V.CONSUMO_ID = NEW.ID
AND V.REMESSA_TALAO_DETALHE_ID = D.ID
AND V.REMESSA_ID = R.REMESSA_ID
AND D.STATUS IN ('1','2') /* EM ABERTO, EM PRODUCAO */);
/* VERIFICA SE HA TALOES VINCULADOS A ESTE CONSUMO QUE AINDA NAO FORAM PRODUZIDO */
IF ( TALOES_PENDENTES IS NOT NULL ) THEN
BEGIN
EXCEPTION "..." 'HA COMPONENTES DESTE TALAO QUE AINDA NAO FORAM PRODUZIDOS: ' || TALOES_PENDENTES || '. OPERACAO CANCELADA! '||
' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .';
END
END
/* VERIFICA SE EH PROJECAO DE COMPONENTE */
IF ( NEW.COMPONENTE = '1' ) THEN
BEGIN
/* GUARDA A LOCALIZACAO DE PROCESSO (WIP) */
LOCALIZACAO_ID = COALESCE((SELECT FIRST 1 F.LOCALIZACAO_PROCESSO
FROM TBPRODUTO P, TBFAMILIA_FICHA F
WHERE F.FAMILIA_CODIGO = P.FAMILIA_CODIGO
AND F.ESTABELECIMENTO_CODIGO = NEW.ESTABELECIMENTO_ID
AND P.CODIGO = NEW.PRODUTO_ID),0);
/* VERIFICA SE A LOCALIZACAO DE PROCESSO ESTA CONFIGURADA */
IF ( LOCALIZACAO_ID = 0 ) THEN
BEGIN
EXCEPTION "..." 'FAMILIA DO PRODUTO SEM LOCALIZACAO DE PROCESSO (WIP) DEFINIDA. ID PROD.' || NEW.PRODUTO_ID || '. OPERACAO CANCELADA! '||
' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
END
END
ELSE
BEGIN
VINCULO_QUANTIDADE = (SELECT COUNT(DISTINCT
CASE V.TIPO
WHEN 'R' THEN (SELECT FIRST 1 R.LOCALIZACAO_ENTRADA FROM TBREVISAO R WHERE R.ID = V.TABELA_ID)
WHEN 'D' THEN (SELECT FIRST 1 D.LOCALIZACAO_ID FROM VWREMESSA_TALAO_DETALHE D WHERE D.ID = V.TABELA_ID)
ELSE 'N#D' END)
FROM TBREMESSA_TALAO_VINCULO V
WHERE V.CONSUMO_ID = NEW.ID);
IF ( VINCULO_QUANTIDADE > 1 ) THEN
BEGIN
EXCEPTION "..." 'AS PECAS ALOCADAS, POSSUEM LOCALIZACOES DIFERENTES. OPERACAO CANCELADA!';
END
ELSE
IF ( VINCULO_QUANTIDADE = 1) THEN
BEGIN
/* GUARDA A LOCALIZACAO DA PECAS */
LOCALIZACAO_ID =
coalesce((SELECT DISTINCT
CASE V.TIPO
WHEN 'R' THEN (SELECT FIRST 1 R.LOCALIZACAO_ENTRADA FROM TBREVISAO R WHERE R.ID = V.TABELA_ID)
WHEN 'D' THEN (SELECT FIRST 1 D.LOCALIZACAO_ID FROM VWREMESSA_TALAO_DETALHE D WHERE D.ID = V.TABELA_ID)
ELSE 'N#D' END
FROM TBREMESSA_TALAO_VINCULO V
WHERE V.CONSUMO_ID = NEW.ID),0);
END
TABELA_ID = (SELECT coalesce(sum(v.tabela_id),0) as tabela_id
FROM TBREMESSA_TALAO_VINCULO V
WHERE V.CONSUMO_ID = NEW.ID);
IF ( coalesce(TABELA_ID,0) = 0 ) THEN
BEGIN
EXCEPTION "..." 'VINCULO COM ERRO. ID PROD.' || NEW.PRODUTO_ID || '. EXCLUA O VINCULO DESTE PRODUTO E TENTE NOVAMENTE! '||
' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
END
/* GUARDA A LOCALIZACAO PADRAO */
/*LOCALIZACAO_ID = COALESCE((SELECT FIRST 1 P.LOCALIZACAO_CODIGO
FROM TBPRODUTO P
WHERE P.CODIGO = NEW.PRODUTO_ID),0); */
/* VERIFICA SE A LOCALIZACAO PADRAO ESTA CONFIGURADA */
IF ( coalesce(LOCALIZACAO_ID,0) = 0 ) THEN
BEGIN
EXCEPTION "..." 'PRODUTO SEM LOCALIZACAO PADRAO DEFINIDA. ID PROD.' || NEW.PRODUTO_ID || '. OPERACAO CANCELADA! '||
' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ';
END
END
--Entrada no Estoque
ESTOQUE_ID = COALESCE((SELECT GEN_ID(GTBESTOQUE_TRANSACAO_ITEM, 1) FROM RDB$DATABASE),0);
NEW.CONTROLE_ESTOQUE = :ESTOQUE_ID;
REQUISICAO = COALESCE((SELECT FIRST 1 REQUISICAO
FROM VWREMESSA R
WHERE R.REMESSA_ID = NEW.REMESSA),'0');
/* SE FOR CONSUMO DE UMA REMESSA DE REQUISICAO E SE FOR UM CONSUMO DE MATERIA-PRIMA */
if ( REQUISICAO = '1' AND NEW.COMPONENTE = '0' ) then
BEGIN
/* SIGLA DA OPERACAO DE SAIDA DO ESTOQUE PARA REMESSAS DE REQUISICAO */
OPERACAO_SAIDA = (SELECT FIRST 1 VALOR_EXT FROM TBCONTROLE_N WHERE ID = 95);
END
ELSE
BEGIN
IF ( NEW.COMPONENTE = '1') THEN
BEGIN
/* SIGLA DA OPERACAO DE WORK IN PROCESS SAIDA */
OPERACAO_SAIDA = 'WPS';
END
ELSE
BEGIN
/* SIGLA DA OPERACAO DE SAIDA DO ESTOQUE */
OPERACAO_SAIDA = (SELECT FIRST 1 VALOR_EXT FROM TBCONTROLE_N WHERE ID = 97);
END
END
USUARIO_ID = (SELECT US.CODIGO FROM TBUSUARIO US WHERE US.USUARIO = (SELECT FIRST 1 MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION));
CCUSTO = (SELECT FIRST 1 U.CCUSTO
FROM TBUP U
WHERE U.ID = (SELECT FIRST 1 T.UP_ID
FROM VWREMESSA_TALAO T
WHERE T.REMESSA_ID = NEW.REMESSA
AND T.REMESSA_TALAO_ID = NEW.TALAO));
--so da saida se projeção maior do que 0
if(NEW.consumo_kg > 0)then
begin
EXECUTE PROCEDURE SPU_ESTOQUE_SALDO4 (
NEW.ESTABELECIMENTO_ID,
:LOCALIZACAO_ID,
NEW.PRODUTO_ID,
'S', /* S = SAIDA DO ESTOQUE */
--CAST(NEW.datahora_conferencia AS DATE),
(SELECT FIRST 1 T.DATA_PRODUCAO
FROM TBTURNO T
WHERE T.TURNO_CORRENTE = '1'),
NEW.QUANTIDADE_CONFERENCIA,
IIF(NEW.TAMANHO = 1,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO = 2,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO = 3,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO = 4,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO = 5,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO = 6,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO = 7,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO = 8,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO = 9,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO =10,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO =11,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO =12,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO =13,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO =14,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO =15,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO =16,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO =17,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO =18,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO =19,NEW.QUANTIDADE_CONFERENCIA,0),
IIF(NEW.TAMANHO =20,NEW.QUANTIDADE_CONFERENCIA,0),
:ESTOQUE_ID,
NEW.REMESSA,
0,
0,
:OPERACAO_SAIDA,
NEW.ID,
0,
'1',
0,
:USUARIO_ID,
Current_Date,
0,
:CCUSTO,
'SAIDA POR PROJECAO DE CONSUMO DE REMESSA DE PRODUCAO',
'0',
0,
0,
0,
0
);
end
END ELSE
BEGIN
/* 0 - EXCLUSAO DE CONFERENCIA */
IF ( OLD.CONFERENCIA = '1' AND NEW.CONFERENCIA = '0' ) THEN
BEGIN
NEW.CONTROLE_ESTOQUE = 0;
DELETE FROM TbEstoque_Transacao_Item
WHERE CONTROLE = OLD.CONTROLE_ESTOQUE
AND ESTABELECIMENTO_CODIGO = OLD.ESTABELECIMENTO_ID
AND PRODUTO_CODIGO = OLD.PRODUTO_ID;
END
END
END
END
END
^
ALTER TRIGGER TTBREMESSA_ITEM_PROC_B0U_06
AS
DECLARE VARIABLE VINCULO_COMPONENTE CHAR(1) ;
declare variable VINCULO_COMPONENTES VARCHAR(500) ;
DECLARE VARIABLE VINCULO_TALAO_ID INTEGER ;
DECLARE VARIABLE VINCULO_CONSUMO_ID INTEGER ;
DECLARE VARIABLE VINCULO_PRODUTO_ID INTEGER ;
DECLARE VARIABLE VINCULO_PRODUTO_DESCRICAO VARCHAR(100) ;
DECLARE VARIABLE VINCULO_TIPO CHAR(1) ;
DECLARE VARIABLE VINCULO_TABELA_ID INTEGER ;
DECLARE VARIABLE VINCULO_QUANTIDADE NUMERIC(15,4) ;
DECLARE VARIABLE VINCULO_QUANTIDADE_SOBRA NUMERIC(15,4) ;
DECLARE VARIABLE VINCULO_QUANTIDADE_ALTERNATIVA NUMERIC(15,4) ;
DECLARE VARIABLE QUANTIDADE_CONSUMO NUMERIC(15,4) ;
DECLARE VARIABLE QUANTIDADE_CONSUMO_ALTERNATIVO NUMERIC(15,4) ;
DECLARE VARIABLE CONSUMO_QUANTIDADE NUMERIC(18,4);
DECLARE VARIABLE QUANTIDADE_FINAL NUMERIC(18,4);
DECLARE VARIABLE calcTemp NUMERIC(15,4);
Declare variable WEB Char(1);
Begin
WEB = Coalesce((Select First 1 R.WEB From TbRemessa R Where R.Numero = New.Remessa),'0');
IF (COALESCE(WEB,'0') = '1' ) THEN
Begin
/* ESTA TRIGGER SO SERA PROCESSADA NAS NOVAS REMESSAS (GCWEB) */
IF ( COALESCE(OLD.FAMILIA_CODIGO,0) = 0 ) THEN
BEGIN
/* 1 - EM ABERTO ; 2 - PRODUZIDO */
IF ( OLD.SITUACAO = 1 AND NEW.SITUACAO = 2 ) THEN
BEGIN
NEW.HORA_PRODUCAO = 'NOW';
NEW.TURNO = (SELECT FIRST 1 T.CODIGO
FROM TBTURNO T
WHERE T.TURNO_CORRENTE = '1');
NEW.DATA_PRODUCAO = (SELECT FIRST 1 T.DATA_PRODUCAO
FROM TBTURNO T
WHERE T.TURNO_CORRENTE = '1');
FOR
SELECT
COMPONENTE,
COMPONENTES,
TALAO_ID,
CONSUMO_ID,
PRODUTO_ID,
PRODUTO_DESCRICAO,
QUANTIDADE,
QUANTIDADE_ALTERNATIVA,
QUANTIDADE_SOBRA,
QUANTIDADE_PROJECAO
FROM (
SELECT C.COMPONENTE,
COALESCE(IIF(C.COMPONENTE = '1',
(
SELECT LIST(DISTINCT '[' || REMESSA || ' / ' || LPAD(REMESSA_TALAO_ID,4,'0') || ']', ', ')
FROM (
SELECT CV.CONSUMO_ID,
R.REMESSA,
CV.REMESSA_ID,
CV.REMESSA_TALAO_ID,
CV.REMESSA_TALAO_DETALHE_ID,
(SELECT V.ID
FROM TBREMESSA_TALAO_VINCULO V
WHERE V.CONSUMO_ID = CV.CONSUMO_ID
AND V.TABELA_ID = CV.REMESSA_TALAO_DETALHE_ID) VINCULO
FROM VWREMESSA_CONSUMO C,
VWREMESSA_TALAO T,
TBREMESSA_CONSUMO_VINCULO CV,
VWREMESSA R
WHERE C.REMESSA_ID = NEW.REMESSA
AND C.REMESSA_TALAO_ID = NEW.CONTROLE
AND T.REMESSA_ID = C.REMESSA_ID
AND T.REMESSA_TALAO_ID = C.REMESSA_TALAO_ID
AND C.ID = CV.CONSUMO_ID
AND CV.REMESSA_ID = R.REMESSA_ID
) WHERE VINCULO IS NULL
),''),'')COMPONENTES,
V.TALAO_ID,
V.CONSUMO_ID,
LPAD(P.CODIGO,5,'0') PRODUTO_ID,
P.DESCRICAO PRODUTO_DESCRICAO,
SUM(COALESCE(V.QUANTIDADE,0))QUANTIDADE,
SUM(COALESCE(V.QUANTIDADE_ALTERNATIVA,0))QUANTIDADE_ALTERNATIVA,
AVG(COALESCE(C.QUANTIDADE_SOBRA,0))QUANTIDADE_SOBRA,
AVG(COALESCE(C.QUANTIDADE,0)) QUANTIDADE_PROJECAO
FROM VWREMESSA_CONSUMO C
LEFT JOIN
TBREMESSA_TALAO_VINCULO V ON
V.CONSUMO_ID = C.ID,
TBPRODUTO P
WHERE C.REMESSA_ID = NEW.REMESSA
AND C.REMESSA_TALAO_ID = NEW.CONTROLE
AND P.CODIGO = C.PRODUTO_ID
GROUP BY COMPONENTE, TALAO_ID, CONSUMO_ID,PRODUTO_ID,PRODUTO_DESCRICAO
) X
INTO
:VINCULO_COMPONENTE,
:VINCULO_COMPONENTES,
:VINCULO_TALAO_ID,
:VINCULO_CONSUMO_ID,
:VINCULO_PRODUTO_ID,
:VINCULO_PRODUTO_DESCRICAO,
:VINCULO_QUANTIDADE,
:VINCULO_QUANTIDADE_ALTERNATIVA,
:VINCULO_QUANTIDADE_SOBRA,
:CONSUMO_QUANTIDADE
DO
BEGIN
/* CALCULA AS QUANTIDADES CONSUMIDAS */
QUANTIDADE_CONSUMO = VINCULO_QUANTIDADE - VINCULO_QUANTIDADE_SOBRA;
QUANTIDADE_CONSUMO_ALTERNATIVO = VINCULO_QUANTIDADE_ALTERNATIVA;
/* ATUALIZA O STATUS DO VINCULO PARA 1 (UTILIZADO) */
UPDATE TBREMESSA_TALAO_VINCULO V
SET V.STATUS = '1'
WHERE TALAO_ID = NEW.ID
AND CONSUMO_ID = :VINCULO_CONSUMO_ID;
/* ATUALIZA A QUANTIDADE UTILIZADA NO CONSUMO */
UPDATE VWREMESSA_CONSUMO C
SET C.QUANTIDADE_CONSUMO = :QUANTIDADE_CONSUMO, --:VINCULO_QUANTIDADE,
C.QUANTIDADE_ALTERNATIVA_CONSUMO = :VINCULO_QUANTIDADE_ALTERNATIVA,
C.DATAHORA_CONFERENCIA = CURRENT_TIMESTAMP,
C.STATUS = '1'
WHERE ID = :VINCULO_CONSUMO_ID;
IF ( :VINCULO_COMPONENTE = '1' AND :VINCULO_COMPONENTES <> '' ) THEN
BEGIN
EXCEPTION "..." 'HA COMPONENTES PENDENTES DE ALOCACAO. REMESSA/TALAO ESPERADO: ' || :VINCULO_COMPONENTES;
END
ELSE
/* VERIFICA SE HA ITENS SEM MATERIA-PRIMA/COMPONENTE ALOCADO */
IF ( :VINCULO_TALAO_ID IS NULL AND :CONSUMO_QUANTIDADE > 0 ) THEN
BEGIN
EXCEPTION "..." 'HA ITENS DA PROJECAO DE CONSUMO SEM MATERIA-PRIMA ALOCADA. PRODUTO: ' || coalesce(:VINCULO_PRODUTO_ID,0) || ' - ' || coalesce(:VINCULO_PRODUTO_DESCRICAO,0) || ' OPERACAO CANCELADA! ';
END
END
END
END
END
END
^
ALTER TRIGGER TTBREMESSA_ITEM_PROCESSADO_B3U
POSITION 3
AS
Declare variable LOCALIZACAO_PROCESSO integer;
Declare variable ESTOQUE_ID integer;
Declare variable WEB Char(1);
Begin
WEB = Coalesce((Select First 1 R.WEB From TbRemessa R Where R.Numero = New.Remessa),'0');
--Registra no estoque WIP o bojo cortado - para remessas do GC-WEB
--Baixa do WIP os componentes (EDC)
IF (COALESCE(WEB,'0') = '1' ) THEN
Begin
If (NEW.FAMILIA_CODIGO > 0) then
BEGIN
if ((Old.Situacao = 1 and New.Situacao = 2) or
(Old.Situacao = 2 and New.Situacao = 1)) Then
Begin
LOCALIZACAO_PROCESSO = Coalesce((Select First 1 Localizacao_Processo From TbFamilia_Ficha
Where Familia_Codigo = Old.Familia_Codigo
and Estabelecimento_Codigo = Old.Estabelecimento_Codigo),0);
if (LOCALIZACAO_PROCESSO > 0) then
Begin
--Entra no Estoque em Processo
If (Old.Situacao = 1 and New.Situacao = 2 and Coalesce(OLD.ESTOQUE_ID,0) = 0) Then
Begin
if (OLD.CONTROLE < 8000 and NEW.QUANTIDADE > 0) then --SOMENTE TALOES DE REMESSAS NORMAIS
BEGIN
ESTOQUE_ID = Coalesce((SELECT GEN_ID(GTBESTOQUE_TRANSACAO_ITEM, 1) FROM RDB$DATABASE),0);
EXECUTE PROCEDURE SPU_ESTOQUE_SALDO4 (
NEW.ESTABELECIMENTO_CODIGO,:LOCALIZACAO_PROCESSO, NEW.PRODUTO_CODIGO,
'E',NEW.DATA_PRODUCAO,NEW.QUANTIDADE,
IIF(NEW.TAMANHO = 1,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 2,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 3,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 4,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 5,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 6,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 7,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 8,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 9,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =10,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =11,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =12,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =13,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =14,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =15,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =16,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =17,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =18,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =19,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =20,NEW.QUANTIDADE,0),
:ESTOQUE_ID,NEW.REMESSA,0,0,'WPE',OLD.ID,0,0,0,0,
Current_Date,0,null,'','0',0,0,0,0);
NEW.ESTOQUE_ID = :ESTOQUE_ID;
End
UPDATE VWREMESSA_CONSUMO RC SET
RC.Quantidade_consumo = RC.quantidade,
RC.quantidade_alternativa_consumo = RC.quantidade_alternativa,
RC.datahora_conferencia = NEW.DATA_PRODUCAO,
RC.status = '1'
Where RC.estabelecimento_id = NEW.ESTABELECIMENTO_CODIGO
AND RC.REMESSA_ID = NEW.REMESSA
AND RC.remessa_talao_id = NEW.CONTROLE;
End Else
--Exclui do Estoque em Processo
If (Old.Situacao = 2 and New.Situacao = 1 and Old.Estoque_Id > 0) Then
Begin
NEW.ESTOQUE_ID = 0;
DELETE FROM TbEstoque_Transacao_Item
WHERE TRANSACAO_CONTROLE = 0
AND CONTROLE = OLD.ESTOQUE_ID
AND ESTABELECIMENTO_CODIGO = OLD.ESTABELECIMENTO_CODIGO
AND LOCALIZACAO_CODIGO = :LOCALIZACAO_PROCESSO
AND PRODUTO_CODIGO = OLD.PRODUTO_CODIGO;
UPDATE VWREMESSA_CONSUMO RC SET
RC.Quantidade_consumo = 0,
RC.quantidade_alternativa_consumo = 0,
RC.datahora_conferencia = null,
RC.status = '0'
Where RC.estabelecimento_id = NEW.ESTABELECIMENTO_CODIGO
AND RC.REMESSA_ID = NEW.REMESSA
AND RC.remessa_talao_id = NEW.CONTROLE;
End
End
End
if (Old.Situacao = New.Situacao and Old.Estoque_Id > 0 and NEW.QUANTIDADE <> OLD.QUANTIDADE) Then
Begin
LOCALIZACAO_PROCESSO = Coalesce((Select First 1 Localizacao_Processo From TbFamilia_Ficha
Where Familia_Codigo = Old.Familia_Codigo
and Estabelecimento_Codigo = Old.Estabelecimento_Codigo),0);
if (LOCALIZACAO_PROCESSO > 0) then
Begin
if (OLD.CONTROLE < 8000 and NEW.QUANTIDADE > 0) then --SOMENTE TALOES DE REMESSAS NORMAIS
BEGIN
ESTOQUE_ID = Coalesce((SELECT GEN_ID(GTBESTOQUE_TRANSACAO_ITEM, 1) FROM RDB$DATABASE),0);
--Entra no Estoque em Processo
EXECUTE PROCEDURE SPU_ESTOQUE_SALDO4 (
NEW.ESTABELECIMENTO_CODIGO,:LOCALIZACAO_PROCESSO, NEW.PRODUTO_CODIGO,
'E',NEW.DATA_PRODUCAO,NEW.QUANTIDADE,
IIF(NEW.TAMANHO = 1,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 2,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 3,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 4,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 5,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 6,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 7,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 8,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO = 9,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =10,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =11,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =12,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =13,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =14,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =15,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =16,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =17,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =18,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =19,NEW.QUANTIDADE,0),
IIF(NEW.TAMANHO =20,NEW.QUANTIDADE,0),
:ESTOQUE_ID,NEW.REMESSA,0,0,'WPE',OLD.CONTROLE,0,0,0,0,
Current_Date,0,null,'','0',0,0,0,0);
NEW.ESTOQUE_ID = :ESTOQUE_ID;
END else
if (OLD.CONTROLE < 8000 and NEW.QUANTIDADE <= 0) then --SOMENTE TALOES DE REMESSAS NORMAIS
begin
NEW.ESTOQUE_ID = 0;
end
if (OLD.CONTROLE < 8000) then --SOMENTE TALOES DE REMESSAS NORMAIS
BEGIN
--Exclui do Estoque em Processo
DELETE FROM TbEstoque_Transacao_Item
WHERE TRANSACAO_CONTROLE = 0
AND CONTROLE = OLD.ESTOQUE_ID
AND ESTABELECIMENTO_CODIGO = OLD.ESTABELECIMENTO_CODIGO
AND LOCALIZACAO_CODIGO = :LOCALIZACAO_PROCESSO
AND PRODUTO_CODIGO = OLD.PRODUTO_CODIGO;
End
End
End
End
End
End
^
ALTER TRIGGER TTBREMESSA_ITEM_PROCESSADO_B99U
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
HISTORICO = '';
IF ( NEW.UP_ID <> OLD.UP_ID) THEN
BEGIN
HISTORICO = HISTORICO||' TALAO ' || LPAD(NEW.CONTROLE,4,'0') || ' REPROGRAMADO UP:'||OLD.UP_ID||'->'||NEW.UP_ID;
END
IF ( NEW.PROGRAMACAO_ESTEIRA <> OLD.PROGRAMACAO_ESTEIRA) THEN
BEGIN
HISTORICO = HISTORICO||' TALAO ' || LPAD(NEW.CONTROLE,4,'0') || ' REPROGRAMADO GP:'||OLD.PROGRAMACAO_ESTEIRA||'->'||NEW.PROGRAMACAO_ESTEIRA;
UPDATE TBPROGRAMACAO P
SET P.GP_ID = NEW.PROGRAMACAO_ESTEIRA,
P.UP_ID = COALESCE((SELECT FIRST 1 G.UP_ID FROM TBGP_UP G WHERE G.GP_ID = NEW.PROGRAMACAO_ESTEIRA),0)
WHERE P.TABELA_ID = NEW.ID
AND P.TIPO = 'A';
END
IF (HISTORICO <> '') THEN
BEGIN
EXECUTE PROCEDURE SPI_HISTORICO('TBREMESSA',NEW.REMESSA,HISTORICO);
END
END
^
ALTER TRIGGER TTBREMESSA_TALAO_VINCULO_B4D
AS
declare variable REMESSA_TALAO_ID INTEGER;
declare variable CONSUMO_STATUS CHAR(1);
begin
/* VERIFICACAO DA EXCLUSAO DE KANBAN (WEB15080) */
IF ( OLD.ORIGEM_TABELA = 'VWESTOQUE_MINIMO_TAMANHO' AND OLD.ORIGEM_NIVEL = 0 ) THEN
BEGIN
DELETE FROM TBESTOQUE_TRANSACAO_ITEM X WHERE X.CONTROLE = OLD.ESTOQUE_ID_ENTRADA;
DELETE FROM TBESTOQUE_TRANSACAO_ITEM X WHERE X.CONTROLE = OLD.ESTOQUE_ID_SAIDA;
END
end
^
ALTER TRIGGER TTBWORKFLOW_ITEM_TAREFA_B4U
AS
BEGIN
-- Se a tarefa estiver sendo concluida
IF (NEW.STATUS_CONCLUSAO = '3') THEN
BEGIN
UPDATE TBNOTIFICACAO N SET
N.EXECUTADO = '1'
WHERE
N.TABELA = 'TBWORKFLOW_ITEM_TAREFA'
AND N.TABELA_ID = OLD.ID;
END
END
^
/******************************************************************************/
/**** Altering stored procedures ****/
/******************************************************************************/
ALTER PROCEDURE SP_REPLICA_TABELA(
TABELA VARCHAR(50))
RETURNS (
ID INTEGER,
ANO INTEGER,
MES INTEGER,
DATA_INICIAL VARCHAR(10),
DATA_FINAL VARCHAR(10),
LINHA_ID INTEGER)
AS
BEGIN
For Select id, ano, mes, data_inicial, data_final, linha_id
From TbReplica_Tabela
Where Tabela = :Tabela
and Status = '0'
Order by Ano, Mes
Into :id, :ano, :mes, :data_inicial, :data_final, :linha_id
Do
Begin
if (id > 0) then
Begin
Update TbReplica_Tabela Set
Status = '1' Where Id = :Id and linha_id = :linha_id;
SUSPEND;
End
End
END
^
ALTER PROCEDURE SPC_CONFERENCIA_TRANSACAO(
COD_BARRAS VARCHAR(100),
CONFERENCIA_TIPO INTEGER)
RETURNS (
ESTOQUE_ID INTEGER,
PRODUTO_ID INTEGER,
PRODUTO_DESCRICAO VARCHAR(100),
USUARIO_ID INTEGER,
USUARIO_DESCRICAO VARCHAR(100),
DATAHORA TIMESTAMP,
LOCALIZACAO_CODIGO INTEGER,
CONFERENCIA INTEGER,
ESTOQUE_TRANSACAO_REGRA_ID INTEGER,
QUANTIDADE NUMERIC(15,4),
TAMANHO INTEGER)
AS
DECLARE VARIABLE TIPO_COD_BARRAS INTEGER;
DECLARE VARIABLE ID_CODBARRAS VARCHAR(20);
DECLARE VARIABLE POSICAO INTEGER;
DECLARE VARIABLE TAMANHO_COD INTEGER;
DECLARE VARIABLE TIPO INTEGER;
DECLARE VARIABLE LOTE_STATUS INTEGER;
BEGIN
:TIPO_COD_BARRAS = 0;
IF(POSITION('P' IN :COD_BARRAS) > 0)THEN BEGIN :TIPO_COD_BARRAS = 1; POSICAO = 2; TIPO = 1; END
IF(POSITION('RD' IN :COD_BARRAS) > 0)THEN BEGIN :TIPO_COD_BARRAS = 2; POSICAO = 3; TIPO = 1; END
IF(POSITION('RA' IN :COD_BARRAS) > 0)THEN BEGIN :TIPO_COD_BARRAS = 3; POSICAO = 3; TIPO = 1; END
IF(POSITION('KB' IN :COD_BARRAS) > 0)THEN BEGIN :TIPO_COD_BARRAS = 4; POSICAO = 3; TIPO = 2; END
IF(POSITION('TR' IN :COD_BARRAS) > 0)THEN BEGIN :TIPO_COD_BARRAS = 5; POSICAO = 3; TIPO = 3; END
:TAMANHO_COD = CHAR_LENGTH(:COD_BARRAS);
:ID_CODBARRAS = SUBSTRING(:COD_BARRAS FROM POSICAO FOR TAMANHO_COD);
:ID_CODBARRAS = CAST(CAST(:ID_CODBARRAS AS INTEGER) AS VARCHAR(20));
PRODUTO_ID = 0;
USUARIO_ID = 0;
DATAHORA = CURRENT_TIMESTAMP;
LOCALIZACAO_CODIGO = 0;
CONFERENCIA = 0;
ESTOQUE_TRANSACAO_REGRA_ID = 0;
QUANTIDADE = 0;
TAMANHO = 0;
PRODUTO_DESCRICAO = '';
USUARIO_DESCRICAO = '';
/* KANBAN */
IF(:CONFERENCIA_TIPO = 1)THEN
BEGIN
LOTE_STATUS = coalesce((select first 1 D.status FROM tbkanban_lote D WHERE D.id = :ID_CODBARRAS),0);
for
SELECT
i.controle,
I.PRODUTO_CODIGO,
P.DESCRICAO,
I.OPERADOR,
O.NOME,
I.DATAHORA,
I.LOCALIZACAO_CODIGO,
I.CONFERENCIA,
I.ESTOQUE_TRANSACAO_REGRA_ID,
I.QUANTIDADE,
IIF(I.T01 > 0,01,
IIF(I.T02 > 0,02,
IIF(I.T03 > 0,03,
IIF(I.T04 > 0,04,
IIF(I.T05 > 0,05,
IIF(I.T06 > 0,06,
IIF(I.T07 > 0,07,
IIF(I.T08 > 0,08,
IIF(I.T09 > 0,09,
IIF(I.T10 > 0,10,
IIF(I.T11 > 0,11,
IIF(I.T12 > 0,12,
IIF(I.T13 > 0,13,
IIF(I.T14 > 0,14,
IIF(I.T15 > 0,15,
IIF(I.T16 > 0,16,
IIF(I.T17 > 0,17,
IIF(I.T18 > 0,18,
IIF(I.T19 > 0,19,
IIF(I.T20 > 0,20, 0)))))))))))))))))))) AS TAMANHO
FROM TBESTOQUE_TRANSACAO_ITEM I, TBPRODUTO P, TBUSUARIO O
WHERE I.TIPO = 'E'
and i.tabela = 'VWESTOQUE_MINIMO_TAMANHO'
and i.tabela_nivel = 0
and i.documento = :ID_CODBARRAS
and i.estoque_transacao_regra_id > 0
AND P.CODIGO = I.PRODUTO_CODIGO
AND O.CODIGO = I.USUARIO_CODIGO
INTO
:ESTOQUE_ID,
:PRODUTO_ID,
:PRODUTO_DESCRICAO,
:USUARIO_ID,
:USUARIO_DESCRICAO,
:DATAHORA,
:LOCALIZACAO_CODIGO,
:CONFERENCIA,
:ESTOQUE_TRANSACAO_REGRA_ID,
:QUANTIDADE,
:TAMANHO
do
begin
IF(LOTE_STATUS = 1)THEN
BEGIN
SUSPEND;
END
end
END
ELSE
/* CONFERENCIA DE PRODUÇÃO */
IF(:CONFERENCIA_TIPO = 2)THEN
BEGIN
for
SELECT
i.controle,
I.PRODUTO_CODIGO,
P.DESCRICAO,
I.OPERADOR,
O.NOME,
I.DATAHORA,
I.LOCALIZACAO_CODIGO,
I.CONFERENCIA,
I.ESTOQUE_TRANSACAO_REGRA_ID,
I.QUANTIDADE,
IIF(I.T01 > 0,01,
IIF(I.T02 > 0,02,
IIF(I.T03 > 0,03,
IIF(I.T04 > 0,04,
IIF(I.T05 > 0,05,
IIF(I.T06 > 0,06,
IIF(I.T07 > 0,07,
IIF(I.T08 > 0,08,
IIF(I.T09 > 0,09,
IIF(I.T10 > 0,10,
IIF(I.T11 > 0,11,
IIF(I.T12 > 0,12,
IIF(I.T13 > 0,13,
IIF(I.T14 > 0,14,
IIF(I.T15 > 0,15,
IIF(I.T16 > 0,16,
IIF(I.T17 > 0,17,
IIF(I.T18 > 0,18,
IIF(I.T19 > 0,19,
IIF(I.T20 > 0,20, 0)))))))))))))))))))) AS TAMANHO
FROM TBESTOQUE_TRANSACAO_ITEM I, TBPRODUTO P, TBUSUARIO O
WHERE I.TABELA = 'TBPEDIDO_ITEM_PROCESSADO'
AND I.TABELA_NIVEL = 1
AND I.REMESSA_ITEM_CONTROLE = :ID_CODBARRAS
AND I.ESTOQUE_TRANSACAO_REGRA_ID > 0
AND I.TIPO = 'E'
AND P.CODIGO = I.PRODUTO_CODIGO
AND O.CODIGO = I.USUARIO_CODIGO
INTO
:ESTOQUE_ID,
:PRODUTO_ID,
:PRODUTO_DESCRICAO,
:USUARIO_ID,
:USUARIO_DESCRICAO,
:DATAHORA,
:LOCALIZACAO_CODIGO,
:CONFERENCIA,
:ESTOQUE_TRANSACAO_REGRA_ID,
:QUANTIDADE,
:TAMANHO
do
begin
SUSPEND;
end
END
ELSE
/* CONFERENCIA DE ABASTECIMENTO WIP */
IF(:CONFERENCIA_TIPO = 3)THEN
BEGIN
for
SELECT
i.controle,
I.PRODUTO_CODIGO,
P.DESCRICAO,
I.OPERADOR,
O.NOME,
I.DATAHORA,
I.LOCALIZACAO_CODIGO,
I.CONFERENCIA,
I.ESTOQUE_TRANSACAO_REGRA_ID,
I.QUANTIDADE,
IIF(I.T01 > 0,01,
IIF(I.T02 > 0,02,
IIF(I.T03 > 0,03,
IIF(I.T04 > 0,04,
IIF(I.T05 > 0,05,
IIF(I.T06 > 0,06,
IIF(I.T07 > 0,07,
IIF(I.T08 > 0,08,
IIF(I.T09 > 0,09,
IIF(I.T10 > 0,10,
IIF(I.T11 > 0,11,
IIF(I.T12 > 0,12,
IIF(I.T13 > 0,13,
IIF(I.T14 > 0,14,
IIF(I.T15 > 0,15,
IIF(I.T16 > 0,16,
IIF(I.T17 > 0,17,
IIF(I.T18 > 0,18,
IIF(I.T19 > 0,19,
IIF(I.T20 > 0,20, 0)))))))))))))))))))) AS TAMANHO
FROM
TBESTOQUE_TRANSACAO_ITEM I
LEFT JOIN VWREMESSA_CONSUMO C ON C.ID = I.TABELA_ID,
TBPRODUTO P,
TBUSUARIO O
WHERE
I.TABELA = 'TBREMESSA_CONSUMO'
AND I.TABELA_NIVEL = 0
AND I.TIPO = 'E'
AND I.ESTOQUE_TRANSACAO_REGRA_ID > 0
AND O.CODIGO = I.USUARIO_CODIGO
AND P.CODIGO = I.PRODUTO_CODIGO
AND C.REMESSA_ID = :ID_CODBARRAS
INTO
:ESTOQUE_ID,
:PRODUTO_ID,
:PRODUTO_DESCRICAO,
:USUARIO_ID,
:USUARIO_DESCRICAO,
:DATAHORA,
:LOCALIZACAO_CODIGO,
:CONFERENCIA,
:ESTOQUE_TRANSACAO_REGRA_ID,
:QUANTIDADE,
:TAMANHO
do
begin
SUSPEND;
end
END
ELSE
/* CONFERENCIA DE TRANSACAO DE REMESSAS */
IF(:CONFERENCIA_TIPO = 4)THEN
BEGIN
for
SELECT
i.controle,
I.PRODUTO_CODIGO,
P.DESCRICAO,
I.OPERADOR,
O.NOME,
I.DATAHORA,
I.LOCALIZACAO_CODIGO,
I.CONFERENCIA,
I.ESTOQUE_TRANSACAO_REGRA_ID,
I.QUANTIDADE,
IIF(I.T01 > 0,01,
IIF(I.T02 > 0,02,
IIF(I.T03 > 0,03,
IIF(I.T04 > 0,04,
IIF(I.T05 > 0,05,
IIF(I.T06 > 0,06,
IIF(I.T07 > 0,07,
IIF(I.T08 > 0,08,
IIF(I.T09 > 0,09,
IIF(I.T10 > 0,10,
IIF(I.T11 > 0,11,
IIF(I.T12 > 0,12,
IIF(I.T13 > 0,13,
IIF(I.T14 > 0,14,
IIF(I.T15 > 0,15,
IIF(I.T16 > 0,16,
IIF(I.T17 > 0,17,
IIF(I.T18 > 0,18,
IIF(I.T19 > 0,19,
IIF(I.T20 > 0,20, 0)))))))))))))))))))) AS TAMANHO
FROM
TBESTOQUE_TRANSACAO_ITEM I
LEFT JOIN VWREMESSA_CONSUMO C ON C.ID = I.TABELA_ID,
TBPRODUTO P,
TBUSUARIO O
WHERE
I.TABELA = 'TBREMESSA_CONSUMO'
AND I.TABELA_NIVEL = 0
AND I.TIPO = 'E'
AND O.CODIGO = I.USUARIO_CODIGO
AND P.CODIGO = I.PRODUTO_CODIGO
AND C.REMESSA_ID = :COD_BARRAS
INTO
:ESTOQUE_ID,
:PRODUTO_ID,
:PRODUTO_DESCRICAO,
:USUARIO_ID,
:USUARIO_DESCRICAO,
:DATAHORA,
:LOCALIZACAO_CODIGO,
:CONFERENCIA,
:ESTOQUE_TRANSACAO_REGRA_ID,
:QUANTIDADE,
:TAMANHO
do
begin
SUSPEND;
end
END
END
^
ALTER PROCEDURE SPC_COTA_ORCAMENTARIA(
DATA_1 DATE = NULL,
DATA_2 DATE = NULL,
COTA_GGF VARCHAR(10) = NULL,
COTA_VALIDA VARCHAR(10) = NULL,
COTA_ZERADA VARCHAR(10) = NULL,
USUARIO_ID INTEGER = NULL)
RETURNS (
TIPO VARCHAR(10),
ID BIGINT,
CCUSTO VARCHAR(50),
CCUSTO_MASK VARCHAR(50),
CCUSTO_DESCRICAO VARCHAR(150),
MES INTEGER,
ANO INTEGER,
PERIODO_DESCRICAO VARCHAR(150),
CCONTABIL VARCHAR(50),
CCONTABIL_MASK VARCHAR(50),
CCONTABIL_DESCRICAO VARCHAR(150),
DESTAQUE VARCHAR(10),
TOTALIZA VARCHAR(10),
NOTIFICA VARCHAR(10),
BLOQUEIA VARCHAR(10),
VALOR NUMERIC(15,4),
EXTRA NUMERIC(15,4),
TOTAL NUMERIC(15,4),
OUTROS NUMERIC(15,4),
UTIL NUMERIC(15,4),
PERC_UTIL NUMERIC(15,4),
SALDO NUMERIC(15,4),
OBSERVACAO_GERAL VARCHAR(2000))
AS
DECLARE VARIABLE COTA_TIPO INTEGER;
begin
IF ( DATA_1 IS NULL OR DATA_2 IS NULL ) THEN
BEGIN
DATA_1 = EXTRACT(YEAR FROM DATEADD(-1 MONTH TO CURRENT_DATE)) || '.' || EXTRACT(MONTH FROM DATEADD(-1 MONTH TO CURRENT_DATE)) || '.01';
DATA_2 = (DATEADD(1 MONTH TO CAST(EXTRACT(YEAR FROM CURRENT_DATE)||'.'||EXTRACT(MONTH FROM CURRENT_DATE)||'.01' AS DATE))-1);
END
IF ( COALESCE(USUARIO_ID,0) IS NULL ) THEN
BEGIN
USUARIO_ID = COALESCE((
SELECT FIRST 1 CODIGO
FROM TBUSUARIO U
WHERE U.USUARIO = CURRENT_USER),5);
END
FOR
SELECT
X.ID,
X.CCUSTO,
X.CCUSTO_MASK,
X.CCUSTO_DESCRICAO,
X.MES,
X.ANO,
X.PERIODO_DESCRICAO,
X.CCONTABIL,
X.CCONTABIL_MASK,
X.CCONTABIL_DESCRICAO,
X.DESTAQUE,
X.TOTALIZA,
X.NOTIFICA,
X.BLOQUEIA,
X.VALOR,
X.EXTRA,
X.TOTAL,
X.OUTROS,
X.UTIL,
X.PERC_UTIL,
X.SALDO,
TRIM('COTA') TIPO,
X.OBSERVACAO_GERAL
FROM
(SELECT
A.ID,
COALESCE(A.DESTAQUE,'0')DESTAQUE,
COALESCE(A.TOTALIZA,'0')TOTALIZA,
COALESCE(A.BLOQUEIO,'0')BLOQUEIA,
COALESCE(A.NOTIFICACAO,'0')NOTIFICA,
A.CCUSTO,
FN_CCUSTO_MASK(A.CCUSTO) CCUSTO_MASK,
FN_CCUSTO_DESCRICAO(A.CCUSTO) CCUSTO_DESCRICAO,
A.MES,
A.ANO,
TRIM(FN_MES_DESCRICAO(A.MES) || '/' || A.ANO) PERIODO_DESCRICAO,
B.CONTA CCONTABIL,
UPPER(B.DESCRICAO) CCONTABIL_DESCRICAO,
FN_CCONTABIL_MASK(B.CONTA) CCONTABIL_MASK,
A.VALOR,
A.EXTRA,
(A.VALOR+A.EXTRA) TOTAL,
A.OUTROS,
(A.VALOR+A.EXTRA-A.OUTROS-A.SALDO)UTIL,
IIF(A.VALOR+A.EXTRA > 0, ((1-(A.SALDO/NULLIF((A.VALOR+A.EXTRA),0)))*100),
IIF(A.VALOR+A.EXTRA = 0 AND A.SALDO < 0, 100, 0)) PERC_UTIL,
A.SALDO,
A.OBSERVACAO_GERAL
FROM
TBCCUSTO_COTA A,
TBCONTACONTABIL B,
TBUSUARIO_CCUSTO D
WHERE
A.STATUSEXCLUSAO = '0'
AND B.CONTA = A.CONTACONTABIL
AND A.CCUSTO = D.CCUSTO
AND D.USUARIO_ID = COALESCE(:USUARIO_ID,5) /* HAROLDO */
AND CAST((A.ANO || '.' || A.MES || '.01') AS DATE) BETWEEN :DATA_1 AND :DATA_2
AND IIF(:COTA_VALIDA = '1' AND :COTA_ZERADA = '1',(A.VALOR > 0 OR A.VALOR = 0 ),
IIF(:COTA_ZERADA = '1',(A.VALOR = 0),
IIF(:COTA_VALIDA = '1',(A.VALOR > 0),FALSE)))
)X
INTO
ID ,
CCUSTO ,
CCUSTO_MASK ,
CCUSTO_DESCRICAO ,
MES ,
ANO ,
PERIODO_DESCRICAO ,
CCONTABIL ,
CCONTABIL_MASK ,
CCONTABIL_DESCRICAO,
DESTAQUE ,
TOTALIZA ,
NOTIFICA ,
BLOQUEIA ,
VALOR ,
EXTRA ,
TOTAL ,
OUTROS ,
UTIL ,
PERC_UTIL ,
SALDO ,
TIPO ,
OBSERVACAO_GERAL
DO
BEGIN
/* PROCEDURE TEXT */
SUSPEND;
END
IF ( COALESCE(COTA_GGF,'0') = '1' ) THEN
BEGIN
FOR
SELECT
99999 || MES || ANO || CCUSTO ID,
CCUSTO,
CCUSTO_MASK,
CCUSTO_DESCRICAO,
MES,
ANO,
PERIODO_DESCRICAO,
CCONTABIL,
CCONTABIL_MASK,
CCONTABIL_DESCRICAO,
DESTAQUE,
TOTALIZA,
0 NOTIFICA,
0 BLOQUEIA,
VALOR,
EXTRA,
VALOR TOTAL,
0 OUTROS,
UTIL,
PERC_UTIL,
SALDO,
TRIM('GGF') TIPO,
'' OBSERVACAO_GERAL
FROM (
SELECT
GGF,
CCUSTO,
CCUSTO_MASK,
CCUSTO_DESCRICAO,
MES,
ANO,
PERIODO_DESCRICAO,
CCONTABIL,
CCONTABIL_MASK,
CCONTABIL_DESCRICAO,
DESTAQUE,
TOTALIZA,
COALESCE(CAST(SUBSTRING(GGF FROM 1 FOR 30) AS NUMERIC(15,4)),0) VALOR,
COALESCE(CAST(SUBSTRING(GGF FROM 31 FOR 30) AS NUMERIC(15,4)),0) UTIL,
COALESCE(CAST(SUBSTRING(GGF FROM 61 FOR 30) AS NUMERIC(15,4)),0) PERC_UTIL,
COALESCE(CAST(SUBSTRING(GGF FROM 91 FOR 30) AS NUMERIC(15,4)),0) SALDO,
COALESCE(CAST(SUBSTRING(GGF FROM 121 FOR 30) AS NUMERIC(15,4)),0) EXTRA
FROM (
SELECT
(SELECT
LPAD(SUM(VALOR_COTA),30)||
LPAD(SUM(VALOR_UTILIZADO),30)||
LPAD(SUM(PERCENTUAL_UTILIZADO),30)||
LPAD(SUM(SALDO),30)||
LPAD(SUM(VALOR_CREDITO),30)
FROM SPC_COTA_GGF(CCUSTO,CAST(ANO||'.'||MES||'.01' AS DATE),(DATEADD(1 MONTH TO CAST(ANO||'.'||MES||'.01' AS DATE))-1))) GGF,
CCUSTO,
CCUSTO_MASK,
CCUSTO_DESCRICAO,
MES,
ANO,
PERIODO_DESCRICAO,
CCONTABIL,
CCONTABIL_MASK,
CCONTABIL_DESCRICAO,
DESTAQUE,
TOTALIZA
FROM (
SELECT DISTINCT
Y.CCUSTO,
Y.CCUSTO_MASK,
Y.CCUSTO_DESCRICAO,
Y.MES,
Y.ANO,
Y.PERIODO_DESCRICAO,
Y.CCONTABIL,
Y.CCONTABIL_MASK,
Y.CCONTABIL_DESCRICAO,
Y.DESTAQUE,
Y.TOTALIZA
FROM
(SELECT
X.ID,
X.CCUSTO,
X.CCUSTO_MASK,
X.CCUSTO_DESCRICAO,
X.MES,
X.ANO,
X.PERIODO_DESCRICAO,
X.CCONTABIL,
X.CCONTABIL_MASK,
X.CCONTABIL_DESCRICAO,
X.DESTAQUE,
X.TOTALIZA
FROM
(SELECT
A.ID,
0 DESTAQUE,
0 TOTALIZA,
A.CCUSTO,
FN_CCUSTO_MASK(A.CCUSTO) CCUSTO_MASK,
FN_CCUSTO_DESCRICAO(A.CCUSTO) CCUSTO_DESCRICAO,
A.MES,
A.ANO,
TRIM(FN_MES_DESCRICAO(A.MES) || '/' || A.ANO) PERIODO_DESCRICAO,
99999999999999 CCONTABIL,
'G.G.F./G.G.A.' CCONTABIL_DESCRICAO,
'' CCONTABIL_MASK
FROM
TBCCUSTO_COTA A,
TBCONTACONTABIL B,
TBCENTRO_DE_CUSTO C,
TBUSUARIO_CCUSTO D
WHERE
A.STATUSEXCLUSAO = '0'
AND B.CONTA = A.CONTACONTABIL
AND A.CCUSTO = C.CODIGO
AND C.CODIGO = D.CCUSTO
AND D.USUARIO_ID = COALESCE(:USUARIO_ID,5) /* HAROLDO */
AND CAST((A.ANO || '.' || A.MES || '.01') AS DATE) BETWEEN :DATA_1 AND :DATA_2
AND IIF(:COTA_VALIDA = '1' AND :COTA_ZERADA = '1',(A.VALOR > 0 OR A.VALOR = 0 ),
IIF(:COTA_ZERADA = '1',(A.VALOR = 0),
IIF(:COTA_VALIDA = '1',(A.VALOR > 0),TRUE)))
)X)Y
ORDER BY
CCUSTO,
ANO,
MES,
CCONTABIL
)Z
)W
)K
INTO
ID ,
CCUSTO ,
CCUSTO_MASK ,
CCUSTO_DESCRICAO ,
MES ,
ANO ,
PERIODO_DESCRICAO ,
CCONTABIL ,
CCONTABIL_MASK ,
CCONTABIL_DESCRICAO,
DESTAQUE ,
TOTALIZA ,
NOTIFICA ,
BLOQUEIA ,
VALOR ,
EXTRA ,
TOTAL ,
OUTROS ,
UTIL ,
PERC_UTIL ,
SALDO ,
TIPO ,
OBSERVACAO_GERAL
DO
BEGIN
SUSPEND;
END
END
end
^
ALTER PROCEDURE SPC_FEEF(
MES INTEGER,
ANO INTEGER)
RETURNS (
REFERENCIA VARCHAR(10),
ORDEM CHAR(3),
NATUREZA CHAR,
TIPO VARCHAR(50),
VALOR NUMERIC(15,2))
AS
declare variable data_1 date;
declare variable data_2 date;
declare variable subtotal_debito numeric(15,2);
declare variable subtotal_credito numeric(15,2);
declare variable subtotal_apuracao numeric(15,2);
declare variable total_outras_deducoes numeric(15,2);
declare variable base_promissoria numeric(15,2);
declare variable perc_promissoria numeric(15,2);
declare variable promissoria numeric(15,2);
declare variable imposto_a_pagar numeric(15,2);
declare variable total_devido numeric(15,2);
declare variable v_ano integer;
declare variable v_data_1 date;
declare variable v_data_2 date;
declare variable v_subtotal_debito numeric(15,2);
declare variable v_subtotal_credito numeric(15,2);
declare variable v_subtotal_apuracao numeric(15,2);
declare variable v_total_outras_deducoes numeric(15,2);
declare variable v_base_promissoria numeric(15,2);
declare variable v_perc_promissoria numeric(15,2);
declare variable v_promissoria numeric(15,2);
declare variable v_imposto_a_pagar numeric(15,2);
declare variable v_total_devido numeric(15,2);
declare variable perc_crescimento numeric(15,2);
declare variable perc_multa numeric(15,2);
declare variable total_multa numeric(15,2);
declare variable meta1 numeric(15,2);
declare variable meta2 numeric(15,2);
declare variable meta3 numeric(15,2);
declare variable meta4 numeric(15,2);
declare variable meta5 numeric(15,2);
declare variable media_imposto_faturado numeric(15,2);
declare variable media_valor_unitario numeric(15,2);
declare variable dif_aliq_icms numeric(15,2);
declare variable v_dif_aliq_icms numeric(15,2);
Begin
--------------------------------------------------------------------------------
v_ano = ano - 1;
v_data_1 = Cast('1.'||:Mes||'.'||:v_ano as Date);
v_data_2 = (SELECT DATEADD(-EXTRACT(DAY FROM DATEADD(1 MONTH TO Cast('1.'||:Mes||'.'||:v_ano as Date) )) DAY TO DATEADD(1 MONTH TO Cast('1.'||:Mes||'.'||:v_ano as Date))) FROM RDB$DATABASE);
v_SubTotal_Debito = 0;
v_SubTotal_Credito = 0;
v_SubTotal_Apuracao = 0;
v_Total_Outras_Deducoes = 0;
v_Base_Promissoria = 0;
v_Perc_Promissoria = 0;
v_Promissoria = 0;
v_Imposto_a_Pagar = 0;
v_Total_Devido = 0;
v_Dif_Aliq_Icms = 0;
FOR
SELECT 'A' Ordem, 'D' Natureza, 'Icms NF.de Saída' TIPO, SUM(A.fiscal_valor_icms) VALOR_IMPOSTO
FROM tbnfs_item A, TBNFS B
WHERE A.nfs_controle = B.CONTROLE
AND B.sped = '1'
AND B.NATUREZA = 1
AND B.situacao = 2
AND B.estabelecimento_codigo = 1
and B.Data_Emissao between :v_Data_1 and :v_Data_2
AND A.valor_contabil > 0
Group BY 1,2,3
UNION
Select 'B' Ordem, 'D' Natureza, 'Outros Débitos de Icms' TIPO, Coalesce(Sum(A.VALOR),0) Valor_Imposto
From TbDief_Apuracao A, TBFISCAL_OCORRENCIA B, TbEstabelecimento E
Where A.OCORRENCIA_CODIGO = B.CODIGO
and A.Estabelecimento_Codigo = E.Codigo
and E.Uf = Substring(B.Tab_51 from 1 for 2)
and A.Estabelecimento_Codigo = 1
and A.Ano = :v_Ano
and A.Mes = :Mes
and A.Ocorrencia_Codigo Like 'OD%'
Group BY 1,2,3
INTO :ORDEM, :NATUREZA, :TIPO, :VALOR
Do Begin
v_SubTotal_Debito = v_SubTotal_Debito + :VALOR;
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
SUSPEND;
End
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
ORDEM = 'C';
NATUREZA = '=';
TIPO = 'SUB-TOTAL DÉBITOS (A+B)';
VALOR = Coalesce(v_SubTotal_Debito,0);
SUSPEND;
v_Dif_Aliq_Icms = Coalesce((
Select Coalesce(Sum(A.VALOR),0) Dif_Aliq_Icms
From TbDief_Apuracao A, TBFISCAL_OCORRENCIA B, TbEstabelecimento E
Where A.OCORRENCIA_CODIGO = B.CODIGO
and A.Estabelecimento_Codigo = E.Codigo
and E.Uf = Substring(B.Tab_51 from 1 for 2)
and A.Estabelecimento_Codigo = 1
and A.Ano = :v_Ano and A.Mes = :Mes
and (A.Ano > 2017 or (A.Ano = 2017 and A.Mes >= 9))
and A.Ocorrencia_Codigo in ('OD0002','OD9999')),0);
FOR
SELECT 'D' Ordem, 'C' Natureza, 'Icms NF.de Entrada' TIPO, SUM(A.fiscal_valor_icms) VALOR_IMPOSTO
FROM tbnfe_item A, TBNFe B
WHERE A.nfe_controle = B.CONTROLE
AND B.sped = '1'
AND ((B.NATUREZA = 1 AND B.situacao = 2) or
(B.NATUREZA = 2 AND B.situacao = 1))
AND B.estabelecimento_codigo = 1
and B.Data_Fiscal between :v_Data_1 and :v_Data_2
AND A.valor_contabil > 0
Group BY 1,2,3
UNION
Select 'E' Ordem, 'C' Natureza, 'Outros Créditos de Icms' TIPO, Coalesce(Sum(A.VALOR),0) Valor_Imposto
From TbDief_Apuracao A, TBFISCAL_OCORRENCIA B, TbEstabelecimento E
Where A.OCORRENCIA_CODIGO = B.CODIGO
and A.Estabelecimento_Codigo = E.Codigo
and E.Uf = Substring(B.Tab_51 from 1 for 2)
and A.Estabelecimento_Codigo = 1
and A.Ano = :v_Ano
and A.Mes = :Mes
and A.Ocorrencia_Codigo Like 'OC%'
INTO :ORDEM, :NATUREZA, :TIPO, :VALOR
Do Begin
v_SubTotal_Credito = v_SubTotal_Credito + :VALOR;
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
SUSPEND;
End
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
ORDEM = 'F';
NATUREZA = '=';
TIPO = 'SUB-TOTAL CRÉDITOS (D+E)';
VALOR = Coalesce(v_SubTotal_Credito,0);
SUSPEND;
v_SubTotal_Apuracao = v_SubTotal_Debito - v_SubTotal_Credito;
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
ORDEM = 'G';
NATUREZA = '=';
TIPO = 'SALDO DEVEDOR (C-F)';
VALOR = Coalesce(v_SubTotal_Apuracao,0);
SUSPEND;
/*
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
ORDEM = '*';
NATUREZA = '';
TIPO = '(Diferencial de Icms)';
VALOR = Coalesce(v_Dif_Aliq_Icms,0);
SUSPEND;
*/
FOR
SELECT 'H' Ordem, 'D' Natureza, 'Outras Deduções' TIPO, SUM(A.fiscal_valor_icms*(P.Feef_Perc_Deducao/100.00)) VALOR_IMPOSTO
FROM tbnfs_item A, TBNFS B, TBPRODUTO P, TbFamilia F
WHERE A.nfs_controle = B.CONTROLE
AND A.produto_codigo = P.CODIGO
AND P.FAMILIA_CODIGO = F.CODIGO
AND B.sped = '1'
AND B.NATUREZA = 1
AND B.situacao = 2
AND B.estabelecimento_codigo = 1
and B.Data_Emissao between :v_Data_1 and :v_Data_2
AND A.valor_contabil > 0
AND(P.FEEF = '1' or F.FEEF = '1')
Group BY 1,2,3
INTO :ORDEM, :NATUREZA, :TIPO, :VALOR
Do Begin
VALOR = VALOR + :v_Dif_Aliq_Icms;
v_Total_Outras_Deducoes = v_Total_Outras_Deducoes + :VALOR;
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
SUSPEND;
End
FOR
SELECT First 1 'I' Ordem, 'D' Natureza, 'UC ('||Trunc(FF.UC_Quantidade)||'x'||FF.UC_Fator||')' TIPO, FF.UC_Quantidade * FF.UC_Fator VALOR
FROM TbFEEF FF
WHERE FF.Ano = :v_Ano
and FF.Mes = :Mes
and FF.Estabelecimento_Id = 1
INTO :ORDEM, :NATUREZA, :TIPO, :VALOR
Do Begin
v_Total_Outras_Deducoes = v_Total_Outras_Deducoes + :VALOR;
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
SUSPEND;
End
v_Base_Promissoria = v_SubTotal_Apuracao - v_Total_Outras_Deducoes;
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
ORDEM = 'J';
NATUREZA = '=';
TIPO = 'BASE DE CÁLCULO PROMISSÓRIA (G-H-I)';
VALOR = Coalesce(v_Base_Promissoria,0);
SUSPEND;
v_Perc_Promissoria = Coalesce((SELECT First 1 FF.Perc_Promissoria
FROM TbFEEF FF
WHERE FF.Ano = :v_Ano
and FF.Mes = :Mes
and FF.Estabelecimento_Id = 1),100.00);
v_Promissoria = v_Perc_Promissoria/100.00 * v_Base_Promissoria;
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
ORDEM = 'K';
NATUREZA = '=';
TIPO = 'PERC.PROMISSÓRIA (%)';
VALOR = Coalesce(v_Perc_Promissoria,0);
SUSPEND;
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
ORDEM = 'L';
NATUREZA = '=';
TIPO = 'VALOR PROMISSÓRIA (JxK)';
VALOR = Coalesce(v_Promissoria,0);
SUSPEND;
v_Imposto_a_Pagar = v_Base_Promissoria - v_Promissoria;
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
ORDEM = 'M';
NATUREZA = '=';
TIPO = 'IMPOSTO A PAGAR (J-L)';
VALOR = Coalesce(v_Imposto_a_Pagar,0);
SUSPEND;
v_Total_Devido = v_Imposto_a_Pagar + v_Total_Outras_Deducoes;
referencia = lPad(:MES,2,'0')||'/'||:V_ANO;
ORDEM = 'N';
NATUREZA = '=';
TIPO = 'TOTAL DEVIDO (M+H+I)';
VALOR = Coalesce(v_Total_Devido,0);
SUSPEND;
--------------------------------------------------------------------------------
data_1 = Cast('1.'||:Mes||'.'||:Ano as Date);
data_2 = (SELECT DATEADD(-EXTRACT(DAY FROM DATEADD(1 MONTH TO Cast('1.'||:Mes||'.'||:Ano as Date) )) DAY TO DATEADD(1 MONTH TO Cast('1.'||:Mes||'.'||:Ano as Date))) FROM RDB$DATABASE);
SubTotal_Debito = 0;
SubTotal_Credito = 0;
SubTotal_Apuracao = 0;
Total_Outras_Deducoes = 0;
Base_Promissoria = 0;
Perc_Promissoria = 0;
Promissoria = 0;
Imposto_a_Pagar = 0;
Total_Devido = 0;
Dif_Aliq_Icms = 0;
FOR
SELECT 'A' Ordem, 'D' Natureza, 'Icms NF.de Saída' TIPO, SUM(A.fiscal_valor_icms)
FROM tbnfs_item A, TBNFS B
WHERE A.nfs_controle = B.CONTROLE
AND B.sped = '1'
AND B.NATUREZA = 1
AND B.situacao = 2
AND B.estabelecimento_codigo = 1
and B.Data_Emissao between :Data_1 and :Data_2
AND A.valor_contabil > 0
Group BY 1,2,3
UNION
Select 'B' Ordem, 'D' Natureza, 'Outros Débitos de Icms' TIPO, Coalesce(Sum(A.VALOR),0) Valor_Imposto
From TbDief_Apuracao A, TBFISCAL_OCORRENCIA B, TbEstabelecimento E
Where A.OCORRENCIA_CODIGO = B.CODIGO
and A.Estabelecimento_Codigo = E.Codigo
and E.Uf = Substring(B.Tab_51 from 1 for 2)
and A.Estabelecimento_Codigo = 1
and A.Ano = :Ano
and A.Mes = :Mes
and A.Ocorrencia_Codigo Like 'OD%'
Group BY 1,2,3
INTO :ORDEM, :NATUREZA, :TIPO, :VALOR
Do Begin
SubTotal_Debito = SubTotal_Debito + :VALOR;
referencia = lPad(:MES,2,'0')||'/'||:ANO;
SUSPEND;
End
referencia = lPad(:MES,2,'0')||'/'||:ANO;
ORDEM = 'C';
NATUREZA = '=';
TIPO = 'SUB-TOTAL DÉBITOS (A+B)';
VALOR = Coalesce(SubTotal_Debito,0);
SUSPEND;
Dif_Aliq_Icms = Coalesce((
Select Coalesce(Sum(A.VALOR),0) Dif_Aliq_Icms
From TbDief_Apuracao A, TBFISCAL_OCORRENCIA B, TbEstabelecimento E
Where A.OCORRENCIA_CODIGO = B.CODIGO
and A.Estabelecimento_Codigo = E.Codigo
and E.Uf = Substring(B.Tab_51 from 1 for 2)
and A.Estabelecimento_Codigo = 1
and A.Ano = :Ano and A.Mes = :Mes
and (A.Ano > 2017 or (A.Ano = 2017 and A.Mes >= 9))
and A.Ocorrencia_Codigo in ('OD0002','OD9999')),0);
FOR
SELECT 'D' Ordem, 'C' Natureza, 'Icms NF.de Entrada' TIPO, SUM(A.fiscal_valor_icms) VALOR_IMPOSTO
FROM tbnfe_item A, TBNFe B
WHERE A.nfe_controle = B.CONTROLE
AND B.sped = '1'
AND ((B.NATUREZA = 1 AND B.situacao = 2) or
(B.NATUREZA = 2 AND B.situacao = 1))
AND B.estabelecimento_codigo = 1
and B.Data_Fiscal between :Data_1 and :Data_2
AND A.valor_contabil > 0
Group BY 1,2,3
UNION
Select 'E' Ordem, 'C' Natureza, 'Outros Créditos de Icms' TIPO, Coalesce(Sum(A.VALOR),0) Valor_Imposto
From TbDief_Apuracao A, TBFISCAL_OCORRENCIA B, TbEstabelecimento E
Where A.OCORRENCIA_CODIGO = B.CODIGO
and A.Estabelecimento_Codigo = E.Codigo
and E.Uf = Substring(B.Tab_51 from 1 for 2)
and A.Estabelecimento_Codigo = 1
and A.Ano = :Ano
and A.Mes = :Mes
and A.Ocorrencia_Codigo Like 'OC%'
INTO :ORDEM, :NATUREZA, :TIPO, :VALOR
Do Begin
SubTotal_Credito = SubTotal_Credito + :VALOR;
referencia = lPad(:MES,2,'0')||'/'||:ANO;
SUSPEND;
End
referencia = lPad(:MES,2,'0')||'/'||:ANO;
ORDEM = 'F';
NATUREZA = '=';
TIPO = 'SUB-TOTAL CRÉDITOS (D+E)';
VALOR = Coalesce(SubTotal_Credito,0);
SUSPEND;
SubTotal_Apuracao = SubTotal_Debito - SubTotal_Credito;
referencia = lPad(:MES,2,'0')||'/'||:ANO;
ORDEM = 'G';
NATUREZA = '=';
TIPO = 'SALDO DEVEDOR (C-F)';
VALOR = Coalesce(SubTotal_Apuracao,0);
SUSPEND;
/*
referencia = lPad(:MES,2,'0')||'/'||:ANO;
ORDEM = '*';
NATUREZA = '';
TIPO = '(Diferencial de Icms)';
VALOR = Coalesce(Dif_Aliq_Icms,0);
SUSPEND;
*/
FOR
SELECT 'H' Ordem, 'D' Natureza, 'Outras Deduções' TIPO, SUM(A.fiscal_valor_icms*(P.Feef_Perc_Deducao/100.00)) VALOR_IMPOSTO
FROM tbnfs_item A, TBNFS B, TBPRODUTO P, TbFamilia F
WHERE A.nfs_controle = B.CONTROLE
AND A.produto_codigo = P.CODIGO
AND P.FAMILIA_CODIGO = F.CODIGO
AND B.sped = '1'
AND B.NATUREZA = 1
AND B.situacao = 2
AND B.estabelecimento_codigo = 1
and B.Data_Emissao between :Data_1 and :Data_2
AND A.valor_contabil > 0
AND(P.FEEF = '1' or F.FEEF = '1')
Group BY 1,2,3
INTO :ORDEM, :NATUREZA, :TIPO, :VALOR
Do Begin
VALOR = VALOR + :Dif_Aliq_Icms;
Total_Outras_Deducoes = Total_Outras_Deducoes + :VALOR;
referencia = lPad(:MES,2,'0')||'/'||:ANO;
SUSPEND;
End
FOR
SELECT First 1 'I' Ordem, 'D' Natureza, 'UC ('||Trunc(FF.UC_Quantidade)||'x'||FF.UC_Fator||')' TIPO, FF.UC_Quantidade * FF.UC_Fator VALOR
FROM TbFEEF FF
WHERE FF.Ano = :Ano
and FF.Mes = :Mes
and FF.Estabelecimento_Id = 1
INTO :ORDEM, :NATUREZA, :TIPO, :VALOR
Do Begin
Total_Outras_Deducoes = Total_Outras_Deducoes + :VALOR;
referencia = lPad(:MES,2,'0')||'/'||:ANO;
SUSPEND;
End
Base_Promissoria = SubTotal_Apuracao - Total_Outras_Deducoes;
referencia = lPad(:MES,2,'0')||'/'||:ANO;
ORDEM = 'J';
NATUREZA = '=';
TIPO = 'BASE DE CÁLCULO PROMISSÓRIA (G-H-I)';
VALOR = Coalesce(Base_Promissoria,0);
SUSPEND;
Perc_Promissoria = Coalesce((SELECT First 1 FF.Perc_Promissoria
FROM TbFEEF FF
WHERE FF.Ano = :Ano
and FF.Mes = :Mes
and FF.Estabelecimento_Id = 1),100.00);
Promissoria = Perc_Promissoria/100.00 * Base_Promissoria;
referencia = lPad(:MES,2,'0')||'/'||:ANO;
ORDEM = 'K';
NATUREZA = '=';
TIPO = 'PERC.PROMISSÓRIA (%)';
VALOR = Coalesce(Perc_Promissoria,0);
SUSPEND;
referencia = lPad(:MES,2,'0')||'/'||:ANO;
ORDEM = 'L';
NATUREZA = '=';
TIPO = 'VALOR PROMISSÓRIA (JxK)';
VALOR = Coalesce(Promissoria,0);
SUSPEND;
Imposto_a_Pagar = Base_Promissoria - Promissoria;
referencia = lPad(:MES,2,'0')||'/'||:ANO;
ORDEM = 'M';
NATUREZA = '=';
TIPO = 'IMPOSTO A PAGAR (J-L)';
VALOR = Coalesce(Imposto_a_Pagar,0);
SUSPEND;
Total_Devido = Imposto_a_Pagar + Total_Outras_Deducoes;
referencia = lPad(:MES,2,'0')||'/'||:ANO;
ORDEM = 'N';
NATUREZA = '=';
TIPO = 'TOTAL DEVIDO (M+H+I)';
VALOR = Coalesce(Total_Devido,0);
SUSPEND;
--------------------------------------------------------------------------------
Perc_Crescimento = 0;
Perc_Multa = 0;
Total_Multa = 0;
Perc_Crescimento = (Total_Devido / v_Total_Devido * 100.00) - 100.00;
referencia = 'RESULTADO';
ORDEM = '';
NATUREZA = '=';
TIPO = 'PERC.CRESCIMENTO (%)';
VALOR = Coalesce(Perc_Crescimento,0);
SUSPEND;
if (:Perc_Crescimento < 10.00) then
Begin
Perc_Multa = 10.00;
if (:Perc_Crescimento > 0.00) then
begin
Perc_Multa = 10.00 - Perc_Crescimento;
end
referencia = 'RESULTADO';
ORDEM = '';
NATUREZA = '=';
TIPO = 'PERC.MULTA (%)';
VALOR = Coalesce(Perc_Multa,0);
SUSPEND;
Total_Multa = Promissoria * (Perc_Multa/100.00);
referencia = 'RESULTADO';
ORDEM = '';
NATUREZA = '=';
TIPO = 'VALOR DA MULTA';
VALOR = Coalesce(Total_Multa,0);
SUSPEND;
Meta1 = v_Total_Devido * (1.10);
referencia = 'RESULTADO';
ORDEM = '';
NATUREZA = '=';
TIPO = 'META DE IMPOSTO A PAGAR';
VALOR = Coalesce(Meta1,0);
SUSPEND;
Meta2 = Meta1 - Total_Devido;
referencia = 'RESULTADO';
ORDEM = '';
NATUREZA = '=';
TIPO = 'VALOR PARA ATINGIMENTO DE META';
VALOR = Coalesce(Meta2,0);
SUSPEND;
Meta3 = Meta2 / (1 - (Perc_Promissoria/100.00));
referencia = 'RESULTADO';
ORDEM = '';
NATUREZA = '=';
TIPO = 'ESTIMATIVA DE ICMS A DEBITAR EM NF.';
VALOR = Coalesce(Meta3,0);
SUSPEND;
FOR SELECT AVG(A.fiscal_valor_icms/A.valor_basecalculo_icms),
AVG(A.Valor_Total / A.Quantidade)
FROM tbnfs_item A, TBNFS B
WHERE A.nfs_controle = B.CONTROLE
AND B.sped = '1'
AND B.NATUREZA = 1
AND B.situacao = 2
AND B.estabelecimento_codigo = 1
and B.Data_Emissao between :Data_1 and :Data_2
AND A.valor_contabil > 0
AND A.valor_basecalculo_icms > 0
INTO :Media_Imposto_Faturado, :Media_Valor_Unitario
DO BEGIN
Meta4 = Meta3 / Media_Imposto_Faturado;
referencia = 'RESULTADO';
ORDEM = '';
NATUREZA = '=';
TIPO = 'ESTIMATIVA DE FATURAMENTO EM REAIS';
VALOR = Coalesce(Meta4,0);
SUSPEND;
Meta5 = Meta4 / Media_Valor_Unitario;
referencia = 'RESULTADO';
ORDEM = '';
NATUREZA = '=';
TIPO = 'ESTIMATIVA DE FATURAMENTO EM QUANTIDADE';
VALOR = Coalesce(Meta5,0);
SUSPEND;
END
End
END
^
ALTER PROCEDURE SPC_FERRAMENTA_DISPONIVEL(
I_FERRAMENTA_ID INTEGER,
I_DATAHORA_INICIO TIMESTAMP)
RETURNS (
GRUPO_ID INTEGER,
ID INTEGER,
DESCRICAO VARCHAR(200),
SERIE VARCHAR(80),
MATRIZ_ID INTEGER,
MATRIZ_DESCRICAO VARCHAR(80),
LINHA_ID INTEGER,
TAMANHO INTEGER,
LARGURA NUMERIC(18,4),
COMPRIMENTO NUMERIC(18,4),
ALTURA NUMERIC(18,4),
DATA DATE,
OBSERVACAO VARCHAR(400),
TEMPO_SETUP NUMERIC(18,4),
TEMPO_SETUP_AQUECIMENTO NUMERIC(18,4),
STATUS_CONFLITO INTEGER)
AS
declare variable gp_id integer;
declare variable up_id integer;
declare variable estacao integer;
declare variable first_datahora_inicio timestamp;
declare variable last_datahora_fim timestamp;
BEGIN
SELECT
GP_ID,
UP_ID,
ESTACAO,
FIRST_DATAHORA_INICIO,
LAST_DATAHORA_FIM
FROM (
SELECT FIRST 1
P.GP_ID,
P.UP_ID,
P.ESTACAO,
X.ID FIRST_ID,
FIRST_VALUE(X.ID) OVER(ORDER BY X.DATAHORA_INICIO DESC) LAST_ID,
X.DATAHORA_INICIO FIRST_DATAHORA_INICIO,
FIRST_VALUE(X.DATAHORA_FIM) OVER(ORDER BY X.DATAHORA_INICIO DESC) LAST_DATAHORA_FIM
FROM SPC_FERRAMENTA_SEQUENCIA_SETUP(:I_FERRAMENTA_ID,:I_DATAHORA_INICIO) X,
TBPROGRAMACAO P
WHERE P.ID = X.ID
ORDER BY X.DATAHORA_INICIO)
INTO
:GP_ID,
:UP_ID,
:ESTACAO,
:FIRST_DATAHORA_INICIO,
:LAST_DATAHORA_FIM;
FOR
SELECT
GRUPO_ID,
ID,
DESCRICAO,
SERIE,
MATRIZ_ID,
MATRIZ_DESCRICAO,
LINHA_ID,
TAMANHO,
LARGURA,
COMPRIMENTO,
ALTURA,
DATA,
OBSERVACAO,
TEMPO_SETUP,
TEMPO_SETUP_AQUECIMENTO,
STATUS_CONFLITO
FROM (
SELECT
F.GRUPO_ID,
F.ID,
F.DESCRICAO,
F.SERIE,
F.MATRIZ_ID,
(SELECT FIRST 1 M.DESCRICAO
FROM TBMATRIZ M
WHERE M.CODIGO = F.MATRIZ_ID) MATRIZ_DESCRICAO,
LPAD(I.LINHA_ID,4,'0') LINHA_ID,
I.TAMANHO,
F.LARG LARGURA,
F.COMP COMPRIMENTO,
F.ALT ALTURA,
F.DATA,
F.OBSERVACAO,
F.TEMPO_SETUP,
F.TEMPO_SETUP_AQUECIMENTO,
COALESCE((SELECT FIRST 1 DATAHORA_INICIO
FROM TBPROGRAMACAO P
WHERE P.FERRAMENTA_ID = F.ID
AND P.DATAHORA_INICIO > '01.01.2010'
AND P.STATUS IN ('0','1') ORDER BY DATAHORA_INICIO),CAST('01.01.2000 00:00' AS TIMESTAMP)) DATAHORA_INICIO,
COALESCE((SELECT FIRST 1 1
FROM TBPROGRAMACAO W
WHERE W.FERRAMENTA_ID = F.ID
AND W.STATUS IN (0,2)
AND ( FO.DATAHORA_INICIO BETWEEN W.DATAHORA_INICIO AND W.DATAHORA_FIM
OR FO.DATAHORA_FIM BETWEEN W.DATAHORA_INICIO AND W.DATAHORA_FIM
OR W.DATAHORA_INICIO BETWEEN FO.DATAHORA_INICIO AND FO.DATAHORA_FIM
OR W.DATAHORA_FIM BETWEEN FO.DATAHORA_INICIO AND FO.DATAHORA_FIM)
),0) AS STATUS_CONFLITO
FROM
TBFERRAMENTARIA F,
TBFERRAMENTARIA_ITEM I,
(SELECT
X.LINHA_ID,
I.TAMANHO,
X.MATRIZ_ID,
X.UP_ID,
X.ESTACAO,
X.FERRAMENTA_ID,
X.LARGURA,
X.COMPRIMENTO,
X.ALTURA,
X.DATAHORA_INICIO,
X.DATAHORA_FIM
FROM (
SELECT
SU.UP_ID,
SU.ID ESTACAO,
F.MATRIZ_ID,
DH.DATAHORA_INICIO,
DH.DATAHORA_FIM,
F.ID FERRAMENTA_ID,
SU.LARG LARGURA,
SU.COMP COMPRIMENTO,
SU.ALT ALTURA,
(SELECT FIRST 1 M.LINHA_CODIGO LINHA_ID
FROM TBPROGRAMACAO P, VWREMESSA_TALAO T, TBMODELO M
WHERE M.CODIGO = T.MODELO_ID
AND P.TIPO = 'A'
AND P.TABELA_ID = T.ID
AND P.DATAHORA_INICIO >= DH.DATAHORA_INICIO
AND P.DATAHORA_FIM <= DH.DATAHORA_FIM
AND P.UP_ID = :UP_ID
AND P.ESTACAO = :ESTACAO
and p.ferramenta_id = f.id
)LINHA_ID
FROM TBFERRAMENTARIA F, TBSUB_UP SU,
(SELECT FIRST 1
CAST(:FIRST_DATAHORA_INICIO AS TIMESTAMP)DATAHORA_INICIO,
CAST(:LAST_DATAHORA_FIM AS TIMESTAMP)DATAHORA_FIM FROM RDB$DATABASE) DH
WHERE F.ID = :I_FERRAMENTA_ID
AND SU.UP_ID = :UP_ID
AND SU.ID = :ESTACAO) X,
TBFERRAMENTARIA_ITEM I
WHERE
I.FERRAMENTARIA_ID = X.FERRAMENTA_ID
AND I.LINHA_ID = X.LINHA_ID) FO
WHERE
F.STATUS = '1'
--AND COALESCE(F.SITUACAO,'E') = 'E'
AND F.ID = I.FERRAMENTARIA_ID
AND F.ID <> FO.FERRAMENTA_ID
AND I.LINHA_ID = FO.LINHA_ID
AND I.TAMANHO = FO.TAMANHO
--AND F.MATRIZ_ID = FO.MATRIZ_ID
AND F.LARG <= FO.LARGURA
AND F.COMP <= FO.COMPRIMENTO
AND F.ALT <= FO.ALTURA
AND F.LARG > 0
AND F.COMP > 0
AND F.ALT > 0
ORDER BY LARG DESC, COMP DESC, ALT DESC, SERIE
) Z
INTO
:GRUPO_ID,
:ID,
:DESCRICAO,
:SERIE,
:MATRIZ_ID,
:MATRIZ_DESCRICAO,
:LINHA_ID,
:TAMANHO,
:LARGURA,
:COMPRIMENTO,
:ALTURA,
:DATA,
:OBSERVACAO,
:TEMPO_SETUP,
:TEMPO_SETUP_AQUECIMENTO,
:STATUS_CONFLITO
DO
BEGIN
SUSPEND;
END
END
^
ALTER PROCEDURE SPC_PECA(
CODIGO_BARRAS VARCHAR(50))
RETURNS (
TIPO VARCHAR(4),
TABELA VARCHAR(92),
ID INTEGER,
FAMILIA_ID INTEGER,
FAMILIA_DESCRICAO VARCHAR(80),
PRODUTO_ID INTEGER,
PRODUTO_DESCRICAO VARCHAR(400),
TAMANHO INTEGER,
TAMANHO_DESCRICAO VARCHAR(200),
QUANTIDADE NUMERIC(18,5),
SALDO_FISICO NUMERIC(18,5),
SALDO_ALOCADO NUMERIC(18,4),
SALDO NUMERIC(18,5),
UM VARCHAR(12),
QUANTIDADE_ALTERNATIVO NUMERIC(18,5),
SALDO_FISICO_ALTERNATIVO NUMERIC(18,8),
SALDO_ALOCADO_ALTERNATIVO NUMERIC(18,4),
SALDO_ALTERNATIVO NUMERIC(18,8),
UM_ALTERNATIVO VARCHAR(12),
STATUS INTEGER,
STATUS_DESCRICAO VARCHAR(84))
AS
DECLARE PROCEDURE SUB_SPC_LOCATE_PECA(CODIGO_BARRAS VARCHAR(50)) RETURNS(TIPO VARCHAR(4), TABELA VARCHAR(36), ID INTEGER, PRODUTO_ID INTEGER, TAMANHO INTEGER, QUANTIDADE NUMERIC(18,4), SALDO_FISICO NUMERIC(18,4), QUANTIDADE_ALTERNATIVO NUMERIC(18,4), SALDO_FISICO_ALTERNATIVO NUMERIC(18,8), ALOCADO_DADOS VARCHAR(40), STATUS INTEGER) AS BEGIN
/* PECA DE TALAO DETALHADO */
IF (POSITION('RD' IN CODIGO_BARRAS) = 1) THEN --
BEGIN --
ID = CAST(REPLACE(CODIGO_BARRAS, 'RD', '') AS INTEGER);
FOR
SELECT TRIM('D') TIPO,
TRIM('VWREMESSA_TALAO_DETALHE') TABELA,
D.ID,
D.PRODUTO_ID,
D.TAMANHO,
D.QUANTIDADE_PRODUCAO QUANTIDADE,
D.QUANTIDADE_SALDO SALDO_FISICO,
D.QUANTIDADE_ALTERN_PRODUCAO QUANTIDADE_ALTERNATIVO,
D.QUANTIDADE_ALTERN_SALDO SALDO_FISICO_ALTERNATIVO,
(SELECT LPAD(COALESCE(SUM(V.QUANTIDADE), 0), 20) || LPAD(COALESCE(SUM(V.QUANTIDADE_ALTERNATIVA), 0), 20)
FROM TBREMESSA_TALAO_VINCULO V
WHERE V.STATUS <> '1' AND
V.TIPO = 'D' AND
V.TABELA_ID = D.ID) ALOCADO_DADOS,
IIF(D.STATUS = 3, 1, 0) STATUS
FROM VWREMESSA_TALAO_DETALHE D
WHERE D.ID = :ID
INTO TIPO,
TABELA,
ID,
PRODUTO_ID,
TAMANHO,
QUANTIDADE,
SALDO_FISICO,
QUANTIDADE_ALTERNATIVO,
SALDO_FISICO_ALTERNATIVO,
ALOCADO_DADOS,
STATUS DO SUSPEND;
END --
ELSE --
/* PECA DE TALAO DETALHADO */
IF (POSITION('P' IN CODIGO_BARRAS) = 1) THEN --
BEGIN --
ID = CAST(REPLACE(CODIGO_BARRAS, 'P', '') AS INTEGER);
FOR
SELECT TRIM('R') TIPO,
TRIM('TBREVISAO') TABELA,
R.ID,
R.PRODUTO_ID,
R.TAMANHO,
R.PESO_LIQUIDO QUANTIDADE,
R.SALDO SALDO_FISICO,
R.METRAGEM QUANTIDADE_ALTERNATIVO,
R.METRAGEM_SALDO SALDO_FISICO_ALTERNATIVO,
(SELECT LPAD(COALESCE(SUM(V.QUANTIDADE), 0), 20) || LPAD(COALESCE(SUM(V.QUANTIDADE_ALTERNATIVA), 0), 20)
FROM TBREMESSA_TALAO_VINCULO V
WHERE V.STATUS <> '1' AND
V.TIPO = 'R' AND
V.TABELA_ID = R.ID) ALOCADO_DADOS,
IIF(((R.RESULTADO = 'I' OR R.RESULTADO = 'R' OR AVULSO = '1') OR (R.RESULTADO = 'P' AND R.STATUS_OB = '2')), 1, 0) STATUS
FROM TBREVISAO R
WHERE R.ID = :ID
INTO TIPO,
TABELA,
ID,
PRODUTO_ID,
TAMANHO,
QUANTIDADE,
SALDO_FISICO,
QUANTIDADE_ALTERNATIVO,
SALDO_FISICO_ALTERNATIVO,
ALOCADO_DADOS,
STATUS DO SUSPEND;
END --
END
begin
FOR
SELECT
Y.TIPO,
Y.TABELA,
Y.ID,
F.CODIGO FAMILIA_ID,
F.DESCRICAO FAMILIA_DESCRICAO,
Y.PRODUTO_ID,
P.DESCRICAO PRODUTO_DESCRICAO,
Y.TAMANHO,
FN_TAMANHO_GRADE(P.GRADE_CODIGO,Y.TAMANHO) TAMANHO_DESCRICAO,
Y.QUANTIDADE,
Y.SALDO_FISICO,
Y.SALDO_ALOCADO,
Y.SALDO_FISICO - Y.SALDO_ALOCADO SALDO,
P.UNIDADEMEDIDA_SIGLA UM,
IIF(TRIM(F.UNIDADEMEDIDA_ALTERNATIVO) = '', NULL,Y.QUANTIDADE_ALTERNATIVO) QUANTIDADE_ALTERNATIVO,
IIF(TRIM(F.UNIDADEMEDIDA_ALTERNATIVO) = '', NULL,Y.SALDO_FISICO_ALTERNATIVO) SALDO_FISICO_ALTERNATIVO,
IIF(TRIM(F.UNIDADEMEDIDA_ALTERNATIVO) = '', NULL,Y.SALDO_ALOCADO_ALTERNATIVO) SALDO_ALOCADO_ALTERNATIVO,
IIF(TRIM(F.UNIDADEMEDIDA_ALTERNATIVO) = '', NULL,Y.SALDO_FISICO_ALTERNATIVO - Y.SALDO_ALOCADO_ALTERNATIVO) SALDO_ALTERNATIVO,
IIF(TRIM(F.UNIDADEMEDIDA_ALTERNATIVO) = '', NULL, TRIM(F.UNIDADEMEDIDA_ALTERNATIVO)) UM_ALTERNATIVO,
Y.STATUS,
Y.STATUS_DESCRICAO
FROM (
SELECT
TIPO,
TABELA,
ID,
PRODUTO_ID,
TAMANHO,
QUANTIDADE,
SALDO_FISICO,
CAST(SUBSTRING(ALOCADO_DADOS FROM 01 FOR 20) AS NUMERIC(15,4)) SALDO_ALOCADO,
QUANTIDADE_ALTERNATIVO,
SALDO_FISICO_ALTERNATIVO,
CAST(SUBSTRING(ALOCADO_DADOS FROM 21 FOR 40) AS NUMERIC(15,4)) SALDO_ALOCADO_ALTERNATIVO,
STATUS,
TRIM(CASE STATUS
WHEN 0 THEN 'INDISPONIVEL PARA USO'
WHEN 1 THEN 'DISPONIVEL PARA USO'
ELSE 'INDEFINIDO' END) STATUS_DESCRICAO
FROM (
SELECT
TIPO,
TABELA,
ID,
PRODUTO_ID,
TAMANHO,
QUANTIDADE,
SALDO_FISICO,
QUANTIDADE_ALTERNATIVO,
SALDO_FISICO_ALTERNATIVO,
ALOCADO_DADOS,
STATUS
FROM
SUB_SPC_LOCATE_PECA(:CODIGO_BARRAS)) X
) Y,
TBPRODUTO P,
TBFAMILIA F
WHERE P.CODIGO = Y.PRODUTO_ID
AND F.CODIGO = P.FAMILIA_CODIGO
INTO
TIPO,
TABELA,
ID,
FAMILIA_ID,
FAMILIA_DESCRICAO,
PRODUTO_ID,
PRODUTO_DESCRICAO,
TAMANHO,
TAMANHO_DESCRICAO,
QUANTIDADE,
SALDO_FISICO,
SALDO_ALOCADO,
SALDO,
UM,
QUANTIDADE_ALTERNATIVO,
SALDO_FISICO_ALTERNATIVO,
SALDO_ALOCADO_ALTERNATIVO,
SALDO_ALTERNATIVO,
UM_ALTERNATIVO,
STATUS,
STATUS_DESCRICAO
DO SUSPEND;
end
^
ALTER PROCEDURE SPI_ESTOQUE_TRANSACAO(
TABELA VARCHAR(32),
TABELA_NIVEL INTEGER,
TABELA_ID INTEGER,
ESTABELECIMENTO_ID INTEGER,
LOCALIZACAO_ID INTEGER,
DATA DATE,
PRODUTO_ID INTEGER,
TAMANHO INTEGER,
QUANTIDADE NUMERIC(10,5),
TIPO CHAR,
OPERACAO VARCHAR(3),
CONSUMO CHAR,
CCUSTO VARCHAR(10),
OBSERVACAO VARCHAR(100),
TRANSACAO_ID INTEGER = NULL,
DOCUMENTO INTEGER = NULL,
TALAO INTEGER = 0)
AS
DECLARE VARIABLE USUARIO_ID INTEGER;
DECLARE VARIABLE T01 NUMERIC(10,5);
DECLARE VARIABLE T02 NUMERIC(10,5);
DECLARE VARIABLE T03 NUMERIC(10,5);
DECLARE VARIABLE T04 NUMERIC(10,5);
DECLARE VARIABLE T05 NUMERIC(10,5);
DECLARE VARIABLE T06 NUMERIC(10,5);
DECLARE VARIABLE T07 NUMERIC(10,5);
DECLARE VARIABLE T08 NUMERIC(10,5);
DECLARE VARIABLE T09 NUMERIC(10,5);
DECLARE VARIABLE T10 NUMERIC(10,5);
DECLARE VARIABLE T11 NUMERIC(10,5);
DECLARE VARIABLE T12 NUMERIC(10,5);
DECLARE VARIABLE T13 NUMERIC(10,5);
DECLARE VARIABLE T14 NUMERIC(10,5);
DECLARE VARIABLE T15 NUMERIC(10,5);
DECLARE VARIABLE T16 NUMERIC(10,5);
DECLARE VARIABLE T17 NUMERIC(10,5);
DECLARE VARIABLE T18 NUMERIC(10,5);
DECLARE VARIABLE T19 NUMERIC(10,5);
DECLARE VARIABLE T20 NUMERIC(10,5);
BEGIN
USUARIO_ID = COALESCE((SELECT FIRST 1 CODIGO FROM TBUSUARIO U WHERE U.USUARIO = CURRENT_USER),0);
IF ( COALESCE(TRANSACAO_ID,0) = 0 ) THEN
BEGIN
TRANSACAO_ID = COALESCE((SELECT GEN_ID(GTBESTOQUE_TRANSACAO_ITEM, 1) FROM RDB$DATABASE),0);
END
IF ( COALESCE(DOCUMENTO,0) = 0 ) THEN
BEGIN
DOCUMENTO = TABELA_ID;
END
IF ( NOT COALESCE(QUANTIDADE,0) > 0 ) THEN
BEGIN
EXCEPTION "..." 'NAO É PERMITIDO QUANTIDADE ZERADA NA TRANSACAO DE ESTOQUE.';
END
TALAO = COALESCE(TALAO,0);
T01 = IIF(TAMANHO = 01, QUANTIDADE, 0);
T02 = IIF(TAMANHO = 02, QUANTIDADE, 0);
T03 = IIF(TAMANHO = 03, QUANTIDADE, 0);
T04 = IIF(TAMANHO = 04, QUANTIDADE, 0);
T05 = IIF(TAMANHO = 05, QUANTIDADE, 0);
T06 = IIF(TAMANHO = 06, QUANTIDADE, 0);
T07 = IIF(TAMANHO = 07, QUANTIDADE, 0);
T08 = IIF(TAMANHO = 08, QUANTIDADE, 0);
T09 = IIF(TAMANHO = 09, QUANTIDADE, 0);
T10 = IIF(TAMANHO = 10, QUANTIDADE, 0);
T11 = IIF(TAMANHO = 11, QUANTIDADE, 0);
T12 = IIF(TAMANHO = 12, QUANTIDADE, 0);
T13 = IIF(TAMANHO = 13, QUANTIDADE, 0);
T14 = IIF(TAMANHO = 14, QUANTIDADE, 0);
T15 = IIF(TAMANHO = 15, QUANTIDADE, 0);
T16 = IIF(TAMANHO = 16, QUANTIDADE, 0);
T17 = IIF(TAMANHO = 17, QUANTIDADE, 0);
T18 = IIF(TAMANHO = 18, QUANTIDADE, 0);
T19 = IIF(TAMANHO = 19, QUANTIDADE, 0);
T20 = IIF(TAMANHO = 20, QUANTIDADE, 0);
INSERT INTO TBESTOQUE_TRANSACAO_ITEM (
TABELA,
TABELA_ID,
TABELA_NIVEL,
ESTABELECIMENTO_CODIGO,
LOCALIZACAO_CODIGO,
PRODUTO_CODIGO,
CONTROLE,
DATA,
DOCUMENTO,
NFS_ITEM_CONTROLE,
NFE_ITEM_CONTROLE,
OPERACAO_CODIGO,
TIPO,
QUANTIDADE,
REMESSA_ITEM_CONTROLE,
T01,
T02,
T03,
T04,
T05,
T06,
T07,
T08,
T09,
T10,
T11,
T12,
T13,
T14,
T15,
T16,
T17,
T18,
T19,
T20,
CUSTO_UNITARIO,
TRANSACAO_CONTROLE,
CONSUMO,
USUARIO_CODIGO,
USUARIO_DATA,
TURNO_CODIGO,
CENTRO_DE_CUSTO,
OBSERVACAO,
ESPUMACAO,
CLASSIFICACAO,
REVISAO_CONTROLE,
EMPRESA_CODIGO,
CUSTO_MEDIO
) VALUES(
:TABELA,
:TABELA_ID,
:TABELA_NIVEL,
:ESTABELECIMENTO_ID,
:LOCALIZACAO_ID,
:PRODUTO_ID,
:TRANSACAO_ID,
:DATA,
:DOCUMENTO,
0,
0,
:OPERACAO,
:TIPO,
:QUANTIDADE,
:TALAO,
:T01,
:T02,
:T03,
:T04,
:T05,
:T06,
:T07,
:T08,
:T09,
:T10,
:T11,
:T12,
:T13,
:T14,
:T15,
:T16,
:T17,
:T18,
:T19,
:T20,
0,
0,
:CONSUMO,
:USUARIO_ID,
CURRENT_DATE,
0,
:CCUSTO,
:OBSERVACAO,
'0',
0,
0,
0,
0
);
END
^
ALTER PROCEDURE SPI_FOLPAG_PROVENTO_CONTABIL(
ESTABELECIMENTO_ID INTEGER,
ANO INTEGER,
MES INTEGER,
FOLHA_TIPO VARCHAR(12))
RETURNS (
COLABORADOR_ID INTEGER,
ENCARGO_CODIGO INTEGER,
ENCARGO_DESCRICAO VARCHAR(200),
VALOR NUMERIC(18,2),
VALOR_INICIAL NUMERIC(18,2),
PERCENTUAL NUMERIC(18,2),
CCUSTO VARCHAR(40),
CCUSTO_CONTABILIZACAO VARCHAR(40),
TETO CHAR(4),
ENC_SAL_BS_FERIAS INTEGER,
ENC_SAL_BS_DECIMO INTEGER,
ENC_INSS_FERIAS INTEGER,
ENC_INSS_DECIMO INTEGER,
VALOR_SAL_BS_FERIAS NUMERIC(18,2),
VALOR_SAL_BS_DECIMO NUMERIC(18,2))
AS
declare variable vvalor numeric(15,2);
Begin
For
Select C.Colaborador_Id, C.Encargo_Codigo, A.Descricao Encargo_Descricao,
C.Valor, B.Percentual, C.CCusto, C.CCusto_Contabilizacao, B.Teto, B.Valor_Inicial,
B.Enc_Sal_Bs_Ferias, B.Enc_Sal_Bs_Decimo, B.Enc_Inss_Ferias, B.Enc_Inss_Decimo,
Coalesce((Select First 1 E.Valor From TbFolPag_Encargo_Detalhe E
Where E.Colaborador_Id = C.COlaborador_Id
and E.Estabelecimento_Id = C.Estabelecimento_Id
and E.Ano = C.Ano
and E.Mes = C.Mes
and E.FOLHA_TIPO = C.FOLHA_TIPO
and E.Encargo_Codigo = Enc_Sal_Bs_Ferias),0.00) Valor_Sal_Bs_Ferias,
Coalesce((Select First 1 E.Valor From TbFolPag_Encargo_Detalhe E
Where E.Colaborador_Id = C.Colaborador_Id
and E.Estabelecimento_Id = C.Estabelecimento_Id
and E.Ano = C.Ano
and E.Mes = C.Mes
and E.FOLHA_TIPO = C.FOLHA_TIPO
and E.Encargo_Codigo = Enc_Sal_Bs_Decimo),0.00) Valor_Sal_Bs_Decimo
From TbFolPag_Encargo A, TbFolPag_Inss B, TbFolPag_Encargo_Detalhe C
Where A.Codigo = B.Encargo_Salario
and A.Codigo = C.Encargo_Codigo
and C.Valor Between B.Valor_Inicial and B.Valor_Final
and C.Estabelecimento_Id = :Estabelecimento_Id
and C.Ano = :Ano
and C.Mes = :Mes
and C.FOLHA_TIPO = :FOLHA_TIPO
Into :COLABORADOR_ID,:ENCARGO_CODIGO,:ENCARGO_DESCRICAO,:VALOR,:PERCENTUAL,
:CCUSTO,:CCUSTO_CONTABILIZACAO,:TETO,:VALOR_INICIAL,:ENC_SAL_BS_FERIAS,
:ENC_SAL_BS_DECIMO,:ENC_INSS_FERIAS,:ENC_INSS_DECIMO,:VALOR_SAL_BS_FERIAS,
:VALOR_SAL_BS_DECIMO
Do
Begin
if (:VALOR_SAL_BS_FERIAS > 0 and :PERCENTUAL > 0) then
begin
vValor = :VALOR_SAL_BS_FERIAS * (:PERCENTUAL/100.0000);
if (:Teto = '1') then
Begin
vValor = :VALOR_INICIAL * (:PERCENTUAL/100.0000);
End
insert into TBFOLPAG_ENCARGO_DETALHE (estabelecimento_id, ano, mes, FOLHA_TIPO, colaborador_id, encargo_codigo, quantidade, valor, CCUSTO, ccusto_contabilizacao)
values (:estabelecimento_id, :ano, :mes, :FOLHA_TIPO, :colaborador_id, :ENC_INSS_FERIAS, 0, :vValor, :CCUSTO, :ccusto_contabilizacao);
End
if (:VALOR_SAL_BS_DECIMO > 0 and :PERCENTUAL > 0) then
begin
vValor = VALOR_SAL_BS_DECIMO * (PERCENTUAL/100.0000);
if (:Teto = '1') then
Begin
vValor = :VALOR_INICIAL * (:PERCENTUAL/100.0000);
End
insert into TBFOLPAG_ENCARGO_DETALHE (estabelecimento_id, ano, mes, FOLHA_TIPO, colaborador_id, encargo_codigo, quantidade, valor, CCUSTO, ccusto_contabilizacao)
values (:estabelecimento_id, :ano, :mes, :FOLHA_TIPO, :colaborador_id, :ENC_INSS_DECIMO, 0, :vValor, :CCUSTO, :ccusto_contabilizacao);
End
End
End
^
ALTER PROCEDURE SPI_REM_CONSUMO_INSUMO3(
ESTABELECIMENTO_ID INTEGER,
REMESSA_ID INTEGER)
AS
DECLARE VARIABLE O_ESTABELECIMENTO_ID INTEGER;
DECLARE VARIABLE O_REMESSA_ID INTEGER;
DECLARE VARIABLE O_REMESSA_TALAO_ID INTEGER;
DECLARE VARIABLE O_CONTROLE INTEGER;
DECLARE VARIABLE O_LOCALIZACAO_ID INTEGER;
DECLARE VARIABLE O_PRODUTO_ID INTEGER;
DECLARE VARIABLE O_TAMANHO INTEGER;
DECLARE VARIABLE O_DENSIDADE NUMERIC(15,2);
DECLARE VARIABLE O_ESPESSURA NUMERIC(15,2);
DECLARE VARIABLE O_QUANTIDADE NUMERIC(15,4);
DECLARE VARIABLE O_QUANTIDADE_ALTERNATIVA NUMERIC(15,4);
DECLARE VARIABLE REMESSA_TALAO_ID INTEGER;
DECLARE VARIABLE REMESSA_TALAO_DETALHE_ID INTEGER;
DECLARE VARIABLE MODELO_ID INTEGER;
DECLARE VARIABLE COR_ID INTEGER;
DECLARE VARIABLE TAMANHO INTEGER;
DECLARE VARIABLE DENSIDADE SMALLINT;
DECLARE VARIABLE ESPESSURA NUMERIC(15,4);
DECLARE VARIABLE TALAO_QUANTIDADE NUMERIC(15,4);
DECLARE VARIABLE QUANTIDADE NUMERIC(15,4);
DECLARE VARIABLE QUANTIDADE_ALTERNATIVA NUMERIC(15,4);
DECLARE VARIABLE PROJECAO_PRODUTO_ID INTEGER;
DECLARE VARIABLE PROJECAO_TAMANHO INTEGER;
DECLARE VARIABLE PROJECAO_LOCALIZACAO_ID INTEGER;
DECLARE VARIABLE PROJECAO_QUANTIDADE NUMERIC(15,4);
DECLARE VARIABLE FATOR_MULT NUMERIC(10,1);
DECLARE VARIABLE FATOR_DIV NUMERIC(15,4);
DECLARE VARIABLE DESTINO_FAMILIA_ID INTEGER;
DECLARE VARIABLE UM_ALTERNATIVA VARCHAR(3);
DECLARE VARIABLE INCREMENTO INTEGER;
DECLARE VARIABLE CONTROLE2 INTEGER;
DECLARE VARIABLE OLD_TALAO_DETALHE_ID INTEGER;
DECLARE VARIABLE OLD_DESTINO_FAMILIA_ID INTEGER;
DECLARE VARIABLE CONSUMO_QUANTIDADE2 NUMERIC(15,4);
DECLARE VARIABLE CONSUMO_ALTERNATIVO2 NUMERIC(15,4);
DECLARE VARIABLE ACUMULA_PROJECAO CHAR(1);
DECLARE VARIABLE OLD_VALORES VARCHAR(500);
DECLARE VARIABLE OLD_QUANTIDADE_ORIGINAL NUMERIC(15,4);
DECLARE VARIABLE OLD_QUANTIDADE NUMERIC(15,4);
DECLARE VARIABLE OLD_QUANTIDADE_ALTERNATIVA NUMERIC(15,4);
DECLARE VARIABLE PROJECAO_DIRETA INTEGER;
DECLARE VARIABLE FAMILIA_ID INTEGER;
DECLARE VARIABLE PRODUTO_ID INTEGER;
DECLARE VARIABLE CONSUMO_QUANTIDADE1 NUMERIC(15,4);
DECLARE VARIABLE CONSUMO_ALTERNATIVO1 NUMERIC(15,4);
DECLARE VARIABLE CONTROLE1 INTEGER;
DECLARE VARIABLE LOCALIZACAO_ID INTEGER;
DECLARE VARIABLE GP_ID INTEGER;
DECLARE VARIABLE UM VARCHAR(10);
DECLARE VARIABLE CONSUMO_PERMITE_FRACAO VARCHAR(10);
BEGIN
/**
* Limpa os registros atuais para poder recalcular
*/
DELETE FROM VWREMESSA_CONSUMO A WHERE A.ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID AND A.REMESSA_ID = :REMESSA_ID;
CONTROLE1 = 0;
CONTROLE2 = 1;
/**
* Inicio do loop que carrega todos os taloes detalhados da remessa que foi parametrizada
*/
FOR
SELECT
D.REMESSA_TALAO_ID,
D.ID REMESSA_TALAO_DETALHE_ID,
D.MODELO_ID,
D.COR_ID,
D.TAMANHO,
T.DENSIDADE,
T.ESPESSURA,
T.QUANTIDADE TALAO_QUANTIDADE,
D.QUANTIDADE,
D.QUANTIDADE_ALTERN,
P.FAMILIA_CODIGO,
D.PRODUTO_ID,
D.LOCALIZACAO_ID,
T.GP_ID
FROM
VWREMESSA_TALAO_DETALHE D,
VWREMESSA_TALAO T,
TBPRODUTO P
WHERE
D.REMESSA_ID = T.REMESSA_ID
AND D.REMESSA_TALAO_ID = T.REMESSA_TALAO_ID
AND P.CODIGO = D.PRODUTO_ID
AND D.ESTABELECIMENTO_ID = :Estabelecimento_Id
AND D.REMESSA_ID = :REMESSA_ID
AND T.REMESSA_TALAO_ID < 9000 /* Remove os taloes de sobra da remessa */
INTO
:REMESSA_TALAO_ID,
:REMESSA_TALAO_DETALHE_ID,
:MODELO_ID,
:COR_ID,
:TAMANHO,
:DENSIDADE,
:ESPESSURA,
:TALAO_QUANTIDADE,
:QUANTIDADE,
:QUANTIDADE_ALTERNATIVA,
:FAMILIA_ID,
:PRODUTO_ID,
:LOCALIZACAO_ID,
:GP_ID
DO
BEGIN
/**
* Variavel que vai verificar se sera gerada projecao de consumo direto do proprio talao (FAMILIA PROJECAO = FAMILIA TALAO)
*/
PROJECAO_DIRETA = (SELECT FIRST 1 ACUMULA_PROJECAO
FROM TBFAMILIA_MODELO_ALOCACAO A
WHERE A.FAMILIA_ID = :FAMILIA_ID
AND A.FAMILIA_MODELO_ID = :FAMILIA_ID
AND A.GP_ORIGEM = :GP_ID
);
/* Verifica se o item tem projecao de si mesmo (CACHARREL / EDC DIV. ESPUMAS) */
IF (PROJECAO_DIRETA IS NOT NULL) THEN
BEGIN
/**
* Codigo que ira referenciar pares de insumo
*/
CONTROLE1 = COALESCE(CONTROLE1,0)+1;
CONSUMO_QUANTIDADE1 = :QUANTIDADE;
CONSUMO_ALTERNATIVO1 = :QUANTIDADE_ALTERNATIVA;
/**
* Verifica se ACUMULA PROJECAO
*/
IF (PROJECAO_DIRETA = '1') THEN
BEGIN
OLD_VALORES =
(SELECT FIRST 1
(LPAD(COALESCE(QUANTIDADE_ORIGINAL ,0),20)||
LPAD(COALESCE(QUANTIDADE ,0),20)||
LPAD(COALESCE(QUANTIDADE_ALTERNATIVA,0),20))
FROM VWREMESSA_CONSUMO
WHERE ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID
AND REMESSA_ID = :REMESSA_ID
AND REMESSA_TALAO_ID = :REMESSA_TALAO_ID
AND PRODUTO_ID = :PROJECAO_PRODUTO_ID
AND TAMANHO = :PROJECAO_TAMANHO
);
OLD_QUANTIDADE_ORIGINAL = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 1 FOR 20),0) AS NUMERIC(15,4));
OLD_QUANTIDADE = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 21 FOR 20),0) AS NUMERIC(15,4));
OLD_QUANTIDADE_ALTERNATIVA = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 41 FOR 20),0) AS NUMERIC(15,4));
QUANTIDADE = QUANTIDADE + OLD_QUANTIDADE_ORIGINAL;
CONSUMO_QUANTIDADE1 = CONSUMO_QUANTIDADE1 + OLD_QUANTIDADE;
CONSUMO_ALTERNATIVO1 = CONSUMO_ALTERNATIVO1 + OLD_QUANTIDADE_ALTERNATIVA;
/* Atualiza ou insere o consumo na tabela (PROJECAO ACUMULADA) */
UPDATE OR INSERT INTO
VWREMESSA_CONSUMO (
ESTABELECIMENTO_ID,
REMESSA_ID,
REMESSA_TALAO_ID,
CONTROLE,
LOCALIZACAO_ID,
PRODUTO_ID,
TAMANHO,
DENSIDADE,
ESPESSURA,
QUANTIDADE_ORIGINAL,
QUANTIDADE_NECES,
QUANTIDADE_NECES_ALTERN,
QUANTIDADE,
QUANTIDADE_ALTERNATIVA,
SALDO_BAIXAR,
COMPONENTE
) VALUES (
:ESTABELECIMENTO_ID,
:REMESSA_ID,
:REMESSA_TALAO_ID,
:CONTROLE1,
:LOCALIZACAO_ID,
:PRODUTO_ID,
:TAMANHO,
:DENSIDADE,
:ESPESSURA,
:QUANTIDADE,
:CONSUMO_QUANTIDADE1,
:CONSUMO_ALTERNATIVO1,
:CONSUMO_QUANTIDADE1,
:CONSUMO_ALTERNATIVO1,
:CONSUMO_QUANTIDADE1,
'0'
) MATCHING (
ESTABELECIMENTO_ID,
REMESSA_ID,
REMESSA_TALAO_ID,
PRODUTO_ID,
TAMANHO
);
END
ELSE
BEGIN
/* Insere o consumo na tabela (PROJECAO NAO ACUMULADA) */
INSERT INTO
VWREMESSA_CONSUMO (
ESTABELECIMENTO_ID,
REMESSA_ID,
REMESSA_TALAO_ID,
REMESSA_TALAO_DETALHE_ID,
CONTROLE,
LOCALIZACAO_ID,
PRODUTO_ID,
TAMANHO,
DENSIDADE,
ESPESSURA,
QUANTIDADE_ORIGINAL,
QUANTIDADE_NECES,
QUANTIDADE_NECES_ALTERN,
QUANTIDADE,
QUANTIDADE_ALTERNATIVA,
SALDO_BAIXAR,
COMPONENTE
) VALUES (
:ESTABELECIMENTO_ID,
:REMESSA_ID,
:REMESSA_TALAO_ID,
:REMESSA_TALAO_DETALHE_ID,
:CONTROLE1,
:LOCALIZACAO_ID,
:PRODUTO_ID,
:TAMANHO,
:DENSIDADE,
:ESPESSURA,
:QUANTIDADE,
:CONSUMO_QUANTIDADE1,
:CONSUMO_ALTERNATIVO1,
:CONSUMO_QUANTIDADE1,
:CONSUMO_ALTERNATIVO1,
:CONSUMO_QUANTIDADE1,
'0'
);
END
END
ELSE
BEGIN
/**
* Inicializa o loop que carrega e calcula a projecao de consumo do talao detalhado
*/
FOR
/* Consulta de Insumos Independente de Cor */
SELECT
B.CONSUMO_PRODUTO_CODIGO PRODUTO_ID,
B.Tam TAMANHO,
P.Localizacao_Codigo LOCALIZACAO_ID,
Cast((
(Case When (Cast(:Tamanho as integer)= 0) and (B.CONSUMO_QUANTIDADE > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 1) and (B.CONSUMO_QUANTIDADE_T01 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T01 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 2) and (B.CONSUMO_QUANTIDADE_T02 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T02 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 3) and (B.CONSUMO_QUANTIDADE_T03 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T03 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 4) and (B.CONSUMO_QUANTIDADE_T04 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T04 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 5) and (B.CONSUMO_QUANTIDADE_T05 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T05 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 6) and (B.CONSUMO_QUANTIDADE_T06 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T06 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 7) and (B.CONSUMO_QUANTIDADE_T07 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T07 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 8) and (B.CONSUMO_QUANTIDADE_T08 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T08 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 9) and (B.CONSUMO_QUANTIDADE_T09 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T09 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=10) and (B.CONSUMO_QUANTIDADE_T10 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T10 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=11) and (B.CONSUMO_QUANTIDADE_T11 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T11 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=12) and (B.CONSUMO_QUANTIDADE_T12 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T12 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=13) and (B.CONSUMO_QUANTIDADE_T13 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T13 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=14) and (B.CONSUMO_QUANTIDADE_T14 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T14 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=15) and (B.CONSUMO_QUANTIDADE_T15 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T15 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=16) and (B.CONSUMO_QUANTIDADE_T16 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T16 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=17) and (B.CONSUMO_QUANTIDADE_T17 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T17 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=18) and (B.CONSUMO_QUANTIDADE_T18 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T18 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=19) and (B.CONSUMO_QUANTIDADE_T19 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T19 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=20) and (B.CONSUMO_QUANTIDADE_T20 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.CONSUMO_QUANTIDADE_T20 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end)) as Numeric(15,4)) Projecao,
1 FATOR_MATRIZ,
B.FATOR_CONVERSAO,
FMA.FAMILIA_MODELO_ID,
(SELECT FIRST 1 UNIDADEMEDIDA_ALTERNATIVO FROM TBFAMILIA WHERE CODIGO = P.FAMILIA_CODIGO)UM_ALTERNATIVA,
FMA.ACUMULA_PROJECAO
FROM
TBMODELO_CONSUMO B,
TBMODELO M,
TBPRODUTO P,
TBFAMILIA_MODELO_ALOCACAO FMA
WHERE
B.MODELO_CODIGO = :MODELO_ID
AND B.CONSUMO_PRODUTO_CODIGO = P.CODIGO
AND B.MODELO_CODIGO = M.CODIGO
AND M.FAMILIA_CODIGO = FMA.FAMILIA_ID
AND P.FAMILIA_CODIGO = FMA.FAMILIA_MODELO_ID
AND FMA.CONSUMO = '1' /* Carrega somente familias que geram consumo */
UNION
/* Consulta de Insumos por Cor */
SELECT
B.PRODUTO_ID,
B.Tam TAMANHO,
P.Localizacao_Codigo LOCALIZACAO_ID,
Cast((
(Case When (Cast(:Tamanho as integer)= 0) and (B.QUANTIDADE > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.QUANTIDADE AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 1) and (B.T01 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T01 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 2) and (B.T02 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T02 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 3) and (B.T03 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T03 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 4) and (B.T04 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T04 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 5) and (B.T05 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T05 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 6) and (B.T06 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T06 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 7) and (B.T07 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T07 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 8) and (B.T08 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T08 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)= 9) and (B.T09 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T09 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=10) and (B.T10 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T10 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=11) and (B.T11 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T11 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=12) and (B.T12 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T12 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=13) and (B.T13 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T13 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=14) and (B.T14 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T14 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=15) and (B.T15 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T15 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=16) and (B.T16 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T16 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=17) and (B.T17 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T17 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=18) and (B.T18 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T18 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=19) and (B.T19 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T19 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end) +
(Case When (Cast(:Tamanho as integer)=20) and (B.T20 > 0) Then Cast( (Cast(:Quantidade as Numeric(15,4)) * CAST(B.T20 AS NUMERIC(15,8))) as Numeric(15,4)) else 0 end)) as Numeric(15,4)) Projecao,
B.FATOR_MATRIZ,
B.FATOR_CONVERSAO,
FMA.FAMILIA_MODELO_ID,
(SELECT FIRST 1 UNIDADEMEDIDA_ALTERNATIVO FROM TBFAMILIA WHERE CODIGO = P.FAMILIA_CODIGO)UM_ALTERNATIVA,
FMA.ACUMULA_PROJECAO
FROM
TBMODELO_CONSUMO_COR B,
TBMODELO M,
TBPRODUTO P,
TBFAMILIA_MODELO_ALOCACAO FMA
WHERE
B.MODELO_ID = :MODELO_ID
AND B.COR_ID = :COR_ID
AND B.PRODUTO_ID = P.CODIGO
AND B.MODELO_ID = M.CODIGO
AND M.FAMILIA_CODIGO = FMA.FAMILIA_ID
AND P.FAMILIA_CODIGO = FMA.FAMILIA_MODELO_ID
AND FMA.CONSUMO = '1' /* Carrega somente familias que geram consumo */
INTO
:PROJECAO_PRODUTO_ID,
:PROJECAO_TAMANHO,
:PROJECAO_LOCALIZACAO_ID,
:PROJECAO_QUANTIDADE,
:FATOR_MULT,
:FATOR_DIV,
:DESTINO_FAMILIA_ID,
:UM_ALTERNATIVA,
:ACUMULA_PROJECAO
DO
BEGIN
/**
* Codigo que ira referenciar pares de insumo
*/
IF ((OLD_TALAO_DETALHE_ID <> :REMESSA_TALAO_DETALHE_ID) OR
(OLD_DESTINO_FAMILIA_ID <> :DESTINO_FAMILIA_ID))
THEN
BEGIN
CONTROLE2 = COALESCE(CONTROLE2,0)+1;
END
/**
* Inicio do loop que forma os pares de insumo caso FATOR_MULT for maior que 1
*/
INCREMENTO = 1;
WHILE (INCREMENTO <= :FATOR_MULT) DO
BEGIN
/**
* Verifica se houve alguma projecao gerada
*/
IF (:PROJECAO_QUANTIDADE > 0) THEN
BEGIN
/* Calcula as projecaes de consumo */
CONSUMO_QUANTIDADE2 = :PROJECAO_QUANTIDADE / :FATOR_DIV / :FATOR_MULT;
CONSUMO_ALTERNATIVO2 = IIF((TRIM(UM_ALTERNATIVA)='') OR UM_ALTERNATIVA IS NULL,0,:PROJECAO_QUANTIDADE / :FATOR_MULT);
IF (ACUMULA_PROJECAO = '1') THEN
BEGIN
OLD_VALORES =
(SELECT FIRST 1
(LPAD(COALESCE(QUANTIDADE_ORIGINAL ,0),20)||
LPAD(COALESCE(QUANTIDADE ,0),20)||
LPAD(COALESCE(QUANTIDADE_ALTERNATIVA,0),20))
FROM VWREMESSA_CONSUMO
WHERE ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID
AND REMESSA_ID = :REMESSA_ID
AND REMESSA_TALAO_ID = :REMESSA_TALAO_ID
AND PRODUTO_ID = :PROJECAO_PRODUTO_ID
AND TAMANHO = :PROJECAO_TAMANHO
);
OLD_QUANTIDADE_ORIGINAL = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 1 FOR 20),0) AS NUMERIC(15,4));
OLD_QUANTIDADE = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 21 FOR 20),0) AS NUMERIC(15,4));
OLD_QUANTIDADE_ALTERNATIVA = CAST(COALESCE(SUBSTRING(OLD_VALORES FROM 41 FOR 20),0) AS NUMERIC(15,4));
QUANTIDADE = TALAO_QUANTIDADE;
--QUANTIDADE = QUANTIDADE + OLD_QUANTIDADE_ORIGINAL;
CONSUMO_QUANTIDADE2 = CONSUMO_QUANTIDADE2 + OLD_QUANTIDADE;
CONSUMO_ALTERNATIVO2 = CONSUMO_ALTERNATIVO2 + OLD_QUANTIDADE_ALTERNATIVA;
/* Atualiza ou insere o consumo na tabela (PROJECAO ACUMULADA) */
UPDATE OR INSERT INTO
VWREMESSA_CONSUMO (
ESTABELECIMENTO_ID,
REMESSA_ID,
REMESSA_TALAO_ID,
CONTROLE,
LOCALIZACAO_ID,
PRODUTO_ID,
TAMANHO,
DENSIDADE,
ESPESSURA,
QUANTIDADE_ORIGINAL,
QUANTIDADE_NECES,
QUANTIDADE_NECES_ALTERN,
QUANTIDADE,
QUANTIDADE_ALTERNATIVA,
SALDO_BAIXAR,
COMPONENTE
) VALUES (
:ESTABELECIMENTO_ID,
:REMESSA_ID,
:REMESSA_TALAO_ID,
:CONTROLE2,
:PROJECAO_LOCALIZACAO_ID,
:PROJECAO_PRODUTO_ID,
:PROJECAO_TAMANHO,
:DENSIDADE,
:ESPESSURA,
:QUANTIDADE,
:CONSUMO_QUANTIDADE2,
:CONSUMO_ALTERNATIVO2,
:CONSUMO_QUANTIDADE2,
:CONSUMO_ALTERNATIVO2,
:CONSUMO_QUANTIDADE2,
'0'
) MATCHING (
ESTABELECIMENTO_ID,
REMESSA_ID,
REMESSA_TALAO_ID,
PRODUTO_ID,
TAMANHO
);
END
ELSE
BEGIN
/* Insere o consumo na tabela (PROJECAO NAO ACUMULADA) */
INSERT INTO
VWREMESSA_CONSUMO (
ESTABELECIMENTO_ID,
REMESSA_ID,
REMESSA_TALAO_ID,
REMESSA_TALAO_DETALHE_ID,
CONTROLE,
LOCALIZACAO_ID,
PRODUTO_ID,
TAMANHO,
DENSIDADE,
ESPESSURA,
QUANTIDADE_ORIGINAL,
QUANTIDADE_NECES,
QUANTIDADE_NECES_ALTERN,
QUANTIDADE,
QUANTIDADE_ALTERNATIVA,
SALDO_BAIXAR,
COMPONENTE
) VALUES (
:ESTABELECIMENTO_ID,
:REMESSA_ID,
:REMESSA_TALAO_ID,
:REMESSA_TALAO_DETALHE_ID,
:CONTROLE2,
:PROJECAO_LOCALIZACAO_ID,
:PROJECAO_PRODUTO_ID,
:PROJECAO_TAMANHO,
:DENSIDADE,
:ESPESSURA,
:QUANTIDADE,
:CONSUMO_QUANTIDADE2,
:CONSUMO_ALTERNATIVO2,
:CONSUMO_QUANTIDADE2,
:CONSUMO_ALTERNATIVO2,
:CONSUMO_QUANTIDADE2,
'0'
);
END
END
INCREMENTO = INCREMENTO+1;
END
OLD_TALAO_DETALHE_ID = :REMESSA_TALAO_DETALHE_ID;
OLD_DESTINO_FAMILIA_ID = :DESTINO_FAMILIA_ID;
O_ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID ;
O_REMESSA_ID = :REMESSA_ID ;
O_REMESSA_TALAO_ID = :REMESSA_TALAO_ID ;
O_CONTROLE = :CONTROLE2 ;
O_LOCALIZACAO_ID = :PROJECAO_LOCALIZACAO_ID ;
O_PRODUTO_ID = :PROJECAO_PRODUTO_ID ;
O_TAMANHO = :PROJECAO_TAMANHO ;
O_DENSIDADE = :DENSIDADE ;
O_ESPESSURA = :ESPESSURA ;
O_QUANTIDADE = :CONSUMO_QUANTIDADE2 ;
O_QUANTIDADE_ALTERNATIVA = :CONSUMO_ALTERNATIVO2 ;
-- SUSPEND;
END
END
END
FOR
SELECT
C.REMESSA_TALAO_ID,
C.PRODUTO_ID,
C.TAMANHO,
C.QUANTIDADE,
P.UNIDADEMEDIDA_SIGLA UM
FROM
VWREMESSA_CONSUMO C,
TBPRODUTO P
WHERE
P.CODIGO = C.PRODUTO_ID
AND C.REMESSA_ID = :REMESSA_ID
INTO
REMESSA_TALAO_ID,
PRODUTO_ID,
TAMANHO,
QUANTIDADE,
UM
DO
BEGIN
CONSUMO_PERMITE_FRACAO = COALESCE((
SELECT U.PODE_FRACIONAR
FROM TbUnidadeMedida U
WHERE U.SIGLA = :UM),'N');
IF (CONSUMO_PERMITE_FRACAO = 'N') THEN
BEGIN
IF (QUANTIDADE > TRUNC(QUANTIDADE)) THEN
BEGIN
EXCEPTION "..." 'O PRODUTO ' || PRODUTO_ID || ' DE CONSUMO DO TALAO ' || REMESSA_TALAO_ID || ' NAO PERMITE QUANTIDADE FRACIONADA. QUANT.'||QUANTIDADE||' '||UM;
END
END
END
END
^
ALTER PROCEDURE SPI_REMESSA_SOBRA(
I_REMESSA_ID INTEGER)
AS
declare variable estabelecimento_id integer;
declare variable remessa_talao_id integer;
declare variable produto_id integer;
declare variable tamanho integer;
declare variable quantidade_talao numeric(15,5);
declare variable quantidade_sobra numeric(15,5);
declare variable sobra_quantidade_alocar numeric(15,5);
declare variable sobra_id integer;
declare variable sobra_saldo numeric(15,5);
begin
FOR
SELECT
T.ESTABELECIMENTO_ID,
T.REMESSA_TALAO_ID,
T.PRODUTO_ID,
T.TAMANHO,
T.QUANTIDADE
FROM
VWREMESSA_TALAO T
WHERE
T.REMESSA_ID = :I_REMESSA_ID
AND T.REMESSA_TALAO_ID < 8000
INTO
ESTABELECIMENTO_ID,
REMESSA_TALAO_ID,
PRODUTO_ID,
TAMANHO,
QUANTIDADE_TALAO
DO
BEGIN
FOR
SELECT
ID,
SALDO
FROM (
SELECT
S.ID,
S.SALDO -
COALESCE((
SELECT SUM(R.SALDO)
FROM TBREQUISICAO_SOBRA R
WHERE R.SOBRA_ID = S.ID
AND R.STATUS = '0'
),0.0000) SALDO
FROM TBSOBRA S
WHERE S.ESTABELECIMENTO_ID = :ESTABELECIMENTO_ID
AND S.TAMANHO = :TAMANHO
AND S.STATUS = '1'
AND S.PRODUTO_ID IN (
SELECT P.CODIGO
FROM
(SELECT P.MODELO_CODIGO MODELO_ID,
P.COR_CODIGO COR_ID,
(SELECT MODELO_PAI FROM TBMODELO WHERE CODIGO = P.MODELO_CODIGO and MODELO_PAI > 0) MODELO_PAI
FROM TBPRODUTO P
WHERE P.CODIGO = :PRODUTO_ID) A,
TBMODELO M,
TBPRODUTO P
WHERE A.COR_ID = P.COR_CODIGO
AND M.CODIGO = P.MODELO_CODIGO
AND
(A.MODELO_ID = M.CODIGO
OR A.MODELO_ID = M.MODELO_PAI
OR A.MODELO_PAI = M.CODIGO
OR A.MODELO_PAI = M.MODELO_PAI) )) X
WHERE SALDO > 0
INTO
SOBRA_ID,
SOBRA_SALDO
DO
BEGIN
QUANTIDADE_SOBRA =
COALESCE((
SELECT SUM(S.QUANTIDADE)
FROM TBREQUISICAO_SOBRA S
WHERE S.REMESSA = :I_REMESSA_ID AND
S.TALAO = :REMESSA_TALAO_ID AND
S.REQUISICAO_ID = 0), 0.0000);
IF ( SOBRA_SALDO >= (QUANTIDADE_TALAO - QUANTIDADE_SOBRA) ) THEN
BEGIN
SOBRA_QUANTIDADE_ALOCAR = (QUANTIDADE_TALAO - QUANTIDADE_SOBRA);
END
ELSE
IF ( SOBRA_SALDO < (QUANTIDADE_TALAO - QUANTIDADE_SOBRA) ) THEN
BEGIN
SOBRA_QUANTIDADE_ALOCAR = SOBRA_SALDO;
END
IF ( SOBRA_QUANTIDADE_ALOCAR > 0 ) THEN
BEGIN
INSERT INTO TBREQUISICAO_SOBRA ( REQUISICAO_ID, SOBRA_ID, REMESSA, TALAO, QUANTIDADE, SALDO, STATUS, PRODUTO_ID_ORIGINAL)
VALUES ( 0, :SOBRA_ID, :I_REMESSA_ID, :REMESSA_TALAO_ID, :SOBRA_QUANTIDADE_ALOCAR, :SOBRA_QUANTIDADE_ALOCAR, 0, :PRODUTO_ID);
END
END
END
EXECUTE PROCEDURE SPI_HISTORICO('TBREMESSA',:I_REMESSA_ID,'VERIFICACAO DE SOBRAS PROCESSADA');
end
^
ALTER PROCEDURE SPU_CONFERENCIA_TRANSACAO(
I_ESTOQUE_ID VARCHAR(3000),
I_OPERADOR_ID INTEGER,
I_CONFERIR INTEGER = 2)
AS
DECLARE VARIABLE ESTOQUE_ID INTEGER;
DECLARE VARIABLE OPERADOR_DESCRICAO VARCHAR(200);
DECLARE VARIABLE CONFERENCIA_DESCRICAO VARCHAR(50);
BEGIN
FOR
SELECT OSPLIT
FROM SPLIT(:I_ESTOQUE_ID,',')
INTO
ESTOQUE_ID
DO
BEGIN
OPERADOR_DESCRICAO = COALESCE((
SELECT FIRST 1 NOME
FROM TBOPERADOR O
WHERE O.CODIGO = :I_OPERADOR_ID),'');
UPDATE TBESTOQUE_TRANSACAO_ITEM I
SET I.CONFERENCIA = :I_CONFERIR
WHERE I.CONTROLE IN (:ESTOQUE_ID);
IF ( I_CONFERIR = 1 ) THEN
BEGIN
CONFERENCIA_DESCRICAO = 'DESCONFERIDO';
END
ELSE
IF ( I_CONFERIR = 2 ) THEN
BEGIN
CONFERENCIA_DESCRICAO = 'CONFERIDO';
END
ELSE
BEGIN
EXCEPTION "..." 'OPERACAO DE CONFERENCIA INVALIDA';
END
EXECUTE PROCEDURE SPI_HISTORICO(
'TBESTOQUE_TRANSACAO_ITEM',
:ESTOQUE_ID,
'ESTOQUE ' || CONFERENCIA_DESCRICAO || ' PELO OPERADOR: ' || :I_OPERADOR_ID || ' - ' || :OPERADOR_DESCRICAO
);
END
END
^
ALTER PROCEDURE SPU_CUSTO_MEDIO(
DATA_1 DATE)
RETURNS (
ESTABELECIMENTO_ID INTEGER,
PRODUTO_ID INTEGER,
DATA DATE,
CUSTO_MEDIO NUMERIC(15,4),
CUSTO1 NUMERIC(15,4),
CUSTO2 NUMERIC(15,4),
SALDO1 NUMERIC(15,4))
AS
declare variable atualiza_custo char(1);
declare variable tipo char(1);
declare variable quantidade numeric(15,4);
declare variable custo_unitario numeric(15,4);
declare variable valor_custo numeric(15,4);
declare variable transacao_data date;
declare variable controle integer;
declare variable localizacao_id integer;
declare variable id integer;
declare variable custo_padrao numeric(15,4);
BEGIN
-- Verifica os registros que precisam ter o custo medio atualizado
For Select E.Estabelecimento_Codigo, E.Produto_Codigo, Min(E.Data) Data
From TbEstoque_Saldo_Diario E, TbProduto P, TbTipoProduto T, TBFAMILIA F, TbConfiguracao_Periodo CP
Where E.Produto_Codigo = P.Codigo
AND F.Codigo = P.Familia_Codigo
and P.TipoProduto_Codigo = T.Codigo
and T.Custo = '1'
and E.Data >= Coalesce( Cast(:Data_1 as Date) ,'01.01.2015')
and Coalesce(E.Atualizacao,'0') = '0'
and E.Data Between CP.DataInicial and CP.DataFinal
and CP.Modulo_Codigo = 12 --Inventario
and F.Inventario = '1'
and CP.Estabelecimento_Codigo = E.Estabelecimento_Codigo
Group By 1,2
INTO :Estabelecimento_ID,:Produto_Id,:Data
DO
Begin
Custo_Medio = 0.0000;
Saldo1 = 0.0000;
Custo1 = 0.0000;
ID = 0;
Custo_Padrao = Coalesce((Select First 1 PC.CustoUnitario_Padrao From TbProduto_Contabil PC Where :Produto_Id = PC.Produto_Codigo),0.0000);
-- Pega o ultimo valor financeiro do estoque
-- (Custo Medio * (Estoque Fisico + Em Terc.))
-- antes da data que será atualizado o custo
For Select Z.Saldo, Cast(Z.Custo as Numeric(15,4)) Custo,
IIF(Z.Saldo>0,Cast(Z.Custo / Z.Saldo as Numeric(15,4)),0.0000) Custo_Medio
From (
Select Sum(V.Saldo) S1, Sum(V.Saldo_EmTerceiro) S2,
Sum(V.Saldo + V.Saldo_EmTerceiro) Saldo,
Sum((V.Saldo+ V.Saldo_EmTerceiro) * V.Custo_Medio) Custo
From (
Select X.Localizacao_Id,
Cast(SubString(X.Saldos From 1 For 20) as Numeric(15,4)) Saldo,
Cast(SubString(X.Saldos From 21 For 20) as Numeric(15,4)) Saldo_EmTerceiro,
Cast(SubString(X.Saldos From 41 For 20) as Numeric(15,4)) Custo_Medio,
SubString(X.Saldos From 61 For 10) Data
From (
Select L.Localizacao_Codigo Localizacao_Id,
Coalesce((Select First 1 lPad(A.Saldo,20,'0')||
lPad(A.Saldo_EmTerceiro,20,'0')||
lPad(A.Custo_Medio,20,'0')||
A.Data
From TbEstoque_Saldo_Diario A
Where A.Estabelecimento_Codigo = L.Estabelecimento_Codigo
and A.Produto_Codigo = L.Produto_Codigo
and A.Localizacao_Codigo = L.Localizacao_Codigo
and A.Data < :Data
Order By A.Data Desc),'00000000000000.0000000000000000000.0000000000000000000.000002000-01-01') Saldos
From TbEstoque_Saldo L
Where L.Estabelecimento_Codigo = :Estabelecimento_ID
and L.Produto_Codigo = :Produto_Id
) X) V) Z
Into :Saldo1, :Custo1, :Custo_Medio
Do
Begin
id = 1;
End
-- Carrega todas as transacoes de estoque
-- a partir da data de ajuste dos custos medios
For Select O.Atualiza_Custo, O.Tipo, E.Controle, E.Quantidade,
--O.Estoque, O.NotaFiscal, E.Operacao_Codigo,
E.Custo_Unitario, E.Data, E.Localizacao_Codigo,
IIF(E.Nfe_item_controle>0,(Select First 1 IIF(Valor_Custo>0,Valor_Custo,Valor_Unitario) From TbNfe_Item
Where Controle = E.Nfe_Item_Controle),
IIF(E.Nfs_item_controle>0,(Select First 1 IIF(Valor_Contabil>0,Valor_Contabil/Quantidade,Valor_Unitario) From TbNfs_Item
Where Controle = E.Nfs_Item_Controle),
E.CUSTO_MEDIO)) Valor_Custo
From TbEstoque_Transacao_Item E, TbOperacao O
Where E.Operacao_Codigo = O.Codigo
and E.Estabelecimento_Codigo = :Estabelecimento_ID
and E.Produto_Codigo = :Produto_Id
and E.Data >= :Data
--and O.Atualiza_Custo = '1'
Order By E.Data, O.Atualiza_Custo Desc, E.Controle
Into :Atualiza_Custo, :Tipo, :Controle, :Quantidade, --:Estoque, :NotaFiscal, :Operacao,
:Custo_Unitario, :Transacao_Data, :Localizacao_Id, :Valor_Custo
DO
Begin
Custo2 = 0.0000;
if (:Tipo = 'E') then
Begin
Saldo1 = :Saldo1 + :Quantidade;
End else
if (:Tipo = 'S') then
Begin
Saldo1 = :Saldo1 - :Quantidade;
End
if (:Atualiza_Custo = '1' and :Valor_Custo > 0) then
Begin
if (:Valor_Custo <> :Custo_Unitario) then
Begin
Update TbEstoque_Transacao_Item Set
Custo_Unitario = :Valor_Custo
Where Controle = :Controle
and Produto_Codigo = :Produto_Id
and Data = :Transacao_Data
and Estabelecimento_Codigo = :Estabelecimento_Id
and Localizacao_Codigo = :Localizacao_Id;
End
if (:id = 1) then
Begin
if (:Custo_Medio > 0) then
Begin
Custo2 = Cast(:Quantidade * :Valor_Custo as Numeric(15,4)); --Custo Total do Registro
if (:Saldo1 > 0) then
begin
Custo_Medio = Cast((:Custo1 + :Custo2) / (:Saldo1) as Numeric(15,4)); --Custo Medio (Custo Total Anterior + Custo Total do Registro / Estoque Até aquele registro
End else
Begin
Custo_Medio = 0;
End
Custo1 = Cast((:Saldo1 * :Custo_Medio) as Numeric(15,4)); --Custo Total do Produto até aquele registro
Update TbEstoque_Saldo_Diario Set
Atualizacao = '1',
Custo_Medio = :Custo_Medio
Where Produto_Codigo = :Produto_Id
And Data = :Transacao_Data
and Estabelecimento_Codigo = :Estabelecimento_Id;
End Else
-- if (:Custo_Medio <= 0) then
Begin
if (:Custo_Padrao > 0) Then
Begin
Custo_Medio = :CUSTO_PADRAO; --Custo Medio
Custo1 = Cast((:Saldo1 * :Custo_Medio) as Numeric(15,4)); --Custo Total do Produto até aquele registro
Update TbEstoque_Saldo_Diario Set
Atualizacao = '1',
Custo_Medio = :Custo_Padrao
Where Produto_Codigo = :Produto_Id
And Data = :Transacao_Data
and Estabelecimento_Codigo = :Estabelecimento_Id;
End else
if (:VALOR_CUSTO > 0) Then
Begin
Custo_Medio = :Valor_Custo; --Custo Medio
Custo1 = Cast((:Saldo1 * :Custo_Medio) as Numeric(15,4)); --Custo Total do Produto até aquele registro
Update TbEstoque_Saldo_Diario Set
Atualizacao = '1',
Custo_Medio = :VALOR_CUSTO
Where Produto_Codigo = :Produto_Id
And Data = :Transacao_Data
and Estabelecimento_Codigo = :Estabelecimento_Id;
End
End
End else
-- if (:id = 0) then
Begin
Id = 1;
Custo_Medio = :Valor_Custo;
Custo1 = Cast((:Saldo1 * :Custo_Medio) as Numeric(15,4)); --Custo Total do Produto até aquele registro
Update TbEstoque_Saldo_Diario Set
Atualizacao = '1',
Custo_Medio = :Custo_Medio
Where Produto_Codigo = :Produto_Id
And Data = :Transacao_Data
and Estabelecimento_Codigo = :Estabelecimento_Id;
End
End else
-- if (:Atualiza_Custo = '1' and :Valor_Custo > 0) then
Begin
If (:Custo_Medio > 0 or :Valor_Custo > 0 or :Custo_Padrao > 0) Then
Begin
if (:Custo_Medio = 0) then
Begin
If (:Custo1 > 0 and :Saldo1 > 0) Then
Begin
Custo_Medio = Cast(:Custo1 / :Saldo1 as Numeric(15,4));
End else
If (:Valor_Custo > 0) Then
Begin
Custo_Medio = :Valor_Custo;
End else
If (:Custo_Padrao > 0) Then
Begin
Custo_Medio = :Custo_Padrao;
End
End
Custo1 = :Saldo1 * :Custo_Medio; --Custo Total do Produto até aquele registro
Update TbEstoque_Saldo_Diario Set
Atualizacao = '1',
Custo_Medio = :Custo_Medio
Where Produto_Codigo = :Produto_Id
And Data = :Transacao_Data
and Estabelecimento_Codigo = :Estabelecimento_Id;
End
End
End
End
End
^
ALTER PROCEDURE SPU_LIBERACAO_TALAO_COLETOR(
COD_BARRAS VARCHAR(100),
OPERADOR_ID INTEGER)
RETURNS (
PRODUTO_ID INTEGER,
PRODUTO_DESCRICAO VARCHAR(100),
OPERACAO1 VARCHAR(10),
OPERACAO2 VARCHAR(10),
LOCALIZACAO_ID_VELHA INTEGER,
LOCALIZACAO_ID_NOVA INTEGER,
LOCALIZACAO_DESC_VELHA VARCHAR(100),
LOCALIZACAO_DESC_NOVA VARCHAR(100),
REMESSA VARCHAR(20),
TALAO VARCHAR(20),
QUANTIDADE VARCHAR(15),
FAMILIA INTEGER,
ID VARCHAR(20),
QUANTIDADE_ALT VARCHAR(15),
SITUACAO INTEGER)
AS
declare variable tipo_cod_barras integer;
declare variable id_codbarras varchar(20);
declare variable posicao integer;
declare variable tamanho integer;
declare variable estab integer;
begin
:TIPO_COD_BARRAS = 0;
if(position('P' in :COD_BARRAS) > 0)then begin :TIPO_COD_BARRAS = 1; POSICAO = 2; end
if(position('RD' in :COD_BARRAS) > 0)then begin :TIPO_COD_BARRAS = 2; POSICAO = 3; end
if(position('RA' in :COD_BARRAS) > 0)then begin :TIPO_COD_BARRAS = 3; POSICAO = 3; end
:TAMANHO = char_length(:COD_BARRAS);
:ID_CODBARRAS = substring(:COD_BARRAS from POSICAO for TAMANHO);
ID_CODBARRAS = cast(cast(ID_CODBARRAS as integer) as varchar(20));
if(:TIPO_COD_BARRAS = 1)then
begin
for
select
r.produto_id as produto_cod,
p.descricao as produto_desc,
r.saldo as QUANTIDADE,
r.localizacao_entrada,
'' as remessa,
'' as talao,
P.familia_codigo,
r.estabelecimento_id,
r.situacao
from tbrevisao r,
tbproduto p
where r.id = :ID_CODBARRAS
and p.codigo = r.produto_id
into
:produto_id,
:produto_descricao,
:QUANTIDADE,
:localizacao_id_velha,
:remessa,
:talao,
:FAMILIA,
:ESTAB,
:SITUACAO
do begin
:QUANTIDADE_ALT = 0;
end
end else
begin
if(:TIPO_COD_BARRAS = 2)then
begin
for
select first 1
d.produto_id,
p.descricao as produto_descricao,
d.quantidade_saldo,
d.quantidade_altern_producao,
d.localizacao_id as localizacao_id_velha,
d.remessa_id,
d.remessa_talao_id,
p.familia_codigo as FAMILIA,
v.estabelecimento_id,
t.status
from vwremessa_talao_detalhe d,
vwremessa_talao t,
vwremessa v,
tbproduto p
where d.id = :ID_CODBARRAS
and p.codigo = d.produto_id
and v.remessa_id = d.remessa_id
and t.remessa_id = d.remessa_id
and t.remessa_talao_id = d.remessa_talao_id
into
:produto_id,
:produto_descricao,
:QUANTIDADE,
:QUANTIDADE_ALT,
:localizacao_id_velha,
:remessa,
:talao,
:FAMILIA,
:ESTAB,
:SITUACAO
do begin
end
end else
begin
if(:TIPO_COD_BARRAS = 3)then
begin
for
select
m.codigo as produto_id,
m.descricao as produto_descricao,
sum(d.quantidade_saldo) as QUANTIDADE,
sum(d.quantidade_altern_saldo) QUANTIDADE_ALT,
d.localizacao_id as localizacao_id_velha,
d.remessa_id,
d.remessa_talao_id,
v.familia_id as FAMILIA,
v.estabelecimento_id,
t.status
from vwremessa_talao t,
vwremessa_talao_detalhe d,
vwremessa v,
tbmodelo m
where t.id = :ID_CODBARRAS
and v.remessa_id = d.remessa_id
and d.remessa_id = t.remessa_id
and d.remessa_talao_id = t.remessa_talao_id
and m.codigo = d.modelo_id
group by 1,2,5,6,7,8,9,10
into
:produto_id,
:produto_descricao,
:QUANTIDADE,
:QUANTIDADE_ALT,
:localizacao_id_velha,
:remessa,
:talao,
:FAMILIA,
:ESTAB,
:SITUACAO
do begin
end
end else
begin
exception "..." 'Item não foi encontrado';
end
end
end
:operacao1 = coalesce((select first 1 n.valor_ext from tbcontrole_n n where n.id = 122),'');
:operacao2 = coalesce((select first 1 n.valor_ext from tbcontrole_n n where n.id = 121),'');
:localizacao_id_nova = coalesce((select first 1 n.localizacao_processo from tbfamilia_ficha n where n.familia_codigo = :FAMILIA and n.estabelecimento_codigo = :ESTAB),0);
:localizacao_desc_nova = coalesce((select first 1 n.descricao from tblocalizacao n where n.codigo = :localizacao_id_nova and n.estabelecimento_codigo = :ESTAB),'');
:localizacao_desc_velha = coalesce((select first 1 n.descricao from tblocalizacao n where n.codigo = :localizacao_id_velha and n.estabelecimento_codigo = :ESTAB),'');
if(TIPO_COD_BARRAS = 1)then begin :ID = 'P/' ||:ID_CODBARRAS; end
if(TIPO_COD_BARRAS = 2)then begin :ID = 'RD/'||:ID_CODBARRAS; end
if(TIPO_COD_BARRAS = 3)then begin :ID = 'RA/'||:ID_CODBARRAS; end
if(:quantidade = 0)then
begin
exception "..." 'O saldo deste item é 0';
end
if(:TIPO_COD_BARRAS > 1)then
begin
if(:SITUACAO <> 2)then
begin
exception "..." 'Este talão não esta produzido';
end
end
if(:SITUACAO = 3)then
begin
exception "..." 'Este talão já foi liberado';
end
if(:localizacao_id_nova = 0)then
begin
exception "..." 'Familia sem estoque de processo definida. Familia:'||coalesce(:FAMILIA,0);
end
if(:localizacao_id_velha = 0)then
begin
exception "..." 'Item sem localizacao definida. Localizacao:'||coalesce(:localizacao_id_velha,0);
end
suspend;
end
^
ALTER PROCEDURE SPU_LIBERAR_TALAO_COLETOR(
COD_BARRAS VARCHAR(100),
OPERADOR_ID INTEGER)
AS
DECLARE VARIABLE PRODUTO_ID INTEGER;
DECLARE VARIABLE PRODUTO_DESCRICAO VARCHAR(100);
DECLARE VARIABLE OPERACAO1 VARCHAR(10);
DECLARE VARIABLE OPERACAO2 VARCHAR(10);
DECLARE VARIABLE LOCALIZACAO_ID_VELHA INTEGER;
DECLARE VARIABLE LOCALIZACAO_ID_NOVA INTEGER;
DECLARE VARIABLE LOCALIZACAO_DESC_VELHA VARCHAR(100);
DECLARE VARIABLE LOCALIZACAO_DESC_NOVA VARCHAR(100);
DECLARE VARIABLE REMESSA VARCHAR(20);
DECLARE VARIABLE TALAO VARCHAR(20);
DECLARE VARIABLE QUANTIDADE NUMERIC(15,2);
DECLARE VARIABLE FAMILIA INTEGER;
DECLARE VARIABLE ID VARCHAR(20);
DECLARE VARIABLE QUANTIDADE_ALT NUMERIC(15,2);
DECLARE VARIABLE TIPO_COD_BARRAS INTEGER;
DECLARE VARIABLE ID_CODBARRAS VARCHAR(20);
DECLARE VARIABLE POSICAO INTEGER;
DECLARE VARIABLE TAMANHO INTEGER;
DECLARE VARIABLE ESTAB INTEGER;
DECLARE VARIABLE TRATAR_ESTOQUE INTEGER;
DECLARE VARIABLE ESTOQUE_ID_SAIDA INTEGER;
DECLARE VARIABLE ESTOQUE_ID_ENTRADA INTEGER;
DECLARE VARIABLE CONTROLE INTEGER;
DECLARE VARIABLE CCUSTO VARCHAR(10);
DECLARE VARIABLE ACUMULADO INTEGER;
begin
:TIPO_COD_BARRAS = 0;
:TRATAR_ESTOQUE = 0;
if(position('P' in :COD_BARRAS) > 0)then begin :TIPO_COD_BARRAS = 1; POSICAO = 2; end
if(position('RD' in :COD_BARRAS) > 0)then begin :TIPO_COD_BARRAS = 2; POSICAO = 3; end
if(position('RA' in :COD_BARRAS) > 0)then begin :TIPO_COD_BARRAS = 3; POSICAO = 3; end
:TAMANHO = char_length(:COD_BARRAS);
:ID_CODBARRAS = substring(:COD_BARRAS from POSICAO for TAMANHO);
ID_CODBARRAS = cast(cast(ID_CODBARRAS as integer) as varchar(20));
if(:TIPO_COD_BARRAS = 1)then
begin
for
select
r.produto_id as produto_cod,
p.descricao as produto_desc,
r.saldo as QUANTIDADE,
r.localizacao_entrada,
'' as remessa,
'' as talao,
P.familia_codigo,
r.estabelecimento_id,
r.tamanho
from tbrevisao r,
tbproduto p
where r.id = :ID_CODBARRAS
and p.codigo = r.produto_id
into
:produto_id,
:produto_descricao,
:QUANTIDADE,
:localizacao_id_velha,
:remessa,
:talao,
:FAMILIA,
:ESTAB,
:TAMANHO
do begin
:TRATAR_ESTOQUE = 1;
end
end else
begin
if(:TIPO_COD_BARRAS = 2)then
begin
for
select first 1
d.produto_id,
p.descricao as produto_descricao,
d.quantidade_saldo,
d.quantidade_altern_producao,
d.localizacao_id as localizacao_id_velha,
d.remessa_id,
d.remessa_talao_id,
p.familia_codigo as FAMILIA,
v.estabelecimento_id,
d.tamanho
from vwremessa_talao_detalhe d,
vwremessa v,
tbproduto p
where d.id = :ID_CODBARRAS
and p.codigo = d.produto_id
and v.remessa_id = d.remessa_id
into
:produto_id,
:produto_descricao,
:QUANTIDADE,
:QUANTIDADE_ALT,
:localizacao_id_velha,
:remessa,
:talao,
:FAMILIA,
:ESTAB,
:TAMANHO
do begin
:TRATAR_ESTOQUE = 1;
end
end else
begin
if(:TIPO_COD_BARRAS = 3)then
begin
for
select
m.codigo as produto_id,
m.descricao as produto_descricao,
d.quantidade_saldo as QUANTIDADE,
d.quantidade_altern_saldo QUANTIDADE_ALT,
d.localizacao_id as localizacao_id_velha,
d.remessa_id,
d.remessa_talao_id,
v.familia_id as FAMILIA,
v.estabelecimento_id,
t.tamanho
from vwremessa_talao t,
vwremessa_talao_detalhe d,
vwremessa v,
tbmodelo m
where t.id = :ID_CODBARRAS
and v.remessa_id = d.remessa_id
and d.remessa_id = t.remessa_id
and d.remessa_talao_id = t.remessa_talao_id
and m.codigo = d.modelo_id
into
:produto_id,
:produto_descricao,
:QUANTIDADE,
:QUANTIDADE_ALT,
:localizacao_id_velha,
:remessa,
:talao,
:FAMILIA,
:ESTAB,
:TAMANHO
do begin
:TRATAR_ESTOQUE = 0;
end
end else
begin
exception "..." 'Item não foi encontrado';
end
end
end
--FIM TRATAMENTO
:operacao1 = coalesce((select first 1 n.valor_ext from tbcontrole_n n where n.id = 122),'');
:operacao2 = coalesce((select first 1 n.valor_ext from tbcontrole_n n where n.id = 121),'');
:localizacao_id_nova = coalesce((select first 1 n.localizacao_processo from tbfamilia_ficha n where n.familia_codigo = :FAMILIA and n.estabelecimento_codigo = :ESTAB),0);
:localizacao_desc_nova = coalesce((select first 1 n.descricao from tblocalizacao n where n.codigo = :localizacao_id_nova and n.estabelecimento_codigo = :ESTAB),'');
if(:quantidade = 0)then
begin
exception "..." 'O saldo deste item é 0';
end
if(:localizacao_id_nova = 0)then
begin
exception "..." 'Familia sem estoque de processo definida. Familia:'||coalesce(:FAMILIA,0);
end
if((:localizacao_id_velha = 0) or (:localizacao_id_velha is null) )then
begin
exception "..." 'Item sem localizacao de estoque. pode nao esta produzido';
end
if(coalesce(:produto_id,0) = 0)then
begin
exception "..." 'Produto nao definido. Produto:'||coalesce(:produto_id,0);
end
if((:operacao1 = '') or (:operacao1 = ''))then
begin
exception "..." 'Operacao de Entrada/Saida nao definida:'||coalesce(:produto_id,0);
end
if(:TRATAR_ESTOQUE = 1)then
begin
ESTOQUE_ID_SAIDA = COALESCE((SELECT GEN_ID(GTBESTOQUE_TRANSACAO_ITEM, 1) FROM RDB$DATABASE),0);
ESTOQUE_ID_ENTRADA = COALESCE((SELECT GEN_ID(GTBESTOQUE_TRANSACAO_ITEM, 1) FROM RDB$DATABASE),0);
--saida do saldo
EXECUTE PROCEDURE SPU_ESTOQUE_SALDO4 (
:ESTAB,
:localizacao_id_velha,
:produto_id,
'S', /* S = SAIDA NO ESTOQUE */
current_date,
:QUANTIDADE,
IIF(:TAMANHO = 1,:QUANTIDADE,0),
IIF(:TAMANHO = 2,:QUANTIDADE,0),
IIF(:TAMANHO = 3,:QUANTIDADE,0),
IIF(:TAMANHO = 4,:QUANTIDADE,0),
IIF(:TAMANHO = 5,:QUANTIDADE,0),
IIF(:TAMANHO = 6,:QUANTIDADE,0),
IIF(:TAMANHO = 7,:QUANTIDADE,0),
IIF(:TAMANHO = 8,:QUANTIDADE,0),
IIF(:TAMANHO = 9,:QUANTIDADE,0),
IIF(:TAMANHO =10,:QUANTIDADE,0),
IIF(:TAMANHO =11,:QUANTIDADE,0),
IIF(:TAMANHO =12,:QUANTIDADE,0),
IIF(:TAMANHO =13,:QUANTIDADE,0),
IIF(:TAMANHO =14,:QUANTIDADE,0),
IIF(:TAMANHO =15,:QUANTIDADE,0),
IIF(:TAMANHO =16,:QUANTIDADE,0),
IIF(:TAMANHO =17,:QUANTIDADE,0),
IIF(:TAMANHO =18,:QUANTIDADE,0),
IIF(:TAMANHO =19,:QUANTIDADE,0),
IIF(:TAMANHO =20,:QUANTIDADE,0),
:ESTOQUE_ID_SAIDA,
ID_CODBARRAS,
0,
0,
:operacao1,
0,
0,
0,
0,
0,
Current_Date,
0,
:CCUSTO,
'SAIDA INTERNA DA PRODUCAO',
'0',
0,
0,
0,
0
);
--saida do saldo
EXECUTE PROCEDURE SPU_ESTOQUE_SALDO4 (
:ESTAB,
:localizacao_id_nova,
:produto_id,
'E', /* E = ENTRADA NO ESTOQUE */
current_date,
:QUANTIDADE,
IIF(:TAMANHO = 1,:QUANTIDADE,0),
IIF(:TAMANHO = 2,:QUANTIDADE,0),
IIF(:TAMANHO = 3,:QUANTIDADE,0),
IIF(:TAMANHO = 4,:QUANTIDADE,0),
IIF(:TAMANHO = 5,:QUANTIDADE,0),
IIF(:TAMANHO = 6,:QUANTIDADE,0),
IIF(:TAMANHO = 7,:QUANTIDADE,0),
IIF(:TAMANHO = 8,:QUANTIDADE,0),
IIF(:TAMANHO = 9,:QUANTIDADE,0),
IIF(:TAMANHO =10,:QUANTIDADE,0),
IIF(:TAMANHO =11,:QUANTIDADE,0),
IIF(:TAMANHO =12,:QUANTIDADE,0),
IIF(:TAMANHO =13,:QUANTIDADE,0),
IIF(:TAMANHO =14,:QUANTIDADE,0),
IIF(:TAMANHO =15,:QUANTIDADE,0),
IIF(:TAMANHO =16,:QUANTIDADE,0),
IIF(:TAMANHO =17,:QUANTIDADE,0),
IIF(:TAMANHO =18,:QUANTIDADE,0),
IIF(:TAMANHO =19,:QUANTIDADE,0),
IIF(:TAMANHO =20,:QUANTIDADE,0),
:estoque_id_entrada,
ID_CODBARRAS,
0,
0,
:operacao2,
0,
0,
0,
0,
0,
Current_Date,
0,
:CCUSTO,
'RETORNO INTERNO P/PRODUCAO',
'0',
0,
0,
0,
0
);
end
if(:TIPO_COD_BARRAS = 1)then
begin
update tbrevisao r
set r.situacao = 3,
r.estoque_id_s_transf = :estoque_id_saida,
r.estoque_id_e_transf = :estoque_id_entrada,
r.localizacao_entrada = :localizacao_id_nova
where r.id = :ID_CODBARRAS;
end
if(:TIPO_COD_BARRAS = 2)then
begin
ACUMULADO = coalesce((select t.id from vwremessa_talao_detalhe d, vwremessa_talao t
where d.id = :ID_CODBARRAS
and t.remessa_id = d.remessa_id
and t.remessa_talao_id = d.remessa_talao_id),0);
if(:ACUMULADO <= 0)then
begin
exception "..." 'Erro ao consultar talão detalhado:'||coalesce(:produto_id,0);
end
update vwremessa_talao_detalhe t
set t.estoque_id_s_transf = :estoque_id_saida,
t.estoque_id_e_transf = :estoque_id_entrada,
t.localizacao_id = :localizacao_id_nova
where t.id = :ID_CODBARRAS;
update vwremessa_talao t
set t.status = 3
where t.id = :ACUMULADO;
end
if(:TIPO_COD_BARRAS = 3)then
begin
update vwremessa_talao t
set t.status = 3
where t.id = :ID_CODBARRAS;
end
end
^
ALTER PROCEDURE SPU_PEDIDO_CLASSIFICACAO(
DATA_1 DATE,
DATA_2 DATE,
PEDIDO_1 VARCHAR(10))
RETURNS (
PEDIDO INTEGER,
MODCOR4000A9999 INTEGER,
MODCOR2000A4000 INTEGER,
MODCOR1000A2000 INTEGER,
MODCOR0600A1000 INTEGER,
MODCOR0200A0600 INTEGER,
MODCOR0000A0200 INTEGER)
AS
declare variable vmod integer;
declare variable vcor integer;
declare variable vqtd integer;
Begin
FOR
Select Pedido
From TbPedido
Where Data BETWEEN :Data_1 and :Data_2
and Pedido Like :Pedido_1
Into :Pedido
Do begin
-- sku1200a9999 = 0;
-- sku0800a1200 = 0;
-- sku0400a0800 = 0;
-- sku0200a0400 = 0;
-- sku0000a0200 = 0;
modcor4000a9999 = 0;
modcor2000a4000 = 0;
modcor1000a2000 = 0;
modcor0600a1000 = 0;
modcor0200a0600 = 0;
modcor0000a0200 = 0;
-- vClasse = 0;
/*
For
Select PI.Modelo_codigo, PI.Cor_id, PI.Tamanho, Sum(PI.Quantidade)
From TbPedido_item PI
Where Pedido = :Pedido
Group by 1,2,3
Into :vMod,:vCor,:vTam,:vQtd
do begin
if (vQtd >= 1200) then
sku1200a9999 = sku1200a9999 + 1; else
if (vQtd >= 0800) then
sku0800a1200 = sku0800a1200 + 1; else
if (vQtd >= 0400) then
sku0400a0800 = sku0400a0800 + 1; else
if (vQtd >= 0200) then
sku0200a0400 = sku0200a0400 + 1; else
if (vQtd < 0200) then
sku0000a0200 = sku0000a0200 + 1;
end
*/
For
Select PI.Modelo_codigo, PI.Cor_Id, Sum(PI.Quantidade)
From TbPedido_item PI
Where Pedido = :Pedido
Group by 1,2
Into :vMod,:vCor,:vQtd
do begin
if (vQtd > 4000) then
Begin
UPDATE TBPEDIDO_ITEM SET CLASSIFICACAO = 0 WHERE PEDIDO = :PEDIDO AND MODELO_CODIGO = :vMod and Cor_Id = :vCor;
modcor4000a9999 = modcor4000a9999 + 1;
End else
if (vQtd > 2000) then
Begin
UPDATE TBPEDIDO_ITEM SET CLASSIFICACAO = 1 WHERE PEDIDO = :PEDIDO AND MODELO_CODIGO = :vMod and Cor_Id = :vCor;
modcor2000a4000 = modcor2000a4000 + 1;
End else
if (vQtd > 1000) then
Begin
UPDATE TBPEDIDO_ITEM SET CLASSIFICACAO = 2 WHERE PEDIDO = :PEDIDO AND MODELO_CODIGO = :vMod and Cor_Id = :vCor;
modcor1000a2000 = modcor1000a2000 + 1;
End else
if (vQtd > 0600) then
Begin
UPDATE TBPEDIDO_ITEM SET CLASSIFICACAO = 3 WHERE PEDIDO = :PEDIDO AND MODELO_CODIGO = :vMod and Cor_Id = :vCor;
modcor0600a1000 = modcor0600a1000 + 1;
End else
if (vQtd > 0200) then
Begin
UPDATE TBPEDIDO_ITEM SET CLASSIFICACAO = 4 WHERE PEDIDO = :PEDIDO AND MODELO_CODIGO = :vMod and Cor_Id = :vCor;
modcor0200a0600 = modcor0200a0600 + 1;
End else
if (vQtd<= 0200) then
Begin
UPDATE TBPEDIDO_ITEM SET CLASSIFICACAO = 5 WHERE PEDIDO = :PEDIDO AND MODELO_CODIGO = :vMod and Cor_Id = :vCor;
modcor0000a0200 = modcor0000a0200 + 1;
End
/*
if (vQtd >= 4000) then
modcor4000a9999 = modcor4000a9999 + 1; else
if (vQtd >= 2000) then
modcor2000a9999 = modcor2000a9999 + 1; else
if (vQtd >= 1000) then
modcor1000a2000 = modcor1000a2000 + 1; else
if (vQtd < 1000) then
modcor0000a1000 = modcor0000a1000 + 1;
*/
end
/*
if (modcor4000a9999 >=1 and
modcor2000a4000 = 0 and
modcor1000a2000 = 0 and
modcor0600a1000 = 0 and
modcor0200a0600 = 0 and
modcor0000a0200 = 0) Then
vClasse = 0; else
if (modcor4000a9999 +
modcor2000a4000 >=1 and
modcor1000a2000 = 0 and
modcor0600a1000 = 0 and
modcor0200a0600 = 0 and
modcor0000a0200 = 0) Then
vClasse = 1; else
if (modcor4000a9999 +
modcor2000a4000 +
modcor1000a2000 >=1 and
modcor0600a1000 = 0 and
modcor0200a0600 = 0 and
modcor0000a0200 = 0) Then
vClasse = 2; else
if (modcor4000a9999 +
modcor2000a4000 +
modcor1000a2000 +
modcor0600a1000 >=1 and
modcor0200a0600 = 0 and
modcor0000a0200 = 0) Then
vClasse = 3; else
if (modcor4000a9999 +
modcor2000a4000 +
modcor1000a2000 +
modcor0600a1000 +
modcor0200a0600 >=1 and
modcor0000a0200 = 0) Then
vClasse = 4; else
if (modcor4000a9999 +
modcor2000a4000 +
modcor1000a2000 +
modcor0600a1000 +
modcor0200a0600 +
modcor0000a0200 >=1) Then
vClasse = 5;
*/
/*
if (sku1200a9999 >=1 and
sku0800a1200 = 0 and
sku0400a0800 = 0 and
sku0200a0400 = 0 and
sku0000a0200 = 0) Then
vClasse = 0; else
if (modcor4000a9999 >=1 and
modcor2000a9999 = 0 and
modcor1000a2000 = 0 and
modcor0000a1000 = 0) Then
vClasse = 1; else
if (sku1200a9999 +
sku0800a1200 +
sku0400a0800 >=1 and
sku0200a0400 = 0 and
sku0000a0200 = 0) Then
vClasse = 2; else
if (modcor4000a9999 +
modcor2000a9999 >=1 and
modcor1000a2000 = 0 and
modcor0000a1000 = 0) Then
vClasse = 3; else
if (modcor4000a9999 +
modcor2000a9999 +
modcor1000a2000 >=1 and
modcor0000a1000 = 0) Then
vClasse = 4; else
if (sku1200a9999 >=1 and
sku0200a0400 +
sku0000a0200 >=1) Then
vClasse = 5; else
if (sku1200a9999+
sku0800a1200+
sku0400a0800 >=1 and
sku0200a0400 +
sku0000a0200 >=1) Then
vClasse = 6; else
if (sku1200a9999 = 0 and
sku0800a1200 = 0 and
sku0400a0800 = 0 and
sku0200a0400 >=1 and
sku0000a0200 = 0) Then
vClasse = 7; else
if (sku1200a9999 = 0 and
sku0800a1200 = 0 and
sku0400a0800 = 0 and
sku0200a0400 = 0 and
sku0000a0200 >=1) Then
vClasse = 8; else
vClasse = 9;
*/
if (modcor4000a9999 >=1) Then
UPDATE or INSERT INTO TBPEDIDO_CLASSIFICACAO (PEDIDO, CLASSIFICACAO) VALUES (:PEDIDO,0) MATCHING (PEDIDO,CLASSIFICACAO);
if (modcor2000a4000 >=1) Then
UPDATE or INSERT INTO TBPEDIDO_CLASSIFICACAO (PEDIDO, CLASSIFICACAO) VALUES (:PEDIDO,1) MATCHING (PEDIDO,CLASSIFICACAO);
if (modcor1000a2000 >=1) Then
UPDATE or INSERT INTO TBPEDIDO_CLASSIFICACAO (PEDIDO, CLASSIFICACAO) VALUES (:PEDIDO,2) MATCHING (PEDIDO,CLASSIFICACAO);
if (modcor0600a1000 >=1) Then
UPDATE or INSERT INTO TBPEDIDO_CLASSIFICACAO (PEDIDO, CLASSIFICACAO) VALUES (:PEDIDO,3) MATCHING (PEDIDO,CLASSIFICACAO);
if (modcor0200a0600 >=1) Then
UPDATE or INSERT INTO TBPEDIDO_CLASSIFICACAO (PEDIDO, CLASSIFICACAO) VALUES (:PEDIDO,4) MATCHING (PEDIDO,CLASSIFICACAO);
if (modcor0000a0200 >=1) Then
UPDATE or INSERT INTO TBPEDIDO_CLASSIFICACAO (PEDIDO, CLASSIFICACAO) VALUES (:PEDIDO,5) MATCHING (PEDIDO,CLASSIFICACAO);
-- UPDATE or INSERT INTO TBPEDIDO_CLASSIFICACAO (PEDIDO, CLASSIFICACAO) VALUES (:PEDIDO,:VCLASSE) MATCHING (PEDIDO);
end
End
^
/******************************************************************************/
/**** Altering stored functions ****/
/******************************************************************************/
ALTER FUNCTION FN_LOCALIZACAO_CODIGO(
CODIGO INTEGER,
PRODUTO_ID INTEGER = 0,
FAMILIA_ID INTEGER = 0,
LOCALIZACAO_ID INTEGER = 0,
REMESSA_TALAO_DETALHE_ID INTEGER = 0,
GP_ID INTEGER = 0,
PERFIL_UP VARCHAR(10) = '',
COD_BARRAS VARCHAR(100) = NULL)
RETURNS INTEGER
AS
declare variable ret integer;
declare variable localizacao_tipo integer;
begin
/* retorna o proprio valor informado como localizacao */
if ( codigo < 1001 ) then
begin
ret = codigo;
end
else
/* codigo tratados */
if ( codigo < 2001 ) then
begin
/* retorna a localizacao padrao da familia do produto */
if ( codigo = 1001 ) then
begin
ret = (select first 1 f.localizacao_codigo from tbfamilia f where f.codigo = :familia_id);
end
else
/* retorna a localizacao padrao do produto */
if ( codigo = 1002 ) then
begin
ret = (select first 1 p.localizacao_codigo from tbproduto p where p.codigo = :produto_id);
end
else
/* retorna a localizacao informada */
if ( codigo = 1003 ) then
begin
ret = localizacao_id;
end
else
/* retorna a localizacao do talao */
if ( codigo = 1004 ) then
begin
ret = (select first 1 d.localizacao_id from vwremessa_talao_detalhe d where d.id = :remessa_talao_detalhe_id);
end
else
/* retorna a localizacao do talao */
if ( codigo = 1005 ) then
begin
ret = FN_LOCALIZACAO_PECA(:COD_BARRAS);
end
end
else
/* localizacao pela familia/gp/perfil_up */
if ( codigo < 3001 ) then
begin
localizacao_tipo = codigo - 2000;
ret = (select first 1 l.localizacao_id
from tbfamilia_localizacao l
where l.familia_id = :familia_id
and l.gp_id = :gp_id
and l.perfil_up = :perfil_up
and l.localizacao_tipo_id = :localizacao_tipo);
end
return ret;
end
^
ALTER FUNCTION FN_LOCALIZACAO_CODIGO2(
TIPO INTEGER,
PRODUTO_ID INTEGER = 0,
FAMILIA_ID INTEGER = 0,
LOCALIZACAO_ID INTEGER = 0,
REMESSA_TALAO_DETALHE_ID INTEGER = 0,
GP_ID INTEGER = 0,
UP_ID INTEGER = 0,
COD_BARRAS VARCHAR(100) = NULL,
FLAG VARCHAR(10) = 'S')
RETURNS INTEGER
AS
declare variable ret integer;
declare variable localizacao_tipo integer;
declare variable localizacao_id_saida integer;
declare variable localizacao_id_entrada integer;
declare variable codigo integer;
declare variable perfil_up varchar(10);
begin
select first 1
j.localizacao_id_saida,
j.localizacao_id_entrada,
j.perfil_up
from TBESTOQUE_TRANSACAO_REGRA j, tbup u
where j.tipo = :tipo
and j.gp_id = :gp_id
and j.perfil_up = u.perfil
and u.id = :up_id
and j.familia_id = :familia_id
into
:localizacao_id_saida,
:localizacao_id_entrada,
:perfil_up;
if(FLAG = 'E')then
begin
codigo = localizacao_id_entrada;
end
else
begin
codigo = localizacao_id_saida;
end
/* retorna o proprio valor informado como localizacao */
if ( codigo < 1001 ) then
begin
ret = codigo;
end
else
/* codigo tratados */
if ( codigo < 2001 ) then
begin
/* retorna a localizacao padrao da familia do produto */
if ( codigo = 1001 ) then
begin
ret = (select first 1 f.localizacao_codigo from tbfamilia f where f.codigo = :familia_id);
end
else
/* retorna a localizacao padrao do produto */
if ( codigo = 1002 ) then
begin
ret = (select first 1 p.localizacao_codigo from tbproduto p where p.codigo = :produto_id);
end
else
/* retorna a localizacao informada */
if ( codigo = 1003 ) then
begin
ret = localizacao_id;
end
else
/* retorna a localizacao do talao */
if ( codigo = 1004 ) then
begin
ret = (select first 1 d.localizacao_id from vwremessa_talao_detalhe d where d.id = :remessa_talao_detalhe_id);
end
else
/* retorna a localizacao do talao */
if ( codigo = 1005 ) then
begin
ret = FN_LOCALIZACAO_PECA(:COD_BARRAS);
end
end
else
/* localizacao pela familia/gp/perfil_up */
if ( codigo < 3001 ) then
begin
localizacao_tipo = codigo - 2000;
ret = (select first 1 l.localizacao_id
from tbfamilia_localizacao l
where l.familia_id = :familia_id
and l.gp_id = :gp_id
and l.perfil_up = :perfil_up
and l.localizacao_tipo_id = :localizacao_tipo);
end
return ret;
end
^
/******************************************************************************/
/**** Restoring deactivated triggers ****/
/******************************************************************************/
ALTER TRIGGER TTBESTOQUE_SALDO_MES_999
AS
begin
if (inserting) then
Begin
if (extract(month from New.Data)||extract(year from New.Data) <> extract(month from Current_Date)||extract(year from Current_Date)) then
Begin
update or insert into tbreplica_tabela (tabela, ano, mes, status)
values ('TBESTOQUE_SALDO_MES',
Cast( Extract (Year from New.Data) as Integer),
Cast( Extract (Month from New.Data) as Integer),
'0')
matching (tabela, ano, mes);
End
End
if (deleting) then
Begin
if (extract(month from Old.Data)||extract(year from Old.Data) <> extract(month from Current_Date)||extract(year from Current_Date)) then
Begin
update tbreplica_tabela set Status = '0'
Where tabela = 'TBESTOQUE_SALDO_MES'
and ano = Cast( Extract (Year from Old.Data) as Integer)
and mes = Cast( Extract (Month from Old.Data) as Integer)
and Status = '1';
End
End
if (updating) then
Begin
if (extract(month from Old.Data)||extract(year from Old.Data) <> extract(month from Current_Date)||extract(year from Current_Date)) then
begin
Update tbreplica_tabela set Status = '0'
Where tabela = 'TBESTOQUE_SALDO_MES'
and ano = Cast( Extract (Year from Old.Data) as Integer)
and mes = Cast( Extract (Month from Old.Data) as Integer)
and Status = '1';
end
if (extract(month from New.Data)||extract(year from New.Data) <> extract(month from Current_Date)||extract(year from Current_Date)) then
Begin
if (Extract (Year from Old.Data) <> Extract (Year from New.Data) or
Extract (Month from Old.Data) <> Extract (Month from New.Data)) then
begin
update or insert into tbreplica_tabela (tabela, ano, mes, status)
values ('TBESTOQUE_SALDO_MES',
Cast( Extract (Year from New.Data) as Integer),
Cast( Extract (Month from New.Data) as Integer),
'0')
matching (tabela, ano, mes);
End
End
End
end
^
ALTER TRIGGER TTBKANBAN_LOTE_B2I
AS
declare variable ID INTEGER;
declare variable LOCALIZACAO_DESCRICAO VARCHAR(100);
declare variable QUANTIDADE_NECESSIDADE NUMERIC(15,5);
begin
IF ( NEW.LOCALIZACAO_ID IS NULL ) THEN
BEGIN
EXCEPTION "..." 'INFORME UMA LOCALIZACAO DE ESTOQUE PARA INICIAR UM LOTE';
END
QUANTIDADE_NECESSIDADE = COALESCE((
SELECT ESTOQUE_NECESSIDADE
FROM (
SELECT
SUM(IIF( ESTOQUE_FISICO < ESTOQUE_MIN, ESTOQUE_MAX - ESTOQUE_FISICO, 0 )) ESTOQUE_NECESSIDADE
FROM (
SELECT
E.ESTOQUE_MIN,
E.ESTOQUE_MAX,
COALESCE(
(SELECT FIRST 1 SUM(SP.SALDO)
FROM VWESTOQUE_SALDO_PRODUTO SP
WHERE SP.ESTABELECIMENTO_ID = E.ESTABELECIMENTO_ID
AND SP.LOCALIZACAO_ID = E.LOCALIZACAO_ID
AND SP.PRODUTO_ID = E.PRODUTO_ID
AND SP.TAMANHO = E.TAMANHO),0) ESTOQUE_FISICO,
COALESCE(
(SELECT FIRST 1 SUM(SP.SALDO)
FROM VWESTOQUE_SALDO_PRODUTO SP
WHERE SP.ESTABELECIMENTO_ID = E.ESTABELECIMENTO_ID
AND SP.LOCALIZACAO_ID = P.LOCALIZACAO_CODIGO
AND SP.PRODUTO_ID = E.PRODUTO_ID
AND SP.TAMANHO = E.TAMANHO),0) PRODUTO_ESTOQUE_FISICO,
P.UNIDADEMEDIDA_SIGLA UM
FROM
VWESTOQUE_MINIMO_TAMANHO E,
TBPRODUTO P
WHERE TRUE
AND P.CODIGO = E.PRODUTO_ID
AND P.CODIGO = E.PRODUTO_ID
AND E.HABILITA_KANBAN = '1'
AND E.LOCALIZACAO_ID = 21
) X
) Y
WHERE ESTOQUE_NECESSIDADE > 0),0);
IF ( QUANTIDADE_NECESSIDADE = 0 ) THEN
BEGIN
EXCEPTION "..." 'NAO HA NECESSIDADE DE INICIAR UM NOVO LOTE PARA ESTA LOCALIZACAO';
END
ID = COALESCE((
SELECT FIRST 1 L.ID
FROM TBKANBAN_LOTE L
WHERE L.LOCALIZACAO_ID = NEW.LOCALIZACAO_ID
AND L.STATUS = '0'),0);
IF ( ID > 0 ) THEN
BEGIN
LOCALIZACAO_DESCRICAO = COALESCE((
SELECT FIRST 1 DESCRICAO
FROM TBLOCALIZACAO L
WHERE L.CODIGO = NEW.LOCALIZACAO_ID),'');
EXCEPTION "..." 'O LOTE ' || FN_LPAD(ID,5,'0') || ' JA ESTA INICIADO PARA A LOCALIZACAO: ' || NEW.LOCALIZACAO_ID || ' - ' || LOCALIZACAO_DESCRICAO || '. FINALIZE-O PARA PODER INICIAR UM NOVO LOTE.';
END
end
^
ALTER TRIGGER TTBREMESSA_TALAO_VINCULO_B3D
AS
declare variable HISTORICO VARCHAR(500);
declare variable REMESSA_ID INTEGER;
declare variable REMESSA_TALAO_ID INTEGER;
declare variable CONSUMO_STATUS CHAR(1);
begin
/* VERIFICACAO DA EXCLUSAO DE TRASACAO DE REMESSAS (WEB15070) */
IF ( OLD.ORIGEM_TABELA = 'TBREMESSA_CONSUMO' AND OLD.ORIGEM_NIVEL = 0 ) THEN
BEGIN
SELECT FIRST 1
C.REMESSA_ID,
C.REMESSA_TALAO_ID,
C.STATUS
FROM VWREMESSA_CONSUMO C
WHERE C.ID = OLD.ORIGEM_TABELA_ID
INTO :REMESSA_ID,
:REMESSA_TALAO_ID,
:CONSUMO_STATUS;
IF ( CONSUMO_STATUS = '1' ) THEN
BEGIN
EXCEPTION "..." 'EXCLUSAO NAO PERMITIDA. CONSUMO: ' || OLD.ORIGEM_TABELA_ID || ' JA BAIXADO DO ESTOQUE.';
END
DELETE FROM TBESTOQUE_TRANSACAO_ITEM X WHERE X.CONTROLE = OLD.ESTOQUE_ID_ENTRADA;
DELETE FROM TBESTOQUE_TRANSACAO_ITEM X WHERE X.CONTROLE = OLD.ESTOQUE_ID_SAIDA;
HISTORICO = 'TALAO : ' || LPAD(REMESSA_TALAO_ID,4,'0') || ' ALTERADO. VINCULO VIA TRANSACAO DE REMESSAS DO CONSUMO:' || OLD.CONSUMO_ID || ' [' || OLD.TIPO || '/' || OLD.TABELA_ID || '] QTD. ' || OLD.QUANTIDADE || IIF(OLD.QUANTIDADE_ALTERNATIVA > 0, ' / ' || OLD.QUANTIDADE_ALTERNATIVA, '') || ' EXCLUIDO';
EXECUTE PROCEDURE SPI_HISTORICO('TBREMESSA',:REMESSA_ID,:HISTORICO);
END
end
^
ALTER TRIGGER TTBREMESSA_TALAO_VINCULO_B5I
AS
DECLARE VARIABLE PRODUTO_ID INTEGER;
DECLARE VARIABLE TAMANHO INTEGER;
declare variable QUERY VARCHAR(500);
begin
/* VERIFICACAO DO VINCULO DE TRASACAO DE REMESSAS (WEB15070) */
IF ( TRIM(COALESCE(NEW.ORIGEM_TABELA,'')) <> '' ) THEN
BEGIN
QUERY = COALESCE((
SELECT FIRST 1
QUERY || ' FROM ' || CAST(NEW.ORIGEM_TABELA AS VARCHAR(50)) || ' WHERE ' || TRIM(A.RDB$FIELD_NAME) || ' = ' || NEW.ORIGEM_TABELA_ID
FROM
(SELECT
'SELECT FIRST 1 ' || LIST(TRIM(RDB$FIELD_NAME),', ') QUERY
FROM
RDB$RELATION_FIELDS A
WHERE
A.RDB$RELATION_NAME = NEW.ORIGEM_TABELA
AND (A.RDB$FIELD_NAME IN ('PRODUTO_CODIGO','PRODUTO_ID')
OR A.RDB$FIELD_NAME IN ('TAMANHO','TAM','TAMANHO_ID'))
ORDER BY 1
) X,
RDB$RELATION_FIELDS A
WHERE
A.RDB$RELATION_NAME = NEW.ORIGEM_TABELA
AND A.RDB$FIELD_NAME IN ('CODIGO','ID','CONTROLE')
),'');
PRODUTO_ID = 0;
FOR
EXECUTE STATEMENT QUERY
INTO :PRODUTO_ID, :TAMANHO
DO
BEGIN
IF (:PRODUTO_ID <> NEW.PRODUTO_ID OR :TAMANHO <> NEW.TAMANHO) THEN
BEGIN
EXCEPTION "..." 'VINCULO INVALIDO. PRODUTO/TAMANHO DA ORIGEM DIFERENTE DO ITEM A SER ALOCADO.';
END
END
IF ( PRODUTO_ID = 0 ) THEN
BEGIN
EXCEPTION "..." 'VINCULO DE PECA INVALIDO. ORIGEM NAO LOCALIZACADA.';
END
END
end
^
/******************************************************************************/
/**** Restoring deactivated procedures ****/
/******************************************************************************/
ALTER PROCEDURE SPC_REPOSICAO_ESTOQUE_KAMBAN(
ESTABELECIMENTO_ID INTEGER,
LOCALIZACAO_ID INTEGER,
FAMILIA_ID INTEGER)
RETURNS (
PRODUTO_ID INTEGER,
PRODUTO_DESCRICAO VARCHAR(400),
TAMANHO VARCHAR(10),
ESTOQUE NUMERIC(18,4),
EST_MIN NUMERIC(18,4),
EST_MAX NUMERIC(18,4),
PERC_PONTO_REP NUMERIC(18,4),
QTD_PONTO_REP NUMERIC(18,4),
TIPO_REP CHAR(12),
QTD_REP NUMERIC(18,4),
NECESSIDADE NUMERIC(18,4))
AS
declare variable xproduto_id integer;
declare variable xproduto_descricao varchar(400);
declare variable xtamanho varchar(10);
declare variable xestoque numeric(18,4);
declare variable xest_min numeric(18,4);
declare variable xest_max numeric(18,4);
declare variable xperc_ponto_rep numeric(18,4);
declare variable xqtd_ponto_rep numeric(18,4);
declare variable xtipo_rep char(12);
declare variable xqtd_rep numeric(18,4);
declare variable xNECESSIDADE numeric(18,4);
BEGIN
For
Select V.PRODUTO_ID,V.PRODUTO_DESCRICAO,V.Tamanho,V.ESTOQUE,
V.EST_MIN,V.EST_MAX, V.PERC_PONTO_REP,
V.QTD_PONTO_REP, V.TIPO_REP,V.QTD_REP,V.NECESSIDADE
From (
Select X.Produto_Id, X.Produto_Descricao, X.Tamanho,
X.ESTOQUE, X.ESTOQUE_MINIMO EST_MIN, X.ESTOQUE_MAXIMO EST_MAX,
X.PONTO_REPOSICAO PERC_PONTO_REP, X.QUANTIDADE_PONTO_REPOSICAO QTD_PONTO_REP,
IIF(X.TIPO_REPOSICAO = '0', 'MIN', 'MAX') TIPO_REP,
IIF(X.TIPO_REPOSICAO = '0' AND X.QUANTIDADE_PONTO_REPOSICAO <= X.ESTOQUE_MINIMO, X.ESTOQUE_MINIMO, X.ESTOQUE_MAXIMO) QTD_REP,
IIF( X.ESTOQUE < X.QUANTIDADE_PONTO_REPOSICAO ,
IIF(X.TIPO_REPOSICAO='0' AND X.QUANTIDADE_PONTO_REPOSICAO <= X.ESTOQUE_MINIMO, X.ESTOQUE_MINIMO, X.ESTOQUE_MAXIMO) - X.ESTOQUE, 0) NECESSIDADE
From (
Select B.Produto_Id, B.Produto_Descricao, B.Tam_Descricao Tamanho,
Coalesce(Cast((SELECT First 1 IIF(B.Tamanho = 0, S.SALDO, IIF(B.Tamanho = 1, S.T01_Saldo,
IIF(B.Tamanho = 2, S.T02_Saldo,IIF(B.Tamanho = 3, S.T03_Saldo,
IIF(B.Tamanho = 4, S.T04_Saldo,IIF(B.Tamanho = 5, S.T05_Saldo,
IIF(B.Tamanho = 6, S.T06_Saldo,IIF(B.Tamanho = 7, S.T07_Saldo,
IIF(B.Tamanho = 8, S.T08_Saldo,IIF(B.Tamanho = 9, S.T09_Saldo,
IIF(B.Tamanho =10, S.T10_Saldo,IIF(B.Tamanho =11, S.T11_Saldo,
IIF(B.Tamanho =12, S.T12_Saldo,IIF(B.Tamanho =13, S.T13_Saldo,
IIF(B.Tamanho =14, S.T14_Saldo,IIF(B.Tamanho =15, S.T15_Saldo,
IIF(B.Tamanho =16, S.T16_Saldo,IIF(B.Tamanho =17, S.T17_Saldo,
IIF(B.Tamanho =18, S.T18_Saldo,IIF(B.Tamanho =19, S.T19_Saldo,
IIF(B.Tamanho =20, S.T20_Saldo,0)))))))))))))))))))))
From TbEstoque_Saldo S
Where S.Produto_Codigo = B.Produto_Id And S.Localizacao_Codigo = :Localizacao_id
And S.ESTABELECIMENTO_CODIGO = :ESTABELECIMENTO_ID) as Numeric(15,4)),0.0000) Estoque,
Coalesce(Cast(B.ESTOQUE_MIN * (Coalesce(B.Ponto_Reposicao,100.0000) / 100.0000) as Numeric(15,4)),0.0000) QUANTIDADE_PONTO_REPOSICAO,
Coalesce(B.ESTOQUE_MIN,0.0000) Estoque_Minimo,
Coalesce(B.PONTO_REPOSICAO,0.0000) PONTO_REPOSICAO,
Coalesce(B.Estoque_Max,0.0000) Estoque_Maximo,
Coalesce(B.TIPO_REPOSICAO,'1') Tipo_Reposicao
From VWESTOQUE_MINIMO_TAMANHO B
Where B.Estabelecimento_ID = :Estabelecimento_Id
and B.Familia_ID = :Familia_Id
and B.Localizacao_ID = :Localizacao_Id
--and P.Status = '1'
and B.ESTOQUE_MIN > 0
) X
) V Where V.NECESSIDADE > 0
Into :xPRODUTO_ID, :xPRODUTO_DESCRICAO, :xTamanho, :xESTOQUE,
:xEST_MIN, :xEST_MAX, :xPERC_PONTO_REP, :xQTD_PONTO_REP,
:xTIPO_REP, :xQTD_REP, :xNECESSIDADE
Do
Begin
if (:xPRODUTO_ID > 0) then
Begin
produto_id = :Xproduto_id ;
produto_descricao = :Xproduto_descricao ;
tamanho = :Xtamanho ;
estoque = :Xestoque ;
est_min = :Xest_min ;
est_max = :Xest_max ;
tipo_rep= :Xtipo_rep ;
qtd_rep = :Xqtd_rep ;
perc_ponto_rep = :Xperc_ponto_rep ;
qtd_ponto_rep = :Xqtd_ponto_rep ;
necessidade = :Xnecessidade ;
Suspend;
End
End
End
^
/******************************************************************************/
/**** Updating object comments ****/
/******************************************************************************/
SET TERM ; ^
DESCRIBE FIELD NOTIFICACAO TABLE TBCASO_USUARIOS
'1-recebe notificacoes
0-nao recebe';
DESCRIBE FIELD TIPO TABLE TBESTOQUE_DETALHE_ALOCACAO
'TIPO
C = CONSUMO DE PEDIDO
P = PEDIDO
R = REMESSA
S = ESTOQUE DE SEGURANCA DO CONSUMO DA REMESSA
E = E = REGRAS DE ''E''STOQUE';
DESCRIBE FIELD CONFERENCIA TABLE TBESTOQUE_TRANSACAO_ITEM
'VERIRICA SE A TRANSACAO ESTA CONFERIDA
0 OU NULL = CONFERENCIA NAO NECESSARIA
1 = CONFERENCIA PENDENTE
2 = CONFERIDO
OBS.1: ESTANDO COM VALOR IGUAL A "1", O ESTOQUE DESTA TRANSACAO ESTARA ALOCADO.
OBS.2: ESTANDO COM VALOR IGUAL A "2", O ESTOQUE DESTA TRANSACAO ESTARA DISPONIVEL, POIS A ALOCACAO SERA EXCLUIDA.';
DESCRIBE FIELD TIPO TABLE TBNOTIFICACAO
'1-mensagem
2-erro
3-evento
4-funcao
5-agendamento';
DESCRIBE FIELD DATA_HORA TABLE TBNOTIFICACAO
'data hora do registro';
DESCRIBE FIELD EMITENTE TABLE TBNOTIFICACAO
'id do usuario que enviou a mensagem';
DESCRIBE FIELD AGENDAMENTO TABLE TBNOTIFICACAO
'data e hora do agendamento';
DESCRIBE FIELD EXECUTADO TABLE TBNOTIFICACAO
'1-agendamento foi executado
0-agendamento nao foi executado';
DESCRIBE FIELD TABELA TABLE TBNOTIFICACAO
'nome da tabela a quem a notificacao esta ligada';
DESCRIBE FIELD TABELA_ID TABLE TBNOTIFICACAO
'id da tabela a quem a notificacao esta ligada';
DESCRIBE FIELD HORARIO_PERMITIDO TABLE TBWORKFLOW_ITEM_TAREFA
'Faixa de horario permitida para a tarefa ser executada';
DESCRIBE TRIGGER TTBESTOQUE_TRANSACAO_ITEM_B3U
'Regras de Alocacao para conferencia';
DESCRIBE TRIGGER TTBKANBAN_LOTE_B0D
'Remove itens do lote';
DESCRIBE TRIGGER TTBKANBAN_LOTE_B2I
'Validacoes para inicializacao de um novo lote';
DESCRIBE TRIGGER TTBKANBAN_LOTE_B5D
'';
DESCRIBE TRIGGER TTBPEDIDO_ITEM_PROC_B0U_03
'Obs:ABS trigger so sera processada em remessas geradas pelo gcweb.
Registra a entrada no estoque';
DESCRIBE TRIGGER TTBREMESSA_CONSUMO_B0U_03
'OBS: TRIGGER PARA PROCESSAMENTO NO GCWEB. REGISTRA A SAIDA DO ESTOQUE';
DESCRIBE TRIGGER TTBREMESSA_ITEM_PROCESSADO_B3U
'ATUALIZA ESTOQUES EM PROCESSO DAS REMESSAS GERADAS PELA WEB';
DESCRIBE TRIGGER TTBREMESSA_TALAO_VINCULO_B3D
'VERIFICACAO DA EXCLUSAO DE TRASACAO DE REMESSAS (WEB15070)';
DESCRIBE TRIGGER TTBREMESSA_TALAO_VINCULO_B5I
'VERIFICACAO DO VINCULO DE TRASACAO DE REMESSAS';
DESCRIBE VIEW VWREGISTRO_DEFEITO_DIA
'tabela de defeitos por, modelo,produto,cor,perfil,linha,gp,data,familia,estabelecimento';
DESCRIBE VIEW VWREGISTRO_PRODUCAO_DIA
'tabela de producao por, modelo,produto,cor,perfil,linha,gp,data,familia,estabelecimento';
/******************************************************************************/
/**** Revoking excess privileges ****/
/******************************************************************************/
REVOKE USAGE ON SEQUENCE GTBCASO_CONTATO FROM SYSDBA;
REVOKE EXECUTE ON PROCEDURE SPC_NFS_FATURAMENTO9 FROM SYSDBA;
REVOKE EXECUTE ON PROCEDURE SPU_REPROCESSA_OC_ITEM FROM SYSDBA;
/******************************************************************************/
/**** Granting missing privileges ****/
/******************************************************************************/
GRANT SELECT, INSERT, UPDATE, DELETE, REFERENCES ON VWESTOQUE_MINIMO_TAMANHO TO ALEXANDREL;
GRANT SELECT, INSERT, UPDATE, DELETE, REFERENCES ON VWREGISTRO_DEFEITO_DIA TO GC;
GRANT SELECT, INSERT, UPDATE, DELETE, REFERENCES ON VWREGISTRO_PRODUCAO_DIA TO GC;
GRANT SELECT, INSERT, UPDATE, DELETE, REFERENCES ON VWESTOQUE_MINIMO_TAMANHO TO GC;
GRANT EXECUTE ON PROCEDURE SPU_REPROCESSA_OC_ITEM TO GC WITH GRANT OPTION;
GRANT EXECUTE ON PROCEDURE SPC_NFS_FATURAMENTO9 TO GC WITH GRANT OPTION;
GRANT SELECT, INSERT, UPDATE, DELETE, REFERENCES ON VWREGISTRO_DEFEITO_DIA TO SYSDBA WITH GRANT OPTION;
GRANT SELECT, INSERT, UPDATE, DELETE, REFERENCES ON VWREGISTRO_PRODUCAO_DIA TO SYSDBA WITH GRANT OPTION;
GRANT SELECT, INSERT, UPDATE, DELETE, REFERENCES ON VWESTOQUE_MINIMO_TAMANHO TO SYSDBA WITH GRANT OPTION;