milardovich

TP Paradigmas - Clase Supermercado

Nov 20th, 2012
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. agregaArticulo
  2. | tmpArticulo tmpTipo tmpValida tmpOp dist |
  3.  
  4. tmpValida := true.
  5. [tmpValida] whileTrue:[
  6.     tmpTipo := (Prompter prompt: '¿El articulo necesita frío?    1-  Si    2- No' default:'') asInteger.
  7.  
  8.     (tmpTipo=1)ifTrue:[ tmpArticulo := Frio new. ].
  9.     (tmpTipo=2)ifTrue:[ tmpArticulo := Articulo new. ].
  10.     tmpArticulo carga.
  11.     colArticulo add: tmpArticulo.
  12.     tmpValida := MessageBox confirm: 'Agrega otro artículo?'.
  13. ]
  14.  
  15. agregaDistribuidor
  16. | tmpReg tmpValida tmpOp |
  17. tmpReg := Distribuidor new.
  18. tmpValida := true.
  19. [tmpValida] whileTrue:[
  20.     tmpReg carga.
  21.     colDistribuidor add: tmpReg.
  22.     tmpValida := MessageBox confirm: 'Agrega otro distribuidor?'.
  23. ]
  24.  
  25. agregaItem
  26. | tmpArt tmpCant |
  27. tmpArt := self controlaArticulo.
  28. tmpCant := (Prompter prompt: 'Ingrese cantidad: ' default:'') asFloat.
  29.    
  30. agregaUsuario
  31. | tmpReg tmpValida tmpOp |
  32. tmpReg := Usuario new.
  33. tmpReg carga.
  34. colUsuario add: tmpReg.
  35.  
  36. agregaUsuarioInicio
  37. | tmpValida |
  38. self agregaUsuario.
  39. tmpValida := MessageBox confirm: 'Agrega otro usuario?'.
  40. (tmpValida=true)
  41. ifTrue:[
  42.     self agregaUsuario.
  43. ]
  44.  
  45. agregaVenta
  46. | tmpVenta tmpZona tmpDist tmpValida tmpItem tmpArticulo |
  47. self login.
  48. tmpVenta := Venta new.
  49. tmpZona := sesion devZona.
  50. tmpDist := self buscaDistribuidor.
  51. tmpVenta carga:sesion and: tmpDist.
  52.  
  53. tmpValida := true.
  54. [tmpValida]whileTrue:[
  55.    tmpItem := Item new.
  56.    tmpArticulo := self controlaArticulo.
  57.    tmpItem carga:tmpArticulo.
  58.    tmpVenta agregaItem:tmpItem.
  59.    tmpValida := MessageBox confirm: 'Agrega otro artículo?'.
  60. ].
  61.  
  62. colVenta add: tmpVenta.
  63.  
  64. buscaDistribuidor
  65. | tmpColDistribuidor zona |
  66. zona := sesion devZona.
  67. tmpColDistribuidor:= colDistribuidor detect:[:i | i devZona = zona]
  68. ifNone:[tmpColDistribuidor := nil].
  69. ^tmpColDistribuidor.
  70.  
  71. cargaDatos
  72. "Éste método sirve para insertar datos en las colecciones de usuarios, artículos y distribuidores"
  73. self agregaDistribuidor.
  74. self agregaUsuarioInicio.
  75. self agregaArticulo.
  76.  
  77. controlaArticulo
  78. | tmpArticulo tmpColArticulo tmpValida |
  79. tmpValida := true.
  80. [tmpValida]whileTrue:[
  81.     tmpArticulo := Prompter prompt: 'Ingrese código del artículo: ' default:''.
  82.     tmpColArticulo := colArticulo detect:[:i | i devCodigo = tmpArticulo]
  83.     ifNone:[tmpColArticulo := nil].
  84.  
  85.     (tmpColArticulo=nil)
  86.     ifTrue:[MessageBox message: 'No existe ningún artículo con ese código. Por favor, intente nuevamente.']
  87.     ifFalse:[ tmpValida := false. ].
  88.  
  89.     (tmpColArticulo=nil)
  90.     ifTrue:[tmpValida := false.]
  91.  
  92. ].
  93. ^tmpColArticulo.
  94.    
  95. controlaDistribuidor
  96. | tmpDistribuidor tmpColDistribuidor tmpValida |
  97. tmpValida := true.
  98. [tmpValida]whileTrue:[
  99.     tmpDistribuidor := Prompter prompt: 'Ingrese nombre del distribuidor: ' default:''.
  100.     tmpColDistribuidor:= colDistribuidor detect:[:i | i devDistribuidor = tmpDistribuidor]
  101.     ifNone:[tmpColDistribuidor := nil].
  102.  
  103.     (tmpColDistribuidor=nil)
  104.     ifTrue:[MessageBox message: 'No existe ese distribuidor. Por favor, ingrese nuevamente.']
  105.     ifFalse:[ tmpValida := false. ].
  106.  
  107.     (tmpColDistribuidor=0)
  108.     ifTrue:[tmpValida := false.]
  109.  
  110. ].
  111. ^tmpColDistribuidor.
  112.  
  113. controlaItem
  114. | tmpArticulo tmpColVenta tmpValida |
  115. tmpValida := true.
  116. [tmpValida]whileTrue:[
  117.     tmpArticulo := Prompter prompt: 'Ingrese código del artículo: ' default:''.
  118.     tmpColVenta := colVenta detect:[:i | i devArticulo = tmpArticulo]
  119.     ifNone:[tmpColVenta := nil].
  120.  
  121.     (tmpColVenta=nil)
  122.     ifTrue:[MessageBox message: 'No existe ningún artículo con ese código. Por favor, intente nuevamente.']
  123.     ifFalse:[ tmpValida := false. ].
  124.  
  125.     (tmpColVenta=0)
  126.     ifTrue:[tmpValida := false.]
  127.  
  128. ].
  129. ^tmpColVenta.
  130.  
  131. inicio
  132. colArticulo := OrderedCollection new.
  133. colDistribuidor := OrderedCollection new.
  134. colUsuario := OrderedCollection new.
  135. colVenta := OrderedCollection new.
  136.  
  137. self cargaDatos.
  138. self menu.
  139.    
  140. listaVenta
  141. | tmpColVenta tmpDist tmpAno tmpMes tmpDia tmpCuando tmpValida tmpTotal |
  142.  
  143. tmpTotal := 0.
  144. tmpValida := true.
  145. [tmpValida] whileTrue:[
  146.     tmpDist := self controlaDistribuidor.
  147.  
  148.    tmpCuando :=  (Prompter prompt: 'Ingrese fecha' default: 'mm/dd/aaaa') asDate.
  149.  
  150.    tmpColVenta := colVenta select: [:i | (i devFecha = tmpCuando) and: [i devDistribuidor = tmpDist] ].
  151.  
  152.     (tmpColVenta=nil)
  153.     ifTrue:[
  154.         Transcript show: 'No se encontraron ventas para este distribuidor en la fecha indicada. Por favor, intente nuevamente.' printString.
  155.     ]
  156.     ifFalse:[
  157.         tmpColVenta do: [:i | Transcript cr; show: i devFecha printString; tab; show: i devCliente devNombre; tab; show: i devCliente devDomicilio; tab. i devTotal. ].
  158.     ].
  159.  
  160.     tmpValida := MessageBox confirm: '¿Realiza nueva búsqueda?'.
  161. ]
  162.  
  163. login
  164. | tmpUsuario tmpClave tmpColUsuario tmpIndex tmpNuevo |
  165.  
  166. tmpNuevo := false.
  167.  
  168. tmpUsuario := Prompter prompt: 'Ingrese su nombre de usuario: ' default: ''.
  169. tmpClave := Prompter prompt: 'Ingrese su contraseña: ' default: ''.
  170.  
  171. tmpColUsuario:= colUsuario detect:[:i | (i devUsuario = tmpUsuario) & (i devClave = tmpClave)]
  172. ifNone:[tmpColUsuario := nil].
  173.  
  174. (tmpColUsuario=nil)
  175.     ifTrue:[
  176.         MessageBox message: 'Nombre de usuario o contraseña incorrectos.'.
  177.         tmpNuevo := MessageBox confirm: 'Desea registrarse?'.
  178.         (tmpNuevo=false)
  179.         ifTrue:[
  180.             self login.
  181.         ]
  182.     ]
  183.     ifFalse:[ MessageBox message: 'Logueado correctamente'. sesion := tmpColUsuario].
  184.  
  185. (tmpNuevo=true)
  186. ifTrue:[
  187.     self agregaUsuario.
  188.     self login.
  189. ]
  190.  
  191. menu
  192. | tmpValida op |
  193. tmpValida :=true.
  194. [tmpValida] whileTrue: [op:= Prompter prompt:
  195.                           '1. Realizar una venta 2. Listar ventas 3. Salir' default:''.
  196.                         op='1' ifTrue: [self agregaVenta].
  197.                         op='2' ifTrue: [self listaVenta].
  198.                         op='3' ifTrue: [tmpValida:=false]
  199. ].
Advertisement
Add Comment
Please, Sign In to add comment