/* 

ATENCAO!!!!!!!!!!!

A mesma coisa deve ser executada no banco do cliente. 
CUIDADO!!: no script eu crio uma nova tabela, transfiro os dados para essa nova tabela, "limpo" a tabela original, corrijo os valores da coluna ITEM na nova tabela e transfiro de volta para a tabela original. Ou seja, É FUNDAMENTAL QUE SEJA FEITO UM BACKUP ANTES, porque se algo der errado pode se voltar o backup.

*/


/* Na tabela ATENDEREQUISICAOVALOR a coluna item é do tipo identity e
isso causa erro, depois de rodas este script, pois a coluna item passa a ser atualizada 
pela trigger e dá erro porque colunas do tipo identity não podem ser atualizadas manualmente,
e sim o banco é que se encarrega de atualizá-las. O que fiz foi criar uma coluna auxliar, item1,
repassar os dados da coluna item para item1, apagar a columa item, criar a coluna item do tipo
inteiro, repassar os dados da coluna item1 para item, e finalmente a pagar a coluna item1.
*/ 

alter table ATENDEREQUISICAOVALOR add  item1 int 
go
update ATENDEREQUISICAOVALOR set item1 = item
go
alter table atenderequisicaovalor drop column item
go
alter table atenderequisicaovalor add item int not null default 0
go
update ATENDEREQUISICAOVALOR set item = item1
go
alter table atenderequisicaovalor drop column item1
go

 
CREATE TABLE ATENDEREQUISICAOVALOR2 (
 TWNUMORD int NOT NULL ,
 TWITEM varchar (254) NULL ,
 CODPRO char (5) NULL ,
 QUANTIDADE numeric(15, 3) NULL ,
 QUANTIDADEUTILIZADA numeric(15, 3) NULL ,
 VALOR numeric(18, 5) NULL ,
 DATA datetime NULL ,
 ITEM int not NULL identity(1,1),
 NORMAL int NULL  DEFAULT (1)
)
GO
insert into atenderequisicaovalor2(twnumord, twitem, codpro, quantidade, quantidadeutilizada, valor, data, normal)
 select twnumord, twitem, codpro, quantidade, quantidadeutilizada, valor, data, normal from atenderequisicaovalor
go
 
truncate table atenderequisicaovalor
go
 
drop trigger dbo.ATENDEREQUISICAOVALOR_I
GO
insert into atenderequisicaovalor(twnumord, twitem, codpro, quantidade, quantidadeutilizada, valor, data, normal, Item)  select twnumord, twitem, codpro, quantidade, quantidadeutilizada, valor, data, normal, Item from atenderequisicaovalor2
go
 
alter table atenderequisicaovalor alter column item int not null
go
 
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
 

CREATE  trigger ATENDEREQUISICAOVALOR_I on ATENDEREQUISICAOVALOR for insert as
begin
    update ATENDEREQUISICAOVALOR set ITEM = (SELECT MAX(ITEM)+1 FROM ATENDEREQUISICAOVALOR) WHERE ITEM = (select ITEM from inserted WHERE ITEM=0)
    return
end
 

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
 
drop table atenderequisicaovalor2
go
 
ALTER TABLE ATENDEREQUISICAOVALOR  ADD 
 CONSTRAINT PK_ATENDEREQUISICAOVALOR PRIMARY KEY 
 (
  ITEM
 )
go
