Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.15 KB | None | 0 0
  1. USE [TROPICAL]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[sp_AlinharStatusPedidoDeVenda] Script Date: 08/03/2019 17:48:00 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9. ALTER Procedure [dbo].[sp_AlinharStatusPedidoDeVenda](@pIdPedidoDeVenda Identificador) As
  10. Begin
  11. /*
  12. Status possiveis para o item do pedido:
  13. <A>berto
  14. <L>iberado
  15. <C>ancelado
  16. <P>arcialmente Atendido
  17. <X>Atendido com Corte
  18. <T>otalmente Atendido
  19. <R>Parcialmente Devolvido
  20. <D>evolvido
  21.  
  22. Quantidade | Status Item Pedido
  23. ----------------------------------------------------------------------|-------------------
  24. (QtPedida <= QtAtendida) e (QtAtendida <> 0) e (Status <> R ou D) | T
  25. (QtPedida > QtAtendida) e (QtAtendida <> 0) e (Status = T) | X
  26. (QtPedida > QtAtendida) e (QtAtendida <> 0) e (Status <> X ou R ou D) | P
  27. (QtAtendida = 0) e (Status <> A ou C ou R ou D) | L
  28. Outra situacao | Status Original
  29.  
  30. ********************************************************************************
  31.  
  32. Status possiveis para o pedido:
  33. <A>berto
  34. <L>iberado
  35. <C>ancelado
  36. <P>arcialmente Atendido
  37. <X>Atendido com Corte
  38. <T>otalmente Atendido
  39. <R>Parcialmente Devolvido
  40. <D>evolvido
  41.  
  42. Status Item | Status Pedido
  43. ----------------|--------------
  44. A | A
  45. A L | L
  46. A C | A
  47. A P | P
  48. A X | P
  49. A T | P
  50. A R | R
  51. A D | R
  52. A L C | L
  53. A L P | P
  54. A L X | P
  55. A L T | P
  56. A L R | R
  57. A L D | R
  58. A L C P | P
  59. A L C X | P
  60. A L C T | P
  61. A L C R | R
  62. A L C D | R
  63. A L C P X | P
  64. A L C P T | P
  65. A L C P R | R
  66. A L C P D | R
  67. A L C P X T | P
  68. A L C P X R | R
  69. A L C P X D | R
  70. A L C P X T R | R
  71. A L C P X T D | R
  72. A L C P X T R D | R
  73. ----------------|--------------
  74. L | L
  75. L C | L
  76. L P | P
  77. L X | P
  78. L T | P
  79. L R | R
  80. L D | R
  81. L C P | P
  82. L C X | P
  83. L C T | P
  84. L C R | R
  85. L C D | R
  86. L C P X | P
  87. L C P T | P
  88. L C P R | R
  89. L C P D | R
  90. L C P X T | P
  91. L C P X R | R
  92. L C P X D | R
  93. L C P X T R | R
  94. L C P X T D | R
  95. L C P X T R D | R
  96. ----------------|--------------
  97. C | C
  98. C P | P
  99. C X | X
  100. C T | X
  101. C R | R
  102. C D | R
  103. C P X | P
  104. C P T | P
  105. C P R | R
  106. C P D | R
  107. C P X T | P
  108. C P X R | R
  109. C P X D | R
  110. C P X T R | R
  111. C P X T D | R
  112. C P X T R D | R
  113. ----------------|--------------
  114. P | P
  115. P X | P
  116. P T | P
  117. P R | R
  118. P D | R
  119. P X T | P
  120. P X R | R
  121. P X D | R
  122. P X T R | R
  123. P X T D | R
  124. P X T R D | R
  125. ----------------|--------------
  126. X | X
  127. X T | X
  128. X R | R
  129. X D | R
  130. X T R | R
  131. X T D | R
  132. X T R D | R
  133. ----------------|--------------
  134. T | T
  135. T R | R
  136. T D | R
  137. T R D | R
  138. ----------------|--------------
  139. R | R
  140. R D | R
  141. ----------------|--------------
  142. D | D
  143. */
  144. SET NOCOUNT ON
  145.  
  146. Declare
  147. @lStPedidoDeVenda Status,
  148. @lIdPedidoDeVendaItem Identificador,
  149. @lStPedidoDeVendaItem Status,
  150. @lQtPedida Quantidade,
  151. @lQtAtendida Quantidade,
  152.  
  153. @lStPedidoDeVendaAlterado Status,
  154. @lStPedidoDeVendaItemAlterado Status,
  155. @lStTodosPedidoDeVendaItem Varchar(6)
  156.  
  157. Declare Cur_sp_AlinharStatusPedidoDeVenda Cursor Fast_Forward Read_Only
  158. For
  159. Select
  160. PV.StPedidoDeVenda,
  161. PVI.IdPedidoDeVendaItem,
  162. PVI.StPedidoDeVendaItem,
  163. PVI.QtPedida,
  164. PVI.QtAtendida
  165. From
  166. PedidoDeVenda PV,
  167. PedidoDeVendaItem PVI
  168. Where
  169. (PV.IdPedidoDeVenda = PVI.IdPedidoDeVenda) and
  170. (PV.IdPedidoDeVenda = @pIdPedidoDeVenda)
  171.  
  172. Open Cur_sp_AlinharStatusPedidoDeVenda
  173.  
  174. Fetch Next
  175. From
  176. Cur_sp_AlinharStatusPedidoDeVenda
  177. Into
  178. @lStPedidoDeVenda,
  179. @lIdPedidoDeVendaItem,
  180. @lStPedidoDeVendaItem,
  181. @lQtPedida,
  182. @lQtAtendida
  183.  
  184. Select
  185. @lStTodosPedidoDeVendaItem = ''
  186.  
  187. While @@Fetch_Status = 0
  188. Begin
  189. Select
  190. @lQtPedida = IsNull(@lQtPedida, 0),
  191. @lQtAtendida = IsNull(@lQtAtendida, 0)
  192.  
  193. If (@lQtPedida <= @lQtAtendida) and
  194. (@lQtAtendida <> 0) and
  195. (@lStPedidoDeVendaItem not in ('R', 'D'))
  196. Select
  197. @lStPedidoDeVendaItemAlterado = 'T'
  198. Else
  199. If (@lQtPedida > @lQtAtendida) and
  200. (@lQtAtendida <> 0) and
  201. (@lStPedidoDeVendaItem = 'T')
  202. Select
  203. @lStPedidoDeVendaItemAlterado = 'X'
  204. Else
  205. If (@lQtPedida > @lQtAtendida) and
  206. (@lQtAtendida <> 0) and
  207. (@lStPedidoDeVendaItem not in ('X', 'R', 'D'))
  208. Select
  209. @lStPedidoDeVendaItemAlterado = 'P'
  210. Else
  211. If (@lQtAtendida = 0) and
  212. (@lStPedidoDeVendaItem not in ('A', 'C', 'R', 'D'))
  213. Select
  214. @lStPedidoDeVendaItemAlterado = 'L'
  215. Else
  216. Select
  217. @lStPedidoDeVendaItemAlterado = @lStPedidoDeVendaItem
  218.  
  219. If CHARINDEX(@lStPedidoDeVendaItemAlterado, @lStTodosPedidoDeVendaItem) = 0
  220. Select
  221. @lStTodosPedidoDeVendaItem = @lStTodosPedidoDeVendaItem + @lStPedidoDeVendaItemAlterado
  222.  
  223. If @lStPedidoDeVendaItem <> @lStPedidoDeVendaItemAlterado
  224. Begin
  225. Update
  226. PedidoDeVendaItem
  227. Set
  228. StPedidoDeVendaItem = @lStPedidoDeVendaItemAlterado
  229. Where
  230. (IdPedidoDeVendaItem = @lIdPedidoDeVendaItem)
  231. End
  232.  
  233. Fetch Next
  234. From
  235. Cur_sp_AlinharStatusPedidoDeVenda
  236. Into
  237. @lStPedidoDeVenda,
  238. @lIdPedidoDeVendaItem,
  239. @lStPedidoDeVendaItem,
  240. @lQtPedida,
  241. @lQtAtendida
  242. End
  243.  
  244. If LEN(@lStTodosPedidoDeVendaItem) <> 0
  245. Begin
  246. If LEN(@lStTodosPedidoDeVendaItem) = 1
  247. Select
  248. @lStPedidoDeVendaAlterado = @lStTodosPedidoDeVendaItem
  249. Else
  250. Begin
  251. If (CHARINDEX('A', @lStTodosPedidoDeVendaItem) = 0) and
  252. (CHARINDEX('L', @lStTodosPedidoDeVendaItem) = 0) and
  253. (CHARINDEX('P', @lStTodosPedidoDeVendaItem) = 0) and
  254. (CHARINDEX('R', @lStTodosPedidoDeVendaItem) = 0) and
  255. (CHARINDEX('D', @lStTodosPedidoDeVendaItem) = 0)
  256. Select
  257. @lStPedidoDeVendaAlterado = 'X'
  258. Else
  259. If (CHARINDEX('R', @lStTodosPedidoDeVendaItem) <> 0) or
  260. (CHARINDEX('D', @lStTodosPedidoDeVendaItem) <> 0)
  261. Select
  262. @lStPedidoDeVendaAlterado = 'R'
  263. Else
  264. If (CHARINDEX('P', @lStTodosPedidoDeVendaItem) <> 0) or
  265. (CHARINDEX('X', @lStTodosPedidoDeVendaItem) <> 0) or
  266. (CHARINDEX('T', @lStTodosPedidoDeVendaItem) <> 0)
  267. Select
  268. @lStPedidoDeVendaAlterado = 'P'
  269. Else
  270. If (CHARINDEX('L', @lStTodosPedidoDeVendaItem) <> 0)
  271. Select
  272. @lStPedidoDeVendaAlterado = 'L'
  273. Else
  274. Select
  275. @lStPedidoDeVendaAlterado = 'A'
  276. End
  277.  
  278. If @lStPedidoDeVenda <> @lStPedidoDeVendaAlterado
  279. Begin
  280. Update
  281. PedidoDeVenda
  282. Set
  283. StPedidoDeVenda = @lStPedidoDeVendaAlterado
  284. Where
  285. (IdPedidoDeVenda = @pIdPedidoDeVenda)
  286. End
  287. End
  288.  
  289. Close Cur_sp_AlinharStatusPedidoDeVenda
  290.  
  291. Deallocate Cur_sp_AlinharStatusPedidoDeVenda
  292.  
  293. SET NOCOUNT OFF
  294. End
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement