g-excel-preisliste.w 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. &ANALYZE-RESUME
  3. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  4. &Scoped-define FRAME-NAME g-excel-preisliste
  5. {adecomm/appserv.i}
  6. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS g-excel-preisliste
  7. /*------------------------------------------------------------------------
  8. File:
  9. Description: from cntnrdlg.w - ADM2 SmartDialog Template
  10. Input Parameters:
  11. <none>
  12. Output Parameters:
  13. <none>
  14. Author:
  15. Created:
  16. ------------------------------------------------------------------------*/
  17. /* This .W file was created with the Progress AppBuilder. */
  18. /*----------------------------------------------------------------------*/
  19. /* Create an unnamed pool to store all the widgets created
  20. by this procedure. This is a good default which assures
  21. that this procedure's triggers and internal procedures
  22. will execute in this procedure's storage, and that proper
  23. cleanup will occur on deletion of the procedure. */
  24. CREATE WIDGET-POOL.
  25. /* *************************** Definitions ************************** */
  26. /* Parameters Definitions --- */
  27. /* Local Variable Definitions --- */
  28. DEF VAR VDateiName AS CHAR NO-UNDO.
  29. DEF VAR VxlsDatei AS CHAR NO-UNDO.
  30. DEF VAR VcsvDatei AS CHAR NO-UNDO.
  31. DEF VAR VWert AS CHAR NO-UNDO.
  32. DEF VAR ok AS LOG NO-UNDO.
  33. DEF VAR VPrGrp AS INT NO-UNDO.
  34. DEF VAR cArtnr_1 AS CHAR NO-UNDO.
  35. DEF VAR cArtnr_2 AS CHAR NO-UNDO.
  36. DEF VAR cInhalt_1 AS CHAR NO-UNDO.
  37. DEF VAR cInhalt_2 AS CHAR NO-UNDO.
  38. DEF VAR cJahr_1 AS CHAR NO-UNDO.
  39. DEF VAR cJahr_2 AS CHAR NO-UNDO.
  40. DEF VAR cPreis AS CHAR NO-UNDO.
  41. DEF VAR excelAppl AS COM-HANDLE NO-UNDO.
  42. DEF TEMP-TABLE TExcel FIELD Zeile AS INT
  43. FIELD Artnr AS INT
  44. FIELD Inhalt AS INT
  45. FIELD Jahr AS INT
  46. FIELD Preis AS DEC DECIMALS 4
  47. FIELD aArtnr AS INT
  48. FIELD aInhalt AS INT
  49. FIELD aJahr AS INT
  50. INDEX TExcel-k1 IS PRIMARY
  51. Artnr
  52. Inhalt
  53. Jahr.
  54. DEF TEMP-TABLE tDaten_csv NO-UNDO
  55. FIELD Feld AS CHAR EXTENT 20
  56. FIELD Zeile AS INT.
  57. DEF STREAM In_Stream.
  58. { incl/dlgdefinition.i }
  59. { src/adm2/widgetprto.i }
  60. /* _UIB-CODE-BLOCK-END */
  61. &ANALYZE-RESUME
  62. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  63. /* ******************** Preprocessor Definitions ******************** */
  64. &Scoped-define PROCEDURE-TYPE SmartDialog
  65. &Scoped-define DB-AWARE no
  66. &Scoped-define ADM-CONTAINER DIALOG-BOX
  67. &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  68. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  69. &Scoped-define FRAME-NAME g-excel-preisliste
  70. /* Standard List Definitions */
  71. &Scoped-Define ENABLED-OBJECTS RECT-2 Btn_Datei F_ExcelDatei CB_Artnr_1 ~
  72. CB_Artnr_2 CB_Inhalt_1 CB_Inhalt_2 CB_Jahr_1 CB_Jahr_2 CB_Preis ~
  73. CB_Preisliste T_Netto F_Datum Btn_OK Btn_Cancel
  74. &Scoped-Define DISPLAYED-OBJECTS F_ExcelDatei CB_Artnr_1 CB_Artnr_2 ~
  75. CB_Inhalt_1 CB_Inhalt_2 CB_Jahr_1 CB_Jahr_2 CB_Preis CB_Preisliste T_Netto ~
  76. F_Datum
  77. /* Custom List Definitions */
  78. /* List-1,List-2,List-3,List-4,List-5,List-6 */
  79. &Scoped-define List-6 F_ExcelDatei CB_Preisliste T_Netto F_Datum
  80. /* _UIB-PREPROCESSOR-BLOCK-END */
  81. &ANALYZE-RESUME
  82. /* *********************** Control Definitions ********************** */
  83. /* Define a dialog box */
  84. /* Definitions of the field level widgets */
  85. DEFINE BUTTON Btn_Cancel AUTO-END-KEY
  86. LABEL "abbrechen"
  87. SIZE 15 BY 1.
  88. DEFINE BUTTON Btn_Datei
  89. LABEL "ExcelDatei"
  90. SIZE 12 BY 1.
  91. DEFINE BUTTON Btn_OK AUTO-GO
  92. LABEL "Aktualisieren"
  93. SIZE 15 BY 1.
  94. DEFINE VARIABLE CB_Artnr_1 AS CHARACTER FORMAT "X(256)":U
  95. LABEL "Spalte Artnr DB"
  96. VIEW-AS COMBO-BOX INNER-LINES 5
  97. LIST-ITEMS "A"
  98. DROP-DOWN-LIST
  99. SIZE 8 BY 1 TOOLTIP "Artikelnummer für Datenbank" NO-UNDO.
  100. DEFINE VARIABLE CB_Artnr_2 AS CHARACTER FORMAT "X(256)":U
  101. LABEL "Spalte Artnr Preisliste"
  102. VIEW-AS COMBO-BOX INNER-LINES 5
  103. LIST-ITEMS "A"
  104. DROP-DOWN-LIST
  105. SIZE 8 BY 1 TOOLTIP "Artikelnummer für Datenbank" NO-UNDO.
  106. DEFINE VARIABLE CB_Inhalt_1 AS CHARACTER FORMAT "X(256)":U
  107. LABEL "Spalte Inhalt DB"
  108. VIEW-AS COMBO-BOX INNER-LINES 5
  109. LIST-ITEMS "A"
  110. DROP-DOWN-LIST
  111. SIZE 8 BY 1 TOOLTIP "Artikelnummer für Datenbank" NO-UNDO.
  112. DEFINE VARIABLE CB_Inhalt_2 AS CHARACTER FORMAT "X(256)":U
  113. LABEL "Spalte Inhalt Preisliste"
  114. VIEW-AS COMBO-BOX INNER-LINES 5
  115. LIST-ITEMS "A"
  116. DROP-DOWN-LIST
  117. SIZE 8 BY 1 TOOLTIP "Artikelnummer für Datenbank" NO-UNDO.
  118. DEFINE VARIABLE CB_Jahr_1 AS CHARACTER FORMAT "X(256)":U
  119. LABEL "Spalte Jahr DB"
  120. VIEW-AS COMBO-BOX INNER-LINES 5
  121. LIST-ITEMS "A"
  122. DROP-DOWN-LIST
  123. SIZE 8 BY 1 TOOLTIP "Artikelnummer für Datenbank" NO-UNDO.
  124. DEFINE VARIABLE CB_Jahr_2 AS CHARACTER FORMAT "X(256)":U
  125. LABEL "Spalte Jahr Preisliste"
  126. VIEW-AS COMBO-BOX INNER-LINES 5
  127. LIST-ITEMS "A"
  128. DROP-DOWN-LIST
  129. SIZE 8 BY 1 TOOLTIP "Artikelnummer für Datenbank" NO-UNDO.
  130. DEFINE VARIABLE CB_Preis AS CHARACTER FORMAT "X(256)":U
  131. LABEL "Spalte Preis Preisliste"
  132. VIEW-AS COMBO-BOX INNER-LINES 5
  133. LIST-ITEMS "A"
  134. DROP-DOWN-LIST
  135. SIZE 8 BY 1 TOOLTIP "Artikelnummer für Datenbank" NO-UNDO.
  136. DEFINE VARIABLE CB_Preisliste AS CHARACTER FORMAT "X(256)":U
  137. LABEL "Preisgruppe"
  138. VIEW-AS COMBO-BOX INNER-LINES 5
  139. LIST-ITEM-PAIRS "Item 1","Item 1"
  140. DROP-DOWN-LIST
  141. SIZE 32 BY 1
  142. BGCOLOR 15 NO-UNDO.
  143. DEFINE VARIABLE F_Datum AS DATE FORMAT "99.99.9999":U
  144. LABEL "Konditionsdatum"
  145. VIEW-AS FILL-IN NATIVE
  146. SIZE 16 BY 1
  147. BGCOLOR 15 NO-UNDO.
  148. DEFINE VARIABLE F_ExcelDatei AS CHARACTER FORMAT "X(256)":U
  149. VIEW-AS FILL-IN NATIVE
  150. SIZE 61 BY 1
  151. BGCOLOR 15 NO-UNDO.
  152. DEFINE RECTANGLE RECT-2
  153. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  154. SIZE 80 BY 12.86.
  155. DEFINE VARIABLE T_Netto AS LOGICAL INITIAL yes
  156. LABEL "exkl. MWSt"
  157. VIEW-AS TOGGLE-BOX
  158. SIZE 13.8 BY 1 NO-UNDO.
  159. /* ************************ Frame Definitions *********************** */
  160. DEFINE FRAME g-excel-preisliste
  161. Btn_Datei AT ROW 2 COL 5 WIDGET-ID 4
  162. F_ExcelDatei AT ROW 2 COL 16 COLON-ALIGNED NO-LABEL WIDGET-ID 6
  163. CB_Artnr_1 AT ROW 3.52 COL 23 COLON-ALIGNED WIDGET-ID 8
  164. CB_Artnr_2 AT ROW 3.52 COL 69 COLON-ALIGNED WIDGET-ID 10
  165. CB_Inhalt_1 AT ROW 4.52 COL 23 COLON-ALIGNED WIDGET-ID 12
  166. CB_Inhalt_2 AT ROW 4.52 COL 69 COLON-ALIGNED WIDGET-ID 14
  167. CB_Jahr_1 AT ROW 5.52 COL 23 COLON-ALIGNED WIDGET-ID 16
  168. CB_Jahr_2 AT ROW 5.52 COL 69 COLON-ALIGNED WIDGET-ID 18
  169. CB_Preis AT ROW 6.52 COL 69 COLON-ALIGNED WIDGET-ID 26
  170. CB_Preisliste AT ROW 8.52 COL 23 COLON-ALIGNED WIDGET-ID 20
  171. T_Netto AT ROW 8.52 COL 59 WIDGET-ID 24
  172. F_Datum AT ROW 9.52 COL 23 COLON-ALIGNED WIDGET-ID 22
  173. Btn_OK AT ROW 15 COL 12.2
  174. Btn_Cancel AT ROW 15 COL 53
  175. RECT-2 AT ROW 1.48 COL 3 WIDGET-ID 2
  176. SPACE(1.99) SKIP(2.36)
  177. WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER
  178. SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE
  179. TITLE "EXCEL-Preisliste"
  180. CANCEL-BUTTON Btn_Cancel WIDGET-ID 100.
  181. /* *********************** Procedure Settings ************************ */
  182. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  183. /* Settings for THIS-PROCEDURE
  184. Type: SmartDialog
  185. Allow: Basic,Browse,DB-Fields,Query,Smart
  186. Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  187. Design Page: 1
  188. Other Settings: COMPILE APPSERVER
  189. */
  190. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  191. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB g-excel-preisliste
  192. /* ************************* Included-Libraries *********************** */
  193. {src/adm2/containr.i}
  194. /* _UIB-CODE-BLOCK-END */
  195. &ANALYZE-RESUME
  196. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  197. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  198. /* SETTINGS FOR DIALOG-BOX g-excel-preisliste
  199. FRAME-NAME */
  200. ASSIGN
  201. FRAME g-excel-preisliste:SCROLLABLE = FALSE
  202. FRAME g-excel-preisliste:HIDDEN = TRUE.
  203. /* SETTINGS FOR COMBO-BOX CB_Preisliste IN FRAME g-excel-preisliste
  204. 6 */
  205. /* SETTINGS FOR FILL-IN F_Datum IN FRAME g-excel-preisliste
  206. 6 */
  207. /* SETTINGS FOR FILL-IN F_ExcelDatei IN FRAME g-excel-preisliste
  208. 6 */
  209. /* SETTINGS FOR TOGGLE-BOX T_Netto IN FRAME g-excel-preisliste
  210. 6 */
  211. /* _RUN-TIME-ATTRIBUTES-END */
  212. &ANALYZE-RESUME
  213. /* Setting information for Queries and Browse Widgets fields */
  214. &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX g-excel-preisliste
  215. /* Query rebuild information for DIALOG-BOX g-excel-preisliste
  216. _Options = "SHARE-LOCK"
  217. _Query is NOT OPENED
  218. */ /* DIALOG-BOX g-excel-preisliste */
  219. &ANALYZE-RESUME
  220. /* ************************ Control Triggers ************************ */
  221. &Scoped-define SELF-NAME g-excel-preisliste
  222. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL g-excel-preisliste g-excel-preisliste
  223. ON END-ERROR OF FRAME g-excel-preisliste /* EXCEL-Preisliste */
  224. DO:
  225. RUN ENDE.
  226. RETURN NO-APPLY.
  227. END.
  228. /* _UIB-CODE-BLOCK-END */
  229. &ANALYZE-RESUME
  230. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL g-excel-preisliste g-excel-preisliste
  231. ON WINDOW-CLOSE OF FRAME g-excel-preisliste /* EXCEL-Preisliste */
  232. DO:
  233. RUN ENDE.
  234. RETURN NO-APPLY.
  235. END.
  236. /* _UIB-CODE-BLOCK-END */
  237. &ANALYZE-RESUME
  238. &Scoped-define SELF-NAME Btn_Cancel
  239. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Cancel g-excel-preisliste
  240. ON CHOOSE OF Btn_Cancel IN FRAME g-excel-preisliste /* abbrechen */
  241. DO:
  242. RUN ENDE.
  243. RETURN NO-APPLY.
  244. END.
  245. /* _UIB-CODE-BLOCK-END */
  246. &ANALYZE-RESUME
  247. &Scoped-define SELF-NAME Btn_Datei
  248. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Datei g-excel-preisliste
  249. ON CHOOSE OF Btn_Datei IN FRAME g-excel-preisliste /* ExcelDatei */
  250. DO:
  251. RUN DATEIEINGABE.
  252. END.
  253. /* _UIB-CODE-BLOCK-END */
  254. &ANALYZE-RESUME
  255. &Scoped-define SELF-NAME Btn_OK
  256. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK g-excel-preisliste
  257. ON CHOOSE OF Btn_OK IN FRAME g-excel-preisliste /* Aktualisieren */
  258. DO:
  259. btnOK = TRUE.
  260. DO WITH FRAME {&FRAME-NAME}:
  261. DISABLE Btn_Ok
  262. Btn_Cancel.
  263. ASSIGN {&list-6}.
  264. RUN EINGABETEST.
  265. DISPLAY {&List-6}.
  266. DO WHILE TRUE:
  267. IF RETURN-VALUE = '' THEN LEAVE.
  268. ENABLE Btn_Ok
  269. Btn_Cancel.
  270. RETURN NO-APPLY.
  271. END.
  272. RUN AKTUALISIEREN.
  273. END.
  274. RUN ENDE.
  275. RETURN NO-APPLY.
  276. END.
  277. /* _UIB-CODE-BLOCK-END */
  278. &ANALYZE-RESUME
  279. &Scoped-define SELF-NAME CB_Preisliste
  280. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Preisliste g-excel-preisliste
  281. ON RETURN OF CB_Preisliste IN FRAME g-excel-preisliste /* Preisgruppe */
  282. DO:
  283. APPLY 'TAB' TO SELF.
  284. RETURN NO-APPLY.
  285. END.
  286. /* _UIB-CODE-BLOCK-END */
  287. &ANALYZE-RESUME
  288. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL CB_Preisliste g-excel-preisliste
  289. ON VALUE-CHANGED OF CB_Preisliste IN FRAME g-excel-preisliste /* Preisgruppe */
  290. DO:
  291. DEF VAR iPrgrp AS INT NO-UNDO.
  292. iPrgrp = INTEGER(SELF:SCREEN-VALUE).
  293. FIND Tabel USE-INDEX Tabel-k2 NO-LOCK
  294. WHERE Tabel.Firma = Firma
  295. AND Tabel.RecArt = 'PREGRP'
  296. AND Tabel.CodeI = iPrgrp
  297. AND Tabel.CodeC = ''
  298. AND Tabel.SPrcd = 1 NO-ERROR.
  299. IF Tabel.Int_1 = 0 THEN T_Netto:SCREEN-VALUE = STRING(TRUE).
  300. ELSE T_Netto:SCREEN-VALUE = STRING(FALSE).
  301. END.
  302. /* _UIB-CODE-BLOCK-END */
  303. &ANALYZE-RESUME
  304. &Scoped-define SELF-NAME F_Datum
  305. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_Datum g-excel-preisliste
  306. ON RETURN OF F_Datum IN FRAME g-excel-preisliste /* Konditionsdatum */
  307. DO:
  308. APPLY 'TAB' TO SELF.
  309. RETURN NO-APPLY.
  310. END.
  311. /* _UIB-CODE-BLOCK-END */
  312. &ANALYZE-RESUME
  313. &Scoped-define SELF-NAME F_ExcelDatei
  314. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F_ExcelDatei g-excel-preisliste
  315. ON RETURN OF F_ExcelDatei IN FRAME g-excel-preisliste
  316. DO:
  317. APPLY 'TAB' TO SELF.
  318. RETURN NO-APPLY.
  319. END.
  320. /* _UIB-CODE-BLOCK-END */
  321. &ANALYZE-RESUME
  322. &Scoped-define SELF-NAME T_Netto
  323. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL T_Netto g-excel-preisliste
  324. ON RETURN OF T_Netto IN FRAME g-excel-preisliste /* exkl. MWSt */
  325. DO:
  326. APPLY 'TAB' TO SELF.
  327. RETURN NO-APPLY.
  328. END.
  329. /* _UIB-CODE-BLOCK-END */
  330. &ANALYZE-RESUME
  331. &UNDEFINE SELF-NAME
  332. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK g-excel-preisliste
  333. /* *************************** Main Block *************************** */
  334. { incl/dlgmainblock.i }
  335. ON 'RETURN':U OF CB_Artnr_1 , CB_Artnr_2 ,
  336. CB_Inhalt_1, CB_Inhalt_2,
  337. CB_Jahr_1 , CB_Jahr_2 ,
  338. CB_Preis , CB_Preisliste IN FRAME {&FRAME-NAME}
  339. DO:
  340. APPLY 'TAB' TO SELF.
  341. RETURN NO-APPLY.
  342. END.
  343. {src/adm2/dialogmn.i}
  344. /* _UIB-CODE-BLOCK-END */
  345. &ANALYZE-RESUME
  346. /* ********************** Internal Procedures *********************** */
  347. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects g-excel-preisliste _ADM-CREATE-OBJECTS
  348. PROCEDURE adm-create-objects :
  349. /*------------------------------------------------------------------------------
  350. Purpose: Create handles for all SmartObjects used in this procedure.
  351. After SmartObjects are initialized, then SmartLinks are added.
  352. Parameters: <none>
  353. ------------------------------------------------------------------------------*/
  354. END PROCEDURE.
  355. /* _UIB-CODE-BLOCK-END */
  356. &ANALYZE-RESUME
  357. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AKTUALISIEREN g-excel-preisliste
  358. PROCEDURE AKTUALISIEREN :
  359. /*------------------------------------------------------------------------------
  360. Purpose:
  361. Parameters: <none>
  362. Notes:
  363. ------------------------------------------------------------------------------*/
  364. DEF VAR fAlt AS LOG NO-UNDO.
  365. DEF VAR iFehler AS INT NO-UNDO.
  366. DEF VAR iAnzahl AS INT NO-UNDO.
  367. DEF VAR cWort AS CHAR NO-UNDO.
  368. DEF VAR iRecid AS RECID NO-UNDO.
  369. DEF VAR ix AS INT NO-UNDO.
  370. DEF VAR i1 AS INT NO-UNDO.
  371. DEF VAR sArtnr AS INT NO-UNDO.
  372. DEF VAR sInhalt AS INT NO-UNDO.
  373. DEF VAR sJahr AS INT NO-UNDO.
  374. DEF VAR cAltNummer AS CHAR FORMAT "x(14)" NO-UNDO.
  375. DO WHILE TRUE:
  376. CREATE "Excel.Application" excelAppl CONNECT NO-ERROR.
  377. IF VALID-HANDLE(excelAppl) THEN LEAVE.
  378. CREATE "Excel.Application" excelAppl NO-ERROR.
  379. LEAVE.
  380. END.
  381. IF NOT VALID-HANDLE(excelAppl) THEN RETURN.
  382. VxlsDatei = VDateiName.
  383. ix = R-INDEX(VxlsDatei, '.').
  384. IF ix = 0 THEN VcsvDatei = VxlsDatei + '.csv'.
  385. ELSE VcsvDatei = SUBSTRING(VxlsDatei,01,ix - 1) + '.csv'.
  386. IF SEARCH(VcsvDatei) <> ? THEN OS-DELETE VALUE(VcsvDatei).
  387. excelAppl:Visible = TRUE.
  388. excelAppl:Workbooks:Open(VxlsDatei, 0, TRUE , 4, "", "", TRUE , , ";", ,).
  389. excelAppl:ActiveWorkbook:SaveAs (VcsvDatei, 6, "", "", FALSE, FALSE, FALSE ).
  390. excelAppl:ActiveWorkbook:Close ( FALSE, VcsvDatei ).
  391. EMPTY TEMP-TABLE TExcel.
  392. EMPTY TEMP-TABLE tDaten_csv.
  393. DEF VAR VNr AS INT NO-UNDO.
  394. DEF VAR VZelle AS CHAR NO-UNDO.
  395. DEF VAR VZeile AS CHAR NO-UNDO.
  396. DEF VAR VArtnr AS INT NO-UNDO.
  397. DEF VAR VInhalt AS INT NO-UNDO.
  398. DEF VAR VJahr AS INT NO-UNDO.
  399. excelAppl:Workbooks:Open(VxlsDatei, 0, FALSE, 4, "", "", TRUE, , ";", ,).
  400. VNr = 0.
  401. DO WHILE VNr < 11:
  402. VNr = VNr + 1.
  403. VZelle = 'A' + STRING(VNr).
  404. excelAppl:Range(VZelle):Select.
  405. IF excelAppl:Selection:Value <> ? THEN LEAVE.
  406. VZelle = 'B' + STRING(VNr).
  407. excelAppl:Range(VZelle):Select.
  408. IF excelAppl:Selection:Value <> ? THEN LEAVE.
  409. CREATE TExcel.
  410. ASSIGN TExcel.Zeile = VNr.
  411. END.
  412. INPUT STREAM In_Stream FROM VALUE(VcsvDatei) NO-ECHO NO-MAP.
  413. ix = 0.
  414. i1 = 0.
  415. REPEAT ON STOP UNDO, LEAVE:
  416. ix = ix + 1.
  417. CREATE tDaten_csv.
  418. IMPORT STREAM In_Stream DELIMITER ';' tDaten_csv EXCEPT tDaten_csv.Zeile.
  419. ASSIGN tDaten_csv.Zeile = ix.
  420. END.
  421. INPUT STREAM In_Stream CLOSE.
  422. DO WITH FRAME {&FRAME-NAME}:
  423. sArtnr = ASC(cArtnr_1 ) - 64.
  424. sInhalt = ASC(cInhalt_1) - 64.
  425. sJahr = ASC(cJahr_1 ) - 64.
  426. END.
  427. FOR EACH tDaten_csv WHERE tDaten_csv.Feld[sArtnr] <> ''
  428. BY tDaten_csv.Zeile:
  429. VArtnr = INTEGER(tDaten_csv.Feld[sArtnr]) NO-ERROR.
  430. IF ERROR-STATUS:ERROR THEN NEXT.
  431. IF VArtnr = 0 THEN NEXT.
  432. VInhalt = INTEGER(tDaten_csv.Feld[sInhalt]) NO-ERROR.
  433. VJahr = INTEGER(tDaten_csv.Feld[sJahr] ) NO-ERROR.
  434. CREATE TExcel.
  435. ASSIGN TExcel.Zeile = tDaten_csv.Zeile
  436. TExcel.Artnr = VArtnr
  437. TExcel.Inhalt = VInhalt
  438. TExcel.Jahr = VJahr
  439. TExcel.aArtnr = 0.
  440. END.
  441. iFehler = 0.
  442. iAnzahl = 0.
  443. FOR EACH TExcel WHERE TExcel.Artnr <> 0:
  444. iAnzahl = iAnzahl + 1.
  445. FIND Artst USE-INDEX Artst-k1
  446. WHERE Artst.Firma = Firma
  447. AND Artst.Artnr = TExcel.Artnr
  448. AND Artst.Inhalt = TExcel.Inhalt
  449. AND Artst.Jahr = TExcel.Jahr NO-LOCK NO-ERROR.
  450. IF AVAILABLE Artst THEN NEXT.
  451. iFehler = iFehler + 1.
  452. IF iFehler >= 20 THEN LEAVE.
  453. END.
  454. IF iFehler > (iAnzahl / 2) THEN DO:
  455. FOR EACH TExcel WHERE TExcel.Artnr <> 0:
  456. cAltNummer = STRING(TExcel.Artnr ,'999999')
  457. + STRING(TExcel.Inhalt,'9999')
  458. + STRING(TExcel.Jahr ,'9999').
  459. FIND FIRST Artst NO-LOCK USE-INDEX Artst-FremdNr
  460. WHERE Artst.Firma = Firma
  461. AND Artst.FremdNr = cAltNummer NO-ERROR.
  462. IF NOT AVAILABLE Artst THEN DO:
  463. ASSIGN tExcel.aArtnr = 999999
  464. tExcel.Preis = 9999.99.
  465. NEXT.
  466. END.
  467. ASSIGN TExcel.aArtnr = TExcel.Artnr
  468. TExcel.aInhalt = TExcel.Inhalt
  469. TExcel.aJahr = TExcel.Jahr
  470. TExcel.Artnr = Artst.Artnr
  471. TExcel.Inhalt = Artst.Inhalt
  472. TExcel.Jahr = Artst.Jahr.
  473. END.
  474. END.
  475. FOR EACH TExcel
  476. WHERE TExcel.Artnr <> 0
  477. AND TExcel.aArtnr <> 999999.
  478. FIND Artst USE-INDEX Artst-k1
  479. WHERE Artst.Firma = Firma
  480. AND Artst.Artnr = TExcel.Artnr
  481. AND Artst.Inhalt = TExcel.Inhalt
  482. AND Artst.Jahr = TExcel.Jahr NO-LOCK NO-ERROR.
  483. IF NOT AVAILABLE Artst THEN DO:
  484. TExcel.Preis = 9999.99.
  485. NEXT.
  486. END.
  487. FIND LAST ArtPreis USE-INDEX ArtPreis-k1
  488. WHERE ArtPreis.Firma = Firma
  489. AND ArtPreis.Artnr = Artst.Artnr
  490. AND ArtPreis.Inhalt = Artst.Inhalt
  491. AND ArtPreis.Jahr = Artst.Jahr
  492. AND ArtPreis.Preis_Grp = VPrGrp
  493. AND ArtPreis.Aktion = FALSE
  494. AND ArtPreis.Ab_Datum <= F_Datum NO-LOCK NO-ERROR.
  495. IF NOT AVAILABLE ArtPreis THEN DO:
  496. FIND LAST ArtPreis USE-INDEX ArtPreis-k1
  497. WHERE ArtPreis.Firma = Firma
  498. AND ArtPreis.Artnr = Artst.Artnr
  499. AND ArtPreis.Inhalt = Artst.Inhalt
  500. AND ArtPreis.Jahr = Artst.Jahr
  501. AND ArtPreis.Preis_Grp = 0
  502. AND ArtPreis.Aktion = FALSE
  503. AND ArtPreis.Ab_Datum <= F_Datum NO-LOCK NO-ERROR.
  504. END.
  505. IF NOT AVAILABLE ArtPreis THEN DO:
  506. TExcel.Preis = 9999.99.
  507. NEXT.
  508. END.
  509. IF T_Netto THEN TExcel.Preis = ArtPreis.VK_Netto.
  510. ELSE TExcel.Preis = ArtPreis.VK_Brutto.
  511. END.
  512. FOR EACH TExcel WHERE TExcel.Artnr <> 0
  513. BY TExcel.Zeile:
  514. VZelle = CB_Preis:SCREEN-VALUE + STRING(TExcel.Zeile).
  515. excelAppl:Range(VZelle):Select.
  516. excelAppl:Selection:Value = TRIM(STRING(TExcel.Preis,'>>>>>9.9999')).
  517. IF TExcel.aArtnr = 0 THEN NEXT.
  518. IF TExcel.aArtnr = 999999 THEN DO:
  519. VZelle = 'A' + STRING(TExcel.Zeile) + ':C' + STRING(TExcel.Zeile).
  520. excelAppl:Range(VZelle):Select.
  521. excelAppl:Selection:Interior:Pattern = 1.
  522. excelAppl:Selection:Interior:Color = 255.
  523. NEXT.
  524. END.
  525. VZelle = cArtnr_1 + STRING(TExcel.Zeile).
  526. excelAppl:Range(VZelle):Select.
  527. excelAppl:Selection:Value = TRIM(STRING(TExcel.Artnr ,'999999')).
  528. VZelle = cInhalt_1 + STRING(TExcel.Zeile).
  529. excelAppl:Range(VZelle):Select.
  530. excelAppl:Selection:Value = TRIM(STRING(TExcel.Inhalt,'9999')).
  531. VZelle = cJahr_1 + STRING(TExcel.Zeile).
  532. excelAppl:Range(VZelle):Select.
  533. excelAppl:Selection:Value = TRIM(STRING(TExcel.Jahr ,'9999')).
  534. IF cArtnr_2 <> '' THEN DO:
  535. VZelle = cArtnr_2 + STRING(TExcel.Zeile).
  536. excelAppl:Range(VZelle):Select.
  537. excelAppl:Selection:Value = TRIM(STRING(TExcel.Artnr ,'999999')).
  538. END.
  539. IF cInhalt_2 <> '' THEN DO:
  540. VZelle = cInhalt_2 + STRING(TExcel.Zeile).
  541. excelAppl:Range(VZelle):Select.
  542. excelAppl:Selection:Value = TRIM(STRING(TExcel.Inhalt,'9999')).
  543. END.
  544. IF cJahr_2 <> '' THEN DO:
  545. VZelle = cJahr_2 + STRING(TExcel.Zeile).
  546. excelAppl:Range(VZelle):Select.
  547. excelAppl:Selection:Value = TRIM(STRING(TExcel.Jahr,'9999')).
  548. END.
  549. END.
  550. RELEASE OBJECT excelAppl.
  551. END PROCEDURE.
  552. /* _UIB-CODE-BLOCK-END */
  553. &ANALYZE-RESUME
  554. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DATEIEINGABE g-excel-preisliste
  555. PROCEDURE DATEIEINGABE :
  556. /*------------------------------------------------------------------------------
  557. Purpose:
  558. Parameters: <none>
  559. Notes:
  560. ------------------------------------------------------------------------------*/
  561. DEF VAR OKpressed AS LOG NO-UNDO.
  562. DO WITH FRAME {&FRAME-NAME}:
  563. ASSIGN F_ExcelDatei.
  564. VDateiName = F_ExcelDatei.
  565. SYSTEM-DIALOG GET-FILE VDateiName
  566. TITLE 'Oeffnen der Preisliste'
  567. FILTERS 'Excel-Dateien (*.xls, *.xlsx)' '*.xls,*.xlsx',
  568. 'Alle Dateien (*.*) ' '*.*'
  569. MUST-EXIST
  570. USE-FILENAME
  571. UPDATE OKpressed.
  572. IF OKPressed = TRUE THEN F_ExcelDatei = VDateiName.
  573. DISPLAY F_ExcelDatei.
  574. END.
  575. END PROCEDURE.
  576. /* _UIB-CODE-BLOCK-END */
  577. &ANALYZE-RESUME
  578. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI g-excel-preisliste _DEFAULT-DISABLE
  579. PROCEDURE disable_UI :
  580. /*------------------------------------------------------------------------------
  581. Purpose: DISABLE the User Interface
  582. Parameters: <none>
  583. Notes: Here we clean-up the user-interface by deleting
  584. dynamic widgets we have created and/or hide
  585. frames. This procedure is usually called when
  586. we are ready to "clean-up" after running.
  587. ------------------------------------------------------------------------------*/
  588. /* Hide all frames. */
  589. HIDE FRAME g-excel-preisliste.
  590. END PROCEDURE.
  591. /* _UIB-CODE-BLOCK-END */
  592. &ANALYZE-RESUME
  593. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE EINGABETEST g-excel-preisliste
  594. PROCEDURE EINGABETEST :
  595. /*------------------------------------------------------------------------------
  596. Purpose:
  597. Parameters: <none>
  598. Notes:
  599. ------------------------------------------------------------------------------*/
  600. DO WITH FRAME {&FRAME-NAME}:
  601. VDateiName = SEARCH(F_ExcelDatei).
  602. IF VDateiName = ? THEN RETURN 'ERROR'.
  603. ASSIGN cArtnr_1 = CB_Artnr_1 :SCREEN-VALUE
  604. cArtnr_2 = CB_Artnr_2 :SCREEN-VALUE
  605. cInhalt_1 = CB_Inhalt_1:SCREEN-VALUE
  606. cInhalt_2 = CB_Inhalt_2:SCREEN-VALUE
  607. cJahr_1 = CB_Jahr_1 :SCREEN-VALUE
  608. cJahr_2 = CB_Jahr_2 :SCREEN-VALUE
  609. cPreis = CB_Preis :SCREEN-VALUE.
  610. IF cArtnr_1 = ? THEN cArtnr_1 = ''.
  611. IF cArtnr_2 = ? THEN cArtnr_2 = ''.
  612. IF cInhalt_1 = ? THEN cInhalt_1 = ''.
  613. IF cInhalt_2 = ? THEN cInhalt_2 = ''.
  614. IF cJahr_1 = ? THEN cJahr_1 = ''.
  615. IF cJahr_2 = ? THEN cJahr_2 = ''.
  616. IF cPreis = ? THEN cPreis = ''.
  617. IF cPreis = '' THEN RETURN 'ERROR'.
  618. PUT-KEY-VALUE SECTION 'Preisliste'
  619. KEY 'DateiName'
  620. VALUE VDateiName.
  621. PUT-KEY-VALUE SECTION 'Preisliste'
  622. KEY 'SpalteArtnrDB'
  623. VALUE cArtnr_1.
  624. PUT-KEY-VALUE SECTION 'Preisliste'
  625. KEY 'SpalteInhaltDB'
  626. VALUE cInhalt_1.
  627. PUT-KEY-VALUE SECTION 'Preisliste'
  628. KEY 'SpalteJahrDB'
  629. VALUE cJahr_1.
  630. PUT-KEY-VALUE SECTION 'Preisliste'
  631. KEY 'SpalteArtnrPL'
  632. VALUE cArtnr_2.
  633. PUT-KEY-VALUE SECTION 'Preisliste'
  634. KEY 'SpalteInhaltPL'
  635. VALUE cInhalt_2.
  636. PUT-KEY-VALUE SECTION 'Preisliste'
  637. KEY 'SpalteJahrPL'
  638. VALUE cJahr_2.
  639. PUT-KEY-VALUE SECTION 'Preisliste'
  640. KEY 'SpaltePreis'
  641. VALUE CB_Preis:SCREEN-VALUE.
  642. PUT-KEY-VALUE SECTION 'Preisliste'
  643. KEY 'Netto'
  644. VALUE T_Netto:SCREEN-VALUE.
  645. IF F_Datum = ? THEN F_Datum = TODAY.
  646. VPrGrp = INTEGER(CB_Preisliste:SCREEN-VALUE).
  647. RETURN ''.
  648. END.
  649. END PROCEDURE.
  650. /* _UIB-CODE-BLOCK-END */
  651. &ANALYZE-RESUME
  652. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject g-excel-preisliste
  653. PROCEDURE enableObject :
  654. /*------------------------------------------------------------------------------
  655. Purpose: Super Override
  656. Parameters:
  657. Notes:
  658. ------------------------------------------------------------------------------*/
  659. { incl/dlgenableobject.i }
  660. END PROCEDURE.
  661. /* _UIB-CODE-BLOCK-END */
  662. &ANALYZE-RESUME
  663. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI g-excel-preisliste _DEFAULT-ENABLE
  664. PROCEDURE enable_UI :
  665. /*------------------------------------------------------------------------------
  666. Purpose: ENABLE the User Interface
  667. Parameters: <none>
  668. Notes: Here we display/view/enable the widgets in the
  669. user-interface. In addition, OPEN all queries
  670. associated with each FRAME and BROWSE.
  671. These statements here are based on the "Other
  672. Settings" section of the widget Property Sheets.
  673. ------------------------------------------------------------------------------*/
  674. DISPLAY F_ExcelDatei CB_Artnr_1 CB_Artnr_2 CB_Inhalt_1 CB_Inhalt_2 CB_Jahr_1
  675. CB_Jahr_2 CB_Preis CB_Preisliste T_Netto F_Datum
  676. WITH FRAME g-excel-preisliste.
  677. ENABLE RECT-2 Btn_Datei F_ExcelDatei CB_Artnr_1 CB_Artnr_2 CB_Inhalt_1
  678. CB_Inhalt_2 CB_Jahr_1 CB_Jahr_2 CB_Preis CB_Preisliste T_Netto F_Datum
  679. Btn_OK Btn_Cancel
  680. WITH FRAME g-excel-preisliste.
  681. VIEW FRAME g-excel-preisliste.
  682. {&OPEN-BROWSERS-IN-QUERY-g-excel-preisliste}
  683. END PROCEDURE.
  684. /* _UIB-CODE-BLOCK-END */
  685. &ANALYZE-RESUME
  686. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE g-excel-preisliste
  687. PROCEDURE ENDE :
  688. /*------------------------------------------------------------------------------
  689. Purpose:
  690. Parameters: <none>
  691. Notes:
  692. ------------------------------------------------------------------------------*/
  693. IF btnOK THEN DO:
  694. END.
  695. { incl/dlgende.i }
  696. END PROCEDURE.
  697. /* _UIB-CODE-BLOCK-END */
  698. &ANALYZE-RESUME
  699. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject g-excel-preisliste
  700. PROCEDURE initializeObject PRIVATE :
  701. /*------------------------------------------------------------------------------
  702. Purpose: Super Override
  703. Parameters:
  704. Notes:
  705. ------------------------------------------------------------------------------*/
  706. DEF VAR cListe1 AS CHAR NO-UNDO
  707. INIT 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'.
  708. DEF VAR cListe2 AS CHAR NO-UNDO
  709. INIT ',A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z'.
  710. DEF VAR cPreisGrp AS CHAR NO-UNDO.
  711. DO WITH FRAME {&FRAME-NAME}:
  712. CB_Artnr_1 :LIST-ITEMS = cListe1 NO-ERROR.
  713. CB_Artnr_2 :LIST-ITEMS = cListe2 NO-ERROR.
  714. CB_Inhalt_1:LIST-ITEMS = cListe1 NO-ERROR.
  715. CB_Inhalt_2:LIST-ITEMS = cListe2 NO-ERROR.
  716. CB_Jahr_1 :LIST-ITEMS = cListe1 NO-ERROR.
  717. CB_Jahr_2 :LIST-ITEMS = cListe2 NO-ERROR.
  718. CB_Preis :LIST-ITEMS = cListe1 NO-ERROR.
  719. GET-KEY-VALUE SECTION 'Preisliste'
  720. KEY 'DateiName'
  721. VALUE VDateiName.
  722. IF VDateiName = ? THEN VDateiName = '*.xls'.
  723. F_ExcelDatei = VDateiName.
  724. GET-KEY-VALUE SECTION 'Preisliste'
  725. KEY 'SpalteArtnrDB'
  726. VALUE VWert.
  727. IF VWert = ? THEN VWert = 'A'.
  728. CB_Artnr_1:SCREEN-VALUE = VWert.
  729. GET-KEY-VALUE SECTION 'Preisliste'
  730. KEY 'SpalteInhaltDB'
  731. VALUE VWert.
  732. IF VWert = ? THEN VWert = 'A'.
  733. CB_Inhalt_1:SCREEN-VALUE = VWert.
  734. GET-KEY-VALUE SECTION 'Preisliste'
  735. KEY 'SpalteJahrDB'
  736. VALUE VWert.
  737. IF VWert = ? THEN VWert = 'A'.
  738. CB_Jahr_1:SCREEN-VALUE = VWert.
  739. GET-KEY-VALUE SECTION 'Preisliste'
  740. KEY 'SpalteArtnrPL'
  741. VALUE VWert.
  742. IF VWert = ? THEN VWert = ''.
  743. CB_Artnr_2:SCREEN-VALUE = VWert.
  744. GET-KEY-VALUE SECTION 'Preisliste'
  745. KEY 'SpalteInhaltPL'
  746. VALUE VWert.
  747. IF VWert = ? THEN VWert = ''.
  748. CB_Inhalt_2:SCREEN-VALUE = VWert.
  749. GET-KEY-VALUE SECTION 'Preisliste'
  750. KEY 'SpalteJahrPL'
  751. VALUE VWert.
  752. IF VWert = ? THEN VWert = ''.
  753. CB_Jahr_2:SCREEN-VALUE = VWert.
  754. GET-KEY-VALUE SECTION 'Preisliste'
  755. KEY 'SpaltePreis'
  756. VALUE VWert.
  757. IF VWert = ? THEN VWert = 'A'.
  758. CB_Preis:SCREEN-VALUE = VWert.
  759. GET-KEY-VALUE SECTION 'Preisliste'
  760. KEY 'Netto'
  761. VALUE VWert.
  762. IF VWert = ? THEN VWert = 'yes'.
  763. IF VWert BEGINS 'y' THEN T_Netto:SCREEN-VALUE = STRING(TRUE).
  764. ELSE T_Netto:SCREEN-VALUE = STRING(FALSE).
  765. cPreisGrp = ''.
  766. FOR EACH Tabel USE-INDEX Tabel-k2 NO-LOCK
  767. WHERE Tabel.Firma = Firma
  768. AND Tabel.RecArt = 'PREGRP':
  769. cPreisGrp = cPreisGrp
  770. + (IF cPreisGrp = '' THEN '' ELSE ';')
  771. + Tabel.Bez1
  772. + ' ('
  773. + TRIM(STRING(Tabel.CodeI,'>>>9'))
  774. + ');'
  775. + STRING(Tabel.CodeI,"999").
  776. END.
  777. CB_Preisliste:DELIMITER = ';'.
  778. CB_Preisliste:LIST-ITEM-PAIRS = cPreisGrp.
  779. CB_Preisliste:SCREEN-VALUE = CB_Preisliste:ENTRY(1).
  780. GET-KEY-VALUE SECTION 'Preisliste'
  781. KEY 'Preigruppe'
  782. VALUE VWert.
  783. IF VWert <> ? AND
  784. VWert <> '' THEN CB_Preisliste:SCREEN-VALUE = VWert.
  785. F_Datum:SCREEN-VALUE = STRING(TODAY).
  786. END.
  787. RUN SUPER.
  788. APPLY 'VALUE-CHANGED' TO CB_Preisliste.
  789. END PROCEDURE.
  790. /* _UIB-CODE-BLOCK-END */
  791. &ANALYZE-RESUME