use equalizi_prd IF OBJECT_ID('spw_Resposta_Item_Proposta_Cotacao_Create') IS NOT NULL DROP PROCEDURE [dbo].[spw_Resposta_Item_Proposta_Cotacao_Create] GO -- -- spw_Resposta_Item_Proposta_Cotacao_Create -- CREATE PROCEDURE [dbo].[spw_Resposta_Item_Proposta_Cotacao_Create] @cd_token VARCHAR(50), @json_resposta_item VARCHAR(MAX), @is_negociar BIT = NULL, @json_retorno VARCHAR(MAX) OUTPUT AS SET NOCOUNT ON SET ARITHABORT ON DECLARE @id_conta INT DECLARE @id_usuario INT DECLARE @id_empresa INT DECLARE @id_conta_usuario INT DECLARE @id_ocorrencia INT DECLARE @tx_ocorrencia VARCHAR(255) DECLARE @nm_campo_ocorrencia VARCHAR(255) DECLARE @id_tipo_conta INT DECLARE @id_item INT DECLARE @id_tipo_lista INT DECLARE @id_disciplina INT DECLARE @id_cotacao INT DECLARE @id_proposta INT DECLARE @id_resposta_item INT DECLARE @tx_valor_unitario VARCHAR(255) DECLARE @tx_valor_unitario_vendedor VARCHAR(255) DECLARE @tx_comentario VARCHAR(255) DECLARE @valor_unitario FLOAT DECLARE @valor_unitario_vendedor FLOAT DECLARE @id_tipo_frete INT DECLARE @prazo_entrega INT SET @id_conta = dbo.fne_GetContaSessao(@cd_token) SET @id_usuario = dbo.fne_GetUsuario(@cd_token) SET @id_empresa = dbo.fne_GetEmpresa(@cd_token) EXEC spe_Validate_Usuario @id_usuario, @id_conta, @id_conta_usuario OUTPUT, @id_ocorrencia OUTPUT, @tx_ocorrencia OUTPUT, @nm_campo_ocorrencia OUTPUT IF @id_ocorrencia>0 BEGIN EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = 1, @tx_ocorrencia = @tx_ocorrencia, @nm_campo_ocorrencia = @nm_campo_ocorrencia, @json_retorno = @json_retorno OUTPUT return END BEGIN TRY BEGIN TRAN SET @id_item = NULLIF(JSON_VALUE(@json_resposta_item, '$.id_item'), '') SET @id_cotacao = NULLIF(JSON_VALUE(@json_resposta_item, '$.id_cotacao'), '') SET @id_tipo_lista = NULLIF(JSON_VALUE(@json_resposta_item, '$.id_tipo_lista'), '') SET @id_disciplina = NULLIF(JSON_VALUE(@json_resposta_item, '$.id_disciplina'), '') SET @id_proposta = NULLIF(JSON_VALUE(@json_resposta_item, '$.id_proposta'), '') SET @id_resposta_item = NULLIF(JSON_VALUE(@json_resposta_item, '$.id_resposta_item'), '') SET @tx_comentario = NULLIF(JSON_VALUE(@json_resposta_item, '$.tx_comentario'), '') SET @tx_valor_unitario = NULLIF(JSON_VALUE(@json_resposta_item, '$.tx_valor_unitario'), '') SET @tx_valor_unitario_vendedor = NULLIF(JSON_VALUE(@json_resposta_item, '$.tx_valor_unitario_vendedor'), '') SET @id_tipo_frete = NULLIF(JSON_VALUE(@json_resposta_item, '$.id_tipo_frete'), '') SET @prazo_entrega = NULLIF(JSON_VALUE(@json_resposta_item, '$.prazo_entrega'), '') IF ISNUMERIC(@tx_valor_unitario) = 0 BEGIN SET @id_ocorrencia = 10 SET @tx_ocorrencia = 'Valor unitario inválido. Precisa ser um valor numérico.' SET @nm_campo_ocorrencia = '' EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = @id_ocorrencia, @tx_ocorrencia = @tx_ocorrencia, @nm_campo_ocorrencia = @nm_campo_ocorrencia , @json_retorno = @json_retorno OUTPUT ROLLBACK TRAN RETURN END SET @valor_unitario = CAST(@tx_valor_unitario AS FLOAT); SET @valor_unitario_vendedor = CAST(@tx_valor_unitario_vendedor AS FLOAT); EXEC spe_Validate_Usuario_Responder_Cotacao @id_usuario, @id_conta, @id_cotacao, @id_ocorrencia OUTPUT, @tx_ocorrencia OUTPUT, @nm_campo_ocorrencia OUTPUT IF @id_ocorrencia>0 BEGIN EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = @id_ocorrencia, @tx_ocorrencia = @tx_ocorrencia, @nm_campo_ocorrencia = @nm_campo_ocorrencia , @json_retorno = @json_retorno OUTPUT ROLLBACK TRAN RETURN END EXEC spe_Validate_Cotacao_Ativa @id_cotacao, @id_ocorrencia OUTPUT, @tx_ocorrencia OUTPUT, @nm_campo_ocorrencia OUTPUT IF @id_ocorrencia>0 BEGIN EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = @id_ocorrencia, @tx_ocorrencia = @tx_ocorrencia, @nm_campo_ocorrencia = @nm_campo_ocorrencia , @json_retorno = @json_retorno OUTPUT ROLLBACK TRAN RETURN END EXEC spe_Validate_Usuario_Responder_Disciplina @id_usuario, @id_conta, @id_cotacao, @id_disciplina, @id_ocorrencia OUTPUT, @tx_ocorrencia OUTPUT, @nm_campo_ocorrencia OUTPUT IF @id_ocorrencia>0 BEGIN EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = @id_ocorrencia, @tx_ocorrencia = @tx_ocorrencia, @nm_campo_ocorrencia = @nm_campo_ocorrencia, @json_retorno = @json_retorno OUTPUT ROLLBACK TRAN RETURN END DECLARE @validate_id_tipo_lista INT SELECT @validate_id_tipo_lista = ID_TIPO_LISTA FROM DOM_TIPO_LISTA WHERE ID_TIPO_LISTA = @id_tipo_lista AND FL_ATIVO = 1 IF @validate_id_tipo_lista IS NULL BEGIN SET @id_ocorrencia = 6 SET @tx_ocorrencia = 'Lista inexistentamente' SET @nm_campo_ocorrencia = 'id_tipo_lista' EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = 1, @tx_ocorrencia = @tx_ocorrencia, @nm_campo_ocorrencia = @nm_campo_ocorrencia, @json_retorno = @json_retorno OUTPUT ROLLBACK TRAN RETURN END EXEC spe_Validate_Tipo_Frete @id_tipo_frete, @id_ocorrencia OUTPUT, @tx_ocorrencia OUTPUT, @nm_campo_ocorrencia OUTPUT IF @id_ocorrencia>0 BEGIN EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = @id_ocorrencia, @tx_ocorrencia = @tx_ocorrencia, @nm_campo_ocorrencia = @nm_campo_ocorrencia, @json_retorno = @json_retorno OUTPUT ROLLBACK TRAN RETURN END IF @id_resposta_item IS NULL OR @id_resposta_item = '' BEGIN EXEC spe_Resposta_Proposta_Item_Cotacao_Create @valor_unitario, @tx_comentario, @id_item, @id_proposta, @id_conta, @id_empresa, @id_usuario, @id_cotacao, @id_disciplina, @id_tipo_lista, @id_tipo_frete, @prazo_entrega, @id_resposta_item OUTPUT, @id_ocorrencia OUTPUT, @tx_ocorrencia OUTPUT, @nm_campo_ocorrencia OUTPUT IF @id_ocorrencia>0 BEGIN ROLLBACK TRAN EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = 1, @tx_ocorrencia = @tx_ocorrencia, @nm_campo_ocorrencia = @nm_campo_ocorrencia, @json_retorno = @json_retorno OUTPUT RETURN END IF @id_resposta_item IS NULL BEGIN ROLLBACK TRAN EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = 1, @tx_ocorrencia = 'Não salvou', @nm_campo_ocorrencia = 'Não retornou id_item', @json_retorno = @json_retorno OUTPUT RETURN END END ELSE BEGIN EXEC spe_Resposta_Proposta_Item_Cotacao_Update @id_resposta_item, @valor_unitario, @tx_comentario, @id_item, @id_proposta, @id_conta, @id_empresa, @id_usuario, @id_cotacao, @id_disciplina, @id_tipo_lista, @id_tipo_frete, @prazo_entrega, @id_resposta_item OUTPUT, @id_ocorrencia OUTPUT, @tx_ocorrencia OUTPUT, @nm_campo_ocorrencia OUTPUT IF @id_ocorrencia>0 BEGIN EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = 1, @tx_ocorrencia = @tx_ocorrencia, @nm_campo_ocorrencia = @nm_campo_ocorrencia, @json_retorno = @json_retorno OUTPUT ROLLBACK TRAN RETURN END END EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = -1, @tx_ocorrencia = 'SALVOU', @nm_campo_ocorrencia = '', @json_retorno = @json_retorno OUTPUT DECLARE @tbl_retorno NVARCHAR(MAX) = JSON_VALUE(@json_retorno, '$.tbl_retorno') DECLARE @json_item_retorno NVARCHAR(MAX) BEGIN SET @json_item_retorno = ( SELECT DISTINCT BK.* FROM [dbo].[VW_GR_ITEM_RESPOSTA_COTACAO] BK WHERE BK.id_disciplina = @id_disciplina AND BK.id_tipo_lista = @id_tipo_lista AND BK.id_resposta_item = @id_resposta_item FOR JSON PATH, WITHOUT_ARRAY_WRAPPER ) END SET @tbl_retorno = JSON_MODIFY( @tbl_retorno, '$.data', JSON_QUERY('{"resposta_item":' + @json_item_retorno + '}}') ) SET @json_retorno = JSON_MODIFY( @json_retorno, '$.tbl_retorno', JSON_QUERY(@tbl_retorno) ) COMMIT TRAN return END TRY BEGIN CATCH --- ERRO EM ALGUMA PRC SET @id_ocorrencia = 999 SET @tx_ocorrencia = CAST(ERROR_MESSAGE() AS VARCHAR(MAX)) + ' - ' + ERROR_MESSAGE() SET @nm_campo_ocorrencia = NULL EXEC dbo.spw_GetRetorno_React @fl_tbl_ret = 0, @id_ocorrencia = 1, @tx_ocorrencia = @tx_ocorrencia, @nm_campo_ocorrencia = 'campo1', @json_retorno = @json_retorno OUTPUT ROLLBACK TRAN RETURN END CATCH GO IF OBJECT_ID('[spe_Resposta_Proposta_Item_Cotacao_Update]') IS NOT NULL DROP PROCEDURE [dbo].[spe_Resposta_Proposta_Item_Cotacao_Update] GO -- -- spe_Resposta_Proposta_Item_Cotacao_Update -- CREATE PROCEDURE [dbo].[spe_Resposta_Proposta_Item_Cotacao_Update] @id_resposta_proposta_cotacao INT, @tx_valor_unitario FLOAT, @tx_comentario VARCHAR(MAX), @id_item INT, @id_proposta INT, @id_conta INT, @id_empresa INT, @id_usuario INT, @id_cotacao INT, @id_disciplina INT, @id_tipo_lista INT, @id_tipo_frete INT, @prazo_entrega INT, @id_resposta_proposta_item INT OUTPUT, @id_ocorrencia INT OUTPUT, @tx_ocorrencia VARCHAR(255) OUTPUT, @nm_campo_ocorrencia VARCHAR(255) OUTPUT AS SET NOCOUNT ON SET @id_ocorrencia = -1 SET @tx_ocorrencia = '' SET @nm_campo_ocorrencia = '' DECLARE @fl_ativo BIT = 1 DECLARE @fl_ativo_negociar BIT = 0; SELECT @fl_ativo_negociar = ISNULL(FL_ATIVO, 0) FROM COTACAO_NEGOCIA_TBL WHERE ID_COTACAO = @id_cotacao AND ID_CONTA = @id_conta; BEGIN TRY IF @fl_ativo_negociar = 1 BEGIN UPDATE RESPOSTA_PROPOSTA_COTACAO SET FL_ATIVO = 0, FL_IS_NEGOCIAR = 1 WHERE ID_COTACAO = @id_cotacao AND ID_DICIPLINA = @id_disciplina AND ID_TIPO_LISTA = @id_tipo_lista AND ID_PROPOSTA_COTACAO = @id_proposta AND ID_ITEM = @id_item; EXEC spe_Resposta_Proposta_Item_Cotacao_Create @tx_valor_unitario, @tx_comentario, @id_item, @id_proposta, @id_conta, @id_empresa, @id_usuario, @id_cotacao, @id_disciplina, @id_tipo_lista, @id_tipo_frete, @prazo_entrega, @id_resposta_proposta_item OUTPUT, @id_ocorrencia OUTPUT, @tx_ocorrencia OUTPUT, @nm_campo_ocorrencia OUTPUT; END ELSE BEGIN UPDATE RESPOSTA_PROPOSTA_COTACAO SET FL_ATIVO = 0 WHERE ID_COTACAO = @id_cotacao AND ID_DICIPLINA = @id_disciplina AND ID_TIPO_LISTA = @id_tipo_lista AND ID_PROPOSTA_COTACAO = @id_proposta AND ID_ITEM = @id_item; EXEC spe_Resposta_Proposta_Item_Cotacao_Create @tx_valor_unitario, @tx_comentario, @id_item, @id_proposta, @id_conta, @id_empresa, @id_usuario, @id_cotacao, @id_disciplina, @id_tipo_lista, @id_tipo_frete, @prazo_entrega, @id_resposta_proposta_item OUTPUT, @id_ocorrencia OUTPUT, @tx_ocorrencia OUTPUT, @nm_campo_ocorrencia OUTPUT; END END TRY BEGIN CATCH SET @id_ocorrencia = 999 SET @tx_ocorrencia = CAST(ERROR_MESSAGE() AS VARCHAR(MAX)) + ' - ' + ERROR_MESSAGE() SET @nm_campo_ocorrencia = NULL END CATCH GO IF OBJECT_ID('[spe_Resposta_Proposta_Item_Cotacao_Create]') IS NOT NULL DROP PROCEDURE [dbo].[spe_Resposta_Proposta_Item_Cotacao_Create] GO -- -- spe_Resposta_Proposta_Item_Cotacao_Create -- CREATE PROCEDURE [dbo].[spe_Resposta_Proposta_Item_Cotacao_Create] @tx_valor_unitario FLOAT, @tx_comentario VARCHAR(MAX), @id_item INT, @id_proposta INT, @id_conta INT, @id_empresa INT, @id_usuario INT, @id_cotacao INT, @id_disciplina INT, @id_tipo_lista INT, @id_tipo_frete INT, @prazo_entrega INT, @id_resposta_proposta_cotacao INT OUTPUT, @id_ocorrencia INT OUTPUT, @tx_ocorrencia VARCHAR(255) OUTPUT, @nm_campo_ocorrencia VARCHAR(255) OUTPUT AS SET NOCOUNT ON SET @id_ocorrencia = -1 SET @tx_ocorrencia = '' SET @nm_campo_ocorrencia = '' DECLARE @fl_ativo BIT = 1 BEGIN TRY DECLARE @fl_ativo_negociar BIT = 0; SELECT @fl_ativo_negociar = ISNULL(FL_ATIVO, 0) FROM COTACAO_NEGOCIA_TBL WHERE ID_COTACAO = @id_cotacao AND ID_CONTA = @id_conta; IF @fl_ativo_negociar = 1 BEGIN INSERT INTO RESPOSTA_PROPOSTA_COTACAO( ID_PROPOSTA_COTACAO, ID_ITEM, ID_COTACAO, ID_DICIPLINA, ID_TIPO_LISTA, ID_EMPRESA, ID_CONTA, TX_VALOR_UNITARIO, TX_COMENTARIO, ID_TIPO_FRETE, PRAZO_ENTREGA, DT_TIME_STAMP_INS, ID_USER_STAMP_INS, FL_IS_NEGOCIAR, FL_ATIVO ) VALUES ( @id_proposta, @id_item, @id_cotacao, @id_disciplina, @id_tipo_lista, @id_empresa, @id_conta, @tx_valor_unitario, @tx_comentario, @id_tipo_frete, @prazo_entrega, GETDATE(), @id_usuario, 1, @fl_ativo ) END ELSE BEGIN INSERT INTO RESPOSTA_PROPOSTA_COTACAO( ID_PROPOSTA_COTACAO, ID_ITEM, ID_COTACAO, ID_DICIPLINA, ID_TIPO_LISTA, ID_EMPRESA, ID_CONTA, TX_VALOR_UNITARIO, TX_COMENTARIO, ID_TIPO_FRETE, PRAZO_ENTREGA, DT_TIME_STAMP_INS, ID_USER_STAMP_INS, FL_ATIVO ) VALUES ( @id_proposta, @id_item, @id_cotacao, @id_disciplina, @id_tipo_lista, @id_empresa, @id_conta, @tx_valor_unitario, @tx_comentario, @id_tipo_frete, @prazo_entrega, GETDATE(), @id_usuario, @fl_ativo ) END SET @id_resposta_proposta_cotacao = SCOPE_IDENTITY() END TRY BEGIN CATCH SET @id_ocorrencia = 999 SET @tx_ocorrencia = CAST(ERROR_MESSAGE() AS VARCHAR(MAX)) + ' - ' + ERROR_MESSAGE() SET @nm_campo_ocorrencia = NULL END CATCH GO