ImportLager.p 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. DEFINE VARIABLE iSf AS INTEGER NO-UNDO.
  2. DEFINE VARIABLE lFound AS LOGICAL NO-UNDO.
  3. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO INIT '1000'.
  4. DEFINE TEMP-TABLE tHoReLager LIKE HoReLager
  5. FIELD lBenutzt AS LOG
  6. INDEX tHoReLager-k1 IS PRIMARY
  7. Firma
  8. Art
  9. Lager
  10. Regal
  11. Platz
  12. Niveau
  13. Sf
  14. INDEX tHoReLager-k3
  15. Firma
  16. Art
  17. Lager
  18. Artnr
  19. Inhalt
  20. Jahr
  21. .
  22. DEFINE TEMP-TABLE tExcel
  23. FIELD cRegal AS CHARACTER /* Spalte A */
  24. FIELD cPlatz AS CHARACTER /* Spalte B */
  25. FIELD cNiveau AS CHARACTER /* Spalte C */
  26. FIELD iArtnr AS INTEGER /* Spalte D */
  27. FIELD cBez AS CHARACTER /* Spalte E */
  28. FIELD iJahr AS INTEGER /* Spalte F */
  29. FIELD AlkGehalt AS CHARACTER /* Spalte G */
  30. FIELD cGebinde AS CHARACTER /* Spalte H */
  31. FIELD iBestand AS CHARACTER /* Spalte I */
  32. FIELD cSf AS CHARACTER
  33. INDEX tExcel-k1 IS PRIMARY
  34. cRegal
  35. cPlatz
  36. cNiveau
  37. cSf
  38. .
  39. /* FOR EACH HoReLager: */
  40. /* DELETE HoReLager. */
  41. /* END. */
  42. DISABLE TRIGGERS FOR LOAD OF ArtLager.
  43. FOR EACH HoReLager NO-LOCK
  44. WHERE HoReLager.Firma = cFirma:
  45. CREATE tHoReLager.
  46. BUFFER-COPY HoReLager TO tHoReLager
  47. ASSIGN
  48. tHoReLager.lBenutzt = FALSE
  49. tHoReLager.Sf = ''
  50. tHoReLager.iStatus = 0.
  51. IF HoReLager.Artnr = 0 THEN NEXT.
  52. ASSIGN
  53. tHoReLager.iStatus = 1
  54. tHoReLager.lBenutzt = TRUE.
  55. FIND FIRST ArtLager OF HoReLager NO-ERROR.
  56. IF AVAILABLE ArtLager THEN ArtLager.Ort = ''.
  57. END.
  58. INPUT FROM 'C:\Entwicklung\TEMP\Huber\Lagerliste_20201228.csv' NO-MAP NO-CONVERT.
  59. REPEAT TRANSACTION ON STOP UNDO, LEAVE ON ERROR UNDO, NEXT:
  60. CREATE tExcel.
  61. IMPORT DELIMITER ';' tExcel.
  62. END.
  63. INPUT CLOSE.
  64. FOR EACH tExcel
  65. WHERE tExcel.cRegal <> ''
  66. AND tExcel.cNiveau <> ''
  67. AND tExcel.cPlatz <> ''
  68. AND tExcel.iArtnr > 0
  69. :
  70. lFound = FALSE.
  71. FOR EACH tHoReLager USE-INDEX tHoReLager-k3
  72. WHERE tHoReLager.Firma = cFirma
  73. AND tHoReLager.Art = 1
  74. AND tHoReLager.Lager = 0
  75. AND tHoReLager.Artnr = tExcel.iArtnr
  76. AND tHoReLager.Regal = tExcel.cRegal
  77. AND tHoReLager.Platz = tExcel.cPlatz
  78. AND tHoReLager.Niveau = tExcel.cNiveau :
  79. lFound = TRUE.
  80. LEAVE.
  81. END.
  82. IF lFound THEN
  83. DO: /* Artikel an diesem Platz bereits vorhanden */
  84. tHoReLager.lBenutzt = TRUE.
  85. NEXT.
  86. END.
  87. FIND FIRST tHoReLager USE-INDEX tHoReLager-k3
  88. WHERE tHoReLager.Firma = cFirma
  89. AND tHoReLager.Art = 1
  90. AND tHoReLager.Lager = 0
  91. AND tHoReLager.Artnr = tExcel.iArtnr NO-ERROR.
  92. IF AVAILABLE tHoReLager THEN
  93. DO: /* Artikel an einem anderen Platz vorhanden */
  94. DELETE tHoReLager.
  95. END.
  96. CREATE tHoReLager.
  97. ASSIGN
  98. tHoReLager.Firma = cFirma
  99. tHoReLager.Lager = 0
  100. tHoReLager.Art = 1
  101. tHoReLager.Regal = tExcel.cRegal
  102. tHoReLager.Platz = tExcel.cPlatz
  103. tHoReLager.Niveau = tExcel.cNiveau
  104. tHoReLager.Artnr = tExcel.iArtnr
  105. tHoReLager.Jahr = tExcel.iJahr
  106. tHoReLager.iStatus = (IF tExcel.iArtnr = 0 THEN 0 ELSE 1)
  107. tHoReLager.lBenutzt = TRUE.
  108. FIND FIRST tHoReLager
  109. WHERE tHoReLager.Firma = cFirma
  110. AND tHoReLager.Art = 1
  111. AND tHoReLager.Lager = 0
  112. AND tHoReLager.Regal = tExcel.cRegal
  113. AND tHoReLager.Platz = tExcel.cPlatz
  114. AND tHoReLager.Niveau = tExcel.cNiveau NO-ERROR.
  115. IF lFound THEN
  116. DO:
  117. IF tHoReLager.Sf = '' THEN
  118. DO:
  119. ASSIGN
  120. tHoReLager.Artnr = tExcel.iArtnr
  121. tHoReLager.Jahr = tExcel.iJahr
  122. tHoReLager.iStatus = (IF tExcel.iArtnr = 0 THEN 0 ELSE 1)
  123. tHoReLager.lBenutzt = TRUE.
  124. NEXT.
  125. END.
  126. END.
  127. FIND FIRST tHoReLager
  128. WHERE tHoReLager.Firma = cFirma
  129. AND tHoReLager.Art = 1
  130. AND tHoReLager.Lager = 0
  131. AND tHoReLager.Regal = tExcel.cRegal
  132. AND tHoReLager.Platz = tExcel.cPlatz
  133. AND tHoReLager.Niveau = tExcel.cNiveau NO-ERROR.
  134. IF NOT AVAILABLE tHoReLager THEN
  135. DO:
  136. CREATE tHoReLager.
  137. ASSIGN
  138. tHoReLager.Firma = cFirma
  139. tHoReLager.Lager = 0
  140. tHoReLager.Art = 1
  141. tHoReLager.Regal = tExcel.cRegal
  142. tHoReLager.Platz = tExcel.cPlatz
  143. tHoReLager.Niveau = tExcel.cNiveau
  144. tHoReLager.Artnr = tExcel.iArtnr
  145. tHoReLager.Jahr = tExcel.iJahr
  146. tHoReLager.iStatus = (IF tExcel.iArtnr = 0 THEN 0 ELSE 1)
  147. tHoReLager.lBenutzt = TRUE.
  148. NEXT.
  149. END.
  150. IF tHoReLager.Artnr = tExcel.iArtnr THEN NEXT.
  151. ASSIGN
  152. tHoReLager.Artnr = tExcel.iArtnr
  153. tHoReLager.Jahr = tExcel.iJahr
  154. tHoReLager.iStatus = (IF tExcel.iArtnr = 0 THEN 0 ELSE 1)
  155. tHoReLager.lBenutzt = TRUE.
  156. END.
  157. FOR EACH HoReLager
  158. WHERE HoReLager.Firma = cFirma
  159. AND HoReLager.Art = 1
  160. AND HoReLager.Lager = 0:
  161. DELETE HoReLager.
  162. END.
  163. FOR EACH tHoReLager
  164. BREAK BY tHoReLager.Regal
  165. BY tHoReLager.Platz
  166. BY tHoReLager.Niveau
  167. BY tHoReLager.Artnr:
  168. IF FIRST-OF ( tHoReLager.Niveau ) AND
  169. LAST-OF ( tHoReLager.Niveau ) THEN
  170. DO:
  171. CREATE HoReLager.
  172. BUFFER-COPY tHoReLager
  173. EXCEPT Sf HoReLager_Id
  174. TO HoReLager
  175. ASSIGN
  176. HoReLager.Sf = ''.
  177. NEXT.
  178. END.
  179. IF FIRST-OF ( tHoReLager.Niveau ) THEN iSf = 0.
  180. iSf = iSf + 1.
  181. CREATE HoReLager.
  182. BUFFER-COPY tHoReLager
  183. EXCEPT Sf HoReLager_Id
  184. TO HoReLager
  185. ASSIGN
  186. HoReLager.Sf = STRING(iSf,'99').
  187. END.
  188. FOR EACH HoReLager
  189. WHERE HoReLager.Firma = cFirma
  190. AND HoReLager.Art = 1
  191. AND HoReLager.Lager = 0:
  192. HoReLager.cSort = SUBSTITUTE('&1-&2-&3', HoReLager.Regal, HoReLager.Platz, HoReLager.Niveau).
  193. IF HoReLager.Sf <> '' THEN HoReLager.cSort = HoReLager.cSort + '-' + HoReLager.Sf.
  194. IF HoReLager.Artnr = 0 THEN NEXT.
  195. FOR EACH ArtLager
  196. WHERE ArtLager.Firma = cFirma
  197. AND ArtLager.Lager = HoReLager.Lager
  198. AND ArtLager.Artnr = HoReLager.Artnr:
  199. ArtLager.Ort = HoReLager.cSort.
  200. END.
  201. END.