Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- USE [TROPICAL]
- GO
- /****** Object: StoredProcedure [dbo].[sp_AlinharStatusPedidoDeVenda] Script Date: 08/03/2019 17:48:00 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- ALTER Procedure [dbo].[sp_AlinharStatusPedidoDeVenda](@pIdPedidoDeVenda Identificador) As
- Begin
- /*
- Status possiveis para o item do pedido:
- <A>berto
- <L>iberado
- <C>ancelado
- <P>arcialmente Atendido
- <X>Atendido com Corte
- <T>otalmente Atendido
- <R>Parcialmente Devolvido
- <D>evolvido
- Quantidade | Status Item Pedido
- ----------------------------------------------------------------------|-------------------
- (QtPedida <= QtAtendida) e (QtAtendida <> 0) e (Status <> R ou D) | T
- (QtPedida > QtAtendida) e (QtAtendida <> 0) e (Status = T) | X
- (QtPedida > QtAtendida) e (QtAtendida <> 0) e (Status <> X ou R ou D) | P
- (QtAtendida = 0) e (Status <> A ou C ou R ou D) | L
- Outra situacao | Status Original
- ********************************************************************************
- Status possiveis para o pedido:
- <A>berto
- <L>iberado
- <C>ancelado
- <P>arcialmente Atendido
- <X>Atendido com Corte
- <T>otalmente Atendido
- <R>Parcialmente Devolvido
- <D>evolvido
- Status Item | Status Pedido
- ----------------|--------------
- A | A
- A L | L
- A C | A
- A P | P
- A X | P
- A T | P
- A R | R
- A D | R
- A L C | L
- A L P | P
- A L X | P
- A L T | P
- A L R | R
- A L D | R
- A L C P | P
- A L C X | P
- A L C T | P
- A L C R | R
- A L C D | R
- A L C P X | P
- A L C P T | P
- A L C P R | R
- A L C P D | R
- A L C P X T | P
- A L C P X R | R
- A L C P X D | R
- A L C P X T R | R
- A L C P X T D | R
- A L C P X T R D | R
- ----------------|--------------
- L | L
- L C | L
- L P | P
- L X | P
- L T | P
- L R | R
- L D | R
- L C P | P
- L C X | P
- L C T | P
- L C R | R
- L C D | R
- L C P X | P
- L C P T | P
- L C P R | R
- L C P D | R
- L C P X T | P
- L C P X R | R
- L C P X D | R
- L C P X T R | R
- L C P X T D | R
- L C P X T R D | R
- ----------------|--------------
- C | C
- C P | P
- C X | X
- C T | X
- C R | R
- C D | R
- C P X | P
- C P T | P
- C P R | R
- C P D | R
- C P X T | P
- C P X R | R
- C P X D | R
- C P X T R | R
- C P X T D | R
- C P X T R D | R
- ----------------|--------------
- P | P
- P X | P
- P T | P
- P R | R
- P D | R
- P X T | P
- P X R | R
- P X D | R
- P X T R | R
- P X T D | R
- P X T R D | R
- ----------------|--------------
- X | X
- X T | X
- X R | R
- X D | R
- X T R | R
- X T D | R
- X T R D | R
- ----------------|--------------
- T | T
- T R | R
- T D | R
- T R D | R
- ----------------|--------------
- R | R
- R D | R
- ----------------|--------------
- D | D
- */
- SET NOCOUNT ON
- Declare
- @lStPedidoDeVenda Status,
- @lIdPedidoDeVendaItem Identificador,
- @lStPedidoDeVendaItem Status,
- @lQtPedida Quantidade,
- @lQtAtendida Quantidade,
- @lStPedidoDeVendaAlterado Status,
- @lStPedidoDeVendaItemAlterado Status,
- @lStTodosPedidoDeVendaItem Varchar(6)
- Declare Cur_sp_AlinharStatusPedidoDeVenda Cursor Fast_Forward Read_Only
- For
- Select
- PV.StPedidoDeVenda,
- PVI.IdPedidoDeVendaItem,
- PVI.StPedidoDeVendaItem,
- PVI.QtPedida,
- PVI.QtAtendida
- From
- PedidoDeVenda PV,
- PedidoDeVendaItem PVI
- Where
- (PV.IdPedidoDeVenda = PVI.IdPedidoDeVenda) and
- (PV.IdPedidoDeVenda = @pIdPedidoDeVenda)
- Open Cur_sp_AlinharStatusPedidoDeVenda
- Fetch Next
- From
- Cur_sp_AlinharStatusPedidoDeVenda
- Into
- @lStPedidoDeVenda,
- @lIdPedidoDeVendaItem,
- @lStPedidoDeVendaItem,
- @lQtPedida,
- @lQtAtendida
- Select
- @lStTodosPedidoDeVendaItem = ''
- While @@Fetch_Status = 0
- Begin
- Select
- @lQtPedida = IsNull(@lQtPedida, 0),
- @lQtAtendida = IsNull(@lQtAtendida, 0)
- If (@lQtPedida <= @lQtAtendida) and
- (@lQtAtendida <> 0) and
- (@lStPedidoDeVendaItem not in ('R', 'D'))
- Select
- @lStPedidoDeVendaItemAlterado = 'T'
- Else
- If (@lQtPedida > @lQtAtendida) and
- (@lQtAtendida <> 0) and
- (@lStPedidoDeVendaItem = 'T')
- Select
- @lStPedidoDeVendaItemAlterado = 'X'
- Else
- If (@lQtPedida > @lQtAtendida) and
- (@lQtAtendida <> 0) and
- (@lStPedidoDeVendaItem not in ('X', 'R', 'D'))
- Select
- @lStPedidoDeVendaItemAlterado = 'P'
- Else
- If (@lQtAtendida = 0) and
- (@lStPedidoDeVendaItem not in ('A', 'C', 'R', 'D'))
- Select
- @lStPedidoDeVendaItemAlterado = 'L'
- Else
- Select
- @lStPedidoDeVendaItemAlterado = @lStPedidoDeVendaItem
- If CHARINDEX(@lStPedidoDeVendaItemAlterado, @lStTodosPedidoDeVendaItem) = 0
- Select
- @lStTodosPedidoDeVendaItem = @lStTodosPedidoDeVendaItem + @lStPedidoDeVendaItemAlterado
- If @lStPedidoDeVendaItem <> @lStPedidoDeVendaItemAlterado
- Begin
- Update
- PedidoDeVendaItem
- Set
- StPedidoDeVendaItem = @lStPedidoDeVendaItemAlterado
- Where
- (IdPedidoDeVendaItem = @lIdPedidoDeVendaItem)
- End
- Fetch Next
- From
- Cur_sp_AlinharStatusPedidoDeVenda
- Into
- @lStPedidoDeVenda,
- @lIdPedidoDeVendaItem,
- @lStPedidoDeVendaItem,
- @lQtPedida,
- @lQtAtendida
- End
- If LEN(@lStTodosPedidoDeVendaItem) <> 0
- Begin
- If LEN(@lStTodosPedidoDeVendaItem) = 1
- Select
- @lStPedidoDeVendaAlterado = @lStTodosPedidoDeVendaItem
- Else
- Begin
- If (CHARINDEX('A', @lStTodosPedidoDeVendaItem) = 0) and
- (CHARINDEX('L', @lStTodosPedidoDeVendaItem) = 0) and
- (CHARINDEX('P', @lStTodosPedidoDeVendaItem) = 0) and
- (CHARINDEX('R', @lStTodosPedidoDeVendaItem) = 0) and
- (CHARINDEX('D', @lStTodosPedidoDeVendaItem) = 0)
- Select
- @lStPedidoDeVendaAlterado = 'X'
- Else
- If (CHARINDEX('R', @lStTodosPedidoDeVendaItem) <> 0) or
- (CHARINDEX('D', @lStTodosPedidoDeVendaItem) <> 0)
- Select
- @lStPedidoDeVendaAlterado = 'R'
- Else
- If (CHARINDEX('P', @lStTodosPedidoDeVendaItem) <> 0) or
- (CHARINDEX('X', @lStTodosPedidoDeVendaItem) <> 0) or
- (CHARINDEX('T', @lStTodosPedidoDeVendaItem) <> 0)
- Select
- @lStPedidoDeVendaAlterado = 'P'
- Else
- If (CHARINDEX('L', @lStTodosPedidoDeVendaItem) <> 0)
- Select
- @lStPedidoDeVendaAlterado = 'L'
- Else
- Select
- @lStPedidoDeVendaAlterado = 'A'
- End
- If @lStPedidoDeVenda <> @lStPedidoDeVendaAlterado
- Begin
- Update
- PedidoDeVenda
- Set
- StPedidoDeVenda = @lStPedidoDeVendaAlterado
- Where
- (IdPedidoDeVenda = @pIdPedidoDeVenda)
- End
- End
- Close Cur_sp_AlinharStatusPedidoDeVenda
- Deallocate Cur_sp_AlinharStatusPedidoDeVenda
- SET NOCOUNT OFF
- End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement