f-bondrucken.w 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458
  1. &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12 GUI ADM1
  2. &ANALYZE-RESUME
  3. /* Connected Databases
  4. anadat PROGRESS
  5. */
  6. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  7. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS F-Frame-Win
  8. /*------------------------------------------------------------------------
  9. File:
  10. Description: from cntnrfrm.w - ADM SmartFrame Template
  11. Input Parameters:
  12. <none>
  13. Output Parameters:
  14. <none>
  15. ------------------------------------------------------------------------*/
  16. /* This .W file was created with the Progress UIB. */
  17. /*----------------------------------------------------------------------*/
  18. /* Create an unnamed pool to store all the widgets created
  19. by this procedure. This is a good default which assures
  20. that this procedure's triggers and internal procedures
  21. will execute in this procedure's storage, and that proper
  22. cleanup will occur on deletion of the procedure. */
  23. CREATE WIDGET-POOL.
  24. /* *************************** Definitions ************************** */
  25. /* Parameters Definitions --- */
  26. /* Local Variable Definitions --- */
  27. DEF VAR VVonDatum AS DATE FORMAT "99.99.9999" NO-UNDO.
  28. DEF VAR VBisDatum AS DATE FORMAT "99.99.9999" NO-UNDO.
  29. DEF VAR VKnr AS INT NO-UNDO.
  30. DEF VAR VAnschrift LIKE Adresse.Anschrift NO-UNDO.
  31. DEF VAR VZelle AS CHAR NO-UNDO.
  32. DEF VAR VTotal AS DEC EXTENT 10 NO-UNDO.
  33. DEF VAR VRabatt AS CHAR NO-UNDO.
  34. DEF VAR VTemp AS CHAR NO-UNDO.
  35. DEF VAR VAdresse AS CHAR FORMAT "x(10)" NO-UNDO.
  36. DEF VAR iLager AS INT NO-UNDO.
  37. DEF VAR excelAppl AS COM-HANDLE NO-UNDO.
  38. DEF VAR wordAppl AS COM-HANDLE NO-UNDO.
  39. DEF TEMP-TABLE TWork FIELD SummGrp AS INT
  40. FIELD MWST% AS DEC
  41. FIELD Menge AS DEC
  42. FIELD Liter AS DEC
  43. FIELD Betrag AS DEC
  44. FIELD Bonus AS DEC
  45. INDEX TWork-k1 IS UNIQUE PRIMARY
  46. SummGrp
  47. MWST%.
  48. DEF TEMP-TABLE TWord FIELD Knr AS INT
  49. FIELD SummGrp AS INT
  50. FIELD MWST% AS DEC
  51. FIELD Art AS INT
  52. FIELD Menge AS DEC
  53. FIELD Betrag AS DEC
  54. FIELD Bonus AS DEC.
  55. DEF BUFFER BBonusAbr FOR BonusAbr.
  56. DEF NEW SHARED VAR VBuchen AS DEC EXTENT 10.
  57. DEF NEW SHARED VAR VAnsatz AS DEC EXTENT 10.
  58. /* ---------- Globale Variablen ---------------------------------- */
  59. { v8/globvar.i " " " " "SHARED" }
  60. { v8/debivar.i " " " " "SHARED" }
  61. { v8/artivar.i " " " " "SHARED" }
  62. { v8/contvar.i " " " " "SHARED" }
  63. { v8/listtitv.i "NEW" "SHARED" }
  64. /* _UIB-CODE-BLOCK-END */
  65. &ANALYZE-RESUME
  66. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  67. /* ******************** Preprocessor Definitions ******************** */
  68. &Scoped-define PROCEDURE-TYPE SmartFrame
  69. &Scoped-define DB-AWARE no
  70. &Scoped-define ADM-CONTAINER FRAME
  71. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  72. &Scoped-define FRAME-NAME F-Main
  73. &Scoped-define BROWSE-NAME Br_Bonus_1
  74. /* Internal Tables (found by Frame, Query & Browse Queries) */
  75. &Scoped-define INTERNAL-TABLES BonusAbr
  76. /* Definitions for BROWSE Br_Bonus_1 */
  77. &Scoped-define FIELDS-IN-QUERY-Br_Bonus_1 BonusAbr.Knr VAdresse @ VAdresse ~
  78. BonusAbr.Artnr BonusAbr.Inhalt BonusAbr.Jahr BonusAbr.Menge ~
  79. BonusAbr.Volumen BonusAbr.Betrag BonusAbr.Bon_Art BonusAbr.Bon_Wert ~
  80. BonusAbr.Bonus
  81. &Scoped-define ENABLED-FIELDS-IN-QUERY-Br_Bonus_1
  82. &Scoped-define QUERY-STRING-Br_Bonus_1 FOR EACH BonusAbr ~
  83. WHERE BonusAbr.Firma = GVFirma ~
  84. AND BonusAbr.Bon_Sta = 0 NO-LOCK
  85. &Scoped-define OPEN-QUERY-Br_Bonus_1 OPEN QUERY Br_Bonus_1 FOR EACH BonusAbr ~
  86. WHERE BonusAbr.Firma = GVFirma ~
  87. AND BonusAbr.Bon_Sta = 0 NO-LOCK.
  88. &Scoped-define TABLES-IN-QUERY-Br_Bonus_1 BonusAbr
  89. &Scoped-define FIRST-TABLE-IN-QUERY-Br_Bonus_1 BonusAbr
  90. /* Definitions for FRAME F-Main */
  91. &Scoped-define OPEN-BROWSERS-IN-QUERY-F-Main ~
  92. ~{&OPEN-QUERY-Br_Bonus_1}
  93. /* Standard List Definitions */
  94. &Scoped-Define ENABLED-OBJECTS RECT-22 Br_Bonus_1 T_Excel Btn_Start ~
  95. F_Artikel T_Word T_Verbuchen
  96. &Scoped-Define DISPLAYED-OBJECTS T_Excel F_Artikel T_Word T_Verbuchen
  97. /* Custom List Definitions */
  98. /* List-1,List-2,List-3,List-4,List-5,List-6 */
  99. &Scoped-define List-6 T_Excel T_Word T_Verbuchen
  100. /* _UIB-PREPROCESSOR-BLOCK-END */
  101. &ANALYZE-RESUME
  102. /* *********************** Control Definitions ********************** */
  103. /* Definitions of the field level widgets */
  104. DEFINE BUTTON Btn_Start
  105. LABEL "&Start"
  106. SIZE 14 BY 1.24.
  107. DEFINE VARIABLE F_Artikel AS CHARACTER FORMAT "X(256)":U
  108. LABEL "Artikel"
  109. VIEW-AS FILL-IN NATIVE
  110. SIZE 44 BY 1
  111. BGCOLOR 15 NO-UNDO.
  112. DEFINE RECTANGLE RECT-22
  113. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  114. SIZE 126 BY 14.71.
  115. DEFINE VARIABLE T_Excel AS LOGICAL INITIAL no
  116. LABEL "Excel"
  117. VIEW-AS TOGGLE-BOX
  118. SIZE 19.6 BY .81 NO-UNDO.
  119. DEFINE VARIABLE T_Verbuchen AS LOGICAL INITIAL no
  120. LABEL "Verbuchen"
  121. VIEW-AS TOGGLE-BOX
  122. SIZE 19.6 BY .81 NO-UNDO.
  123. DEFINE VARIABLE T_Word AS LOGICAL INITIAL no
  124. LABEL "Word"
  125. VIEW-AS TOGGLE-BOX
  126. SIZE 19.6 BY .81 NO-UNDO.
  127. /* Query definitions */
  128. &ANALYZE-SUSPEND
  129. DEFINE QUERY Br_Bonus_1 FOR
  130. BonusAbr SCROLLING.
  131. &ANALYZE-RESUME
  132. /* Browse definitions */
  133. DEFINE BROWSE Br_Bonus_1
  134. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _DISPLAY-FIELDS Br_Bonus_1 F-Frame-Win _STRUCTURED
  135. QUERY Br_Bonus_1 DISPLAY
  136. BonusAbr.Knr FORMAT "z999999":U
  137. VAdresse @ VAdresse COLUMN-LABEL "Kunde" FORMAT "x(30)":U
  138. BonusAbr.Artnr FORMAT "z999999":U
  139. BonusAbr.Inhalt FORMAT "9999":U
  140. BonusAbr.Jahr FORMAT "z9999":U
  141. BonusAbr.Menge FORMAT "z,zzz,zz9-":U
  142. BonusAbr.Volumen FORMAT "z,zzz,zz9-":U
  143. BonusAbr.Betrag FORMAT "z,zzz,zz9-":U
  144. BonusAbr.Bon_Art COLUMN-LABEL "Art" FORMAT "9":U
  145. BonusAbr.Bon_Wert COLUMN-LABEL "Wert" FORMAT "zz9.9999-":U
  146. BonusAbr.Bonus FORMAT "zz,zz9.99-":U
  147. /* _UIB-CODE-BLOCK-END */
  148. &ANALYZE-RESUME
  149. WITH NO-ROW-MARKERS SEPARATORS SIZE 124 BY 10.95
  150. BGCOLOR 15 .
  151. /* ************************ Frame Definitions *********************** */
  152. DEFINE FRAME F-Main
  153. Br_Bonus_1 AT ROW 1.48 COL 3
  154. T_Excel AT ROW 12.81 COL 67.8
  155. Btn_Start AT ROW 13.38 COL 107.8
  156. F_Artikel AT ROW 13.52 COL 10.2 COLON-ALIGNED NO-TAB-STOP
  157. T_Word AT ROW 13.62 COL 67.8
  158. T_Verbuchen AT ROW 14.38 COL 67.8
  159. RECT-22 AT ROW 1.24 COL 2
  160. WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY
  161. SIDE-LABELS NO-UNDERLINE THREE-D
  162. AT COL 1 ROW 1
  163. SIZE 127.8 BY 15.1.
  164. /* *********************** Procedure Settings ************************ */
  165. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  166. /* Settings for THIS-PROCEDURE
  167. Type: SmartFrame
  168. Allow: Basic,Browse,DB-Fields,Query,Smart
  169. Other Settings: PERSISTENT-ONLY COMPILE
  170. */
  171. /* This procedure should always be RUN PERSISTENT. Report the error, */
  172. /* then cleanup and return. */
  173. IF NOT THIS-PROCEDURE:PERSISTENT THEN DO:
  174. MESSAGE "{&FILE-NAME} should only be RUN PERSISTENT.":U
  175. VIEW-AS ALERT-BOX ERROR BUTTONS OK.
  176. RETURN.
  177. END.
  178. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  179. /* ************************* Create Window ************************** */
  180. &ANALYZE-SUSPEND _CREATE-WINDOW
  181. /* DESIGN Window definition (used by the UIB)
  182. CREATE WINDOW F-Frame-Win ASSIGN
  183. HEIGHT = 15.1
  184. WIDTH = 127.8.
  185. /* END WINDOW DEFINITION */
  186. */
  187. &ANALYZE-RESUME
  188. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB F-Frame-Win
  189. /* ************************* Included-Libraries *********************** */
  190. {src/adm/method/containr.i}
  191. /* _UIB-CODE-BLOCK-END */
  192. &ANALYZE-RESUME
  193. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  194. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  195. /* SETTINGS FOR WINDOW F-Frame-Win
  196. VISIBLE,,RUN-PERSISTENT */
  197. /* SETTINGS FOR FRAME F-Main
  198. NOT-VISIBLE FRAME-NAME */
  199. /* BROWSE-TAB Br_Bonus_1 RECT-22 F-Main */
  200. ASSIGN
  201. F_Artikel:READ-ONLY IN FRAME F-Main = TRUE.
  202. /* SETTINGS FOR TOGGLE-BOX T_Excel IN FRAME F-Main
  203. 6 */
  204. /* SETTINGS FOR TOGGLE-BOX T_Verbuchen IN FRAME F-Main
  205. 6 */
  206. /* SETTINGS FOR TOGGLE-BOX T_Word IN FRAME F-Main
  207. 6 */
  208. /* _RUN-TIME-ATTRIBUTES-END */
  209. &ANALYZE-RESUME
  210. /* Setting information for Queries and Browse Widgets fields */
  211. &ANALYZE-SUSPEND _QUERY-BLOCK BROWSE Br_Bonus_1
  212. /* Query rebuild information for BROWSE Br_Bonus_1
  213. _TblList = "AnaDat.BonusAbr"
  214. _Where[1] = "BonusAbr.Firma = GVFirma
  215. AND BonusAbr.Bon_Sta = 0"
  216. _FldNameList[1] > AnaDat.BonusAbr.Knr
  217. "BonusAbr.Knr" ? "z999999" "integer" ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  218. _FldNameList[2] > "_<CALC>"
  219. "VAdresse @ VAdresse" "Kunde" "x(30)" ? ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  220. _FldNameList[3] > AnaDat.BonusAbr.Artnr
  221. "BonusAbr.Artnr" ? "z999999" "integer" ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  222. _FldNameList[4] = AnaDat.BonusAbr.Inhalt
  223. _FldNameList[5] > AnaDat.BonusAbr.Jahr
  224. "BonusAbr.Jahr" ? "z9999" "integer" ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  225. _FldNameList[6] > AnaDat.BonusAbr.Menge
  226. "BonusAbr.Menge" ? "z,zzz,zz9-" "decimal" ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  227. _FldNameList[7] > AnaDat.BonusAbr.Volumen
  228. "BonusAbr.Volumen" ? "z,zzz,zz9-" "decimal" ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  229. _FldNameList[8] > AnaDat.BonusAbr.Betrag
  230. "BonusAbr.Betrag" ? "z,zzz,zz9-" "decimal" ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  231. _FldNameList[9] > AnaDat.BonusAbr.Bon_Art
  232. "BonusAbr.Bon_Art" "Art" ? "integer" ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  233. _FldNameList[10] > AnaDat.BonusAbr.Bon_Wert
  234. "BonusAbr.Bon_Wert" "Wert" ? "decimal" ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  235. _FldNameList[11] > AnaDat.BonusAbr.Bonus
  236. "BonusAbr.Bonus" ? "zz,zz9.99-" "decimal" ? ? ? ? ? ? no ? no no ? yes no no "U" "" "" "" "" "" "" 0 no 0 no no
  237. _Query is OPENED
  238. */ /* BROWSE Br_Bonus_1 */
  239. &ANALYZE-RESUME
  240. &ANALYZE-SUSPEND _QUERY-BLOCK FRAME F-Main
  241. /* Query rebuild information for FRAME F-Main
  242. _Options = ""
  243. _Query is NOT OPENED
  244. */ /* FRAME F-Main */
  245. &ANALYZE-RESUME
  246. /* ************************ Control Triggers ************************ */
  247. &Scoped-define SELF-NAME F-Main
  248. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F-Main F-Frame-Win
  249. ON END-ERROR OF FRAME F-Main
  250. DO:
  251. RUN new-state ( INPUT 'ENDE, MAIN':U ).
  252. RETURN NO-APPLY.
  253. END.
  254. /* _UIB-CODE-BLOCK-END */
  255. &ANALYZE-RESUME
  256. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL F-Main F-Frame-Win
  257. ON GO OF FRAME F-Main
  258. DO:
  259. RUN new-state ( INPUT 'ENDE, MAIN':U ).
  260. RETURN NO-APPLY.
  261. END.
  262. /* _UIB-CODE-BLOCK-END */
  263. &ANALYZE-RESUME
  264. &Scoped-define BROWSE-NAME Br_Bonus_1
  265. &Scoped-define SELF-NAME Br_Bonus_1
  266. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br_Bonus_1 F-Frame-Win
  267. ON DELETE-CHARACTER OF Br_Bonus_1 IN FRAME F-Main
  268. DO:
  269. DO WITH FRAME {&FRAME-NAME}:
  270. Ja = DYNAMIC-FUNCTION('ANTWORT_NEIN':U, INPUT 1000 ) NO-ERROR.
  271. IF NOT ja THEN RETURN NO-APPLY.
  272. {&BROWSE-NAME}:FETCH-SELECTED-ROW(1).
  273. LVRecid = RECID(BonusAbr).
  274. {&BROWSE-NAME}:DELETE-CURRENT-ROW().
  275. REPEAT TRANSACTION:
  276. FIND BonusAbr WHERE RECID(BonusAbr) = LVRecid.
  277. DELETE BonusAbr.
  278. LEAVE.
  279. END.
  280. END.
  281. END.
  282. /* _UIB-CODE-BLOCK-END */
  283. &ANALYZE-RESUME
  284. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br_Bonus_1 F-Frame-Win
  285. ON END-ERROR OF Br_Bonus_1 IN FRAME F-Main
  286. DO:
  287. RUN new-state ( INPUT 'ENDE, MAIN':U ).
  288. RETURN NO-APPLY.
  289. END.
  290. /* _UIB-CODE-BLOCK-END */
  291. &ANALYZE-RESUME
  292. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br_Bonus_1 F-Frame-Win
  293. ON ROW-DISPLAY OF Br_Bonus_1 IN FRAME F-Main
  294. DO:
  295. VAdresse = ''.
  296. IF NOT AVAILABLE BonusAbr THEN RETURN.
  297. FIND Adresse USE-INDEX Adresse-k1
  298. WHERE Adresse.Firma = AdFirma
  299. AND Adresse.Knr = BonusAbr.Knr NO-LOCK NO-ERROR.
  300. IF AVAILABLE Adresse THEN VAdresse = Adresse.Anzeig_Br.
  301. END.
  302. /* _UIB-CODE-BLOCK-END */
  303. &ANALYZE-RESUME
  304. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Br_Bonus_1 F-Frame-Win
  305. ON VALUE-CHANGED OF Br_Bonus_1 IN FRAME F-Main
  306. DO:
  307. RUN ARTIKEL ( INPUT BonusAbr.Artnr,
  308. INPUT BonusAbr.Inhalt,
  309. INPUT BonusAbr.Jahr ).
  310. END.
  311. /* _UIB-CODE-BLOCK-END */
  312. &ANALYZE-RESUME
  313. &Scoped-define SELF-NAME Btn_Start
  314. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Start F-Frame-Win
  315. ON CHOOSE OF Btn_Start IN FRAME F-Main /* Start */
  316. DO:
  317. DO WITH FRAME {&FRAME-NAME}:
  318. ASSIGN {&List-6}.
  319. i1 = Br_Bonus_1:NUM-SELECTED-ROWS.
  320. IF i1 = 0 THEN RETURN NO-APPLY.
  321. Br_Bonus_1:FETCH-SELECTED-ROW(1).
  322. VVonDatum = BonusAbr.VonDatum.
  323. VBisDatum = BonusAbr.BisDatum.
  324. VKnr = BonusAbr.Knr.
  325. LVKnr = BonusAbr.Knr.
  326. LVRecid = RECID(BonusAbr).
  327. IF T_Excel THEN RUN EXCEL.
  328. IF T_Word THEN RUN WORD.
  329. IF T_Verbuchen THEN RUN BUCHEN.
  330. END.
  331. END.
  332. /* _UIB-CODE-BLOCK-END */
  333. &ANALYZE-RESUME
  334. &UNDEFINE SELF-NAME
  335. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK F-Frame-Win
  336. /* *************************** Main Block *************************** */
  337. SUBSCRIBE TO 'BONUSLAGER' ANYWHERE.
  338. &IF DEFINED(UIB_IS_RUNNING) <> 0 &THEN
  339. /* Now enable the interface if in test mode - otherwise this happens when
  340. the object is explicitly initialized from its container. */
  341. RUN dispatch IN THIS-PROCEDURE ('initialize':U).
  342. &ENDIF
  343. /* _UIB-CODE-BLOCK-END */
  344. &ANALYZE-RESUME
  345. /* ********************** Internal Procedures *********************** */
  346. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects F-Frame-Win _ADM-CREATE-OBJECTS
  347. PROCEDURE adm-create-objects :
  348. /*------------------------------------------------------------------------------
  349. Purpose: Create handles for all SmartObjects used in this procedure.
  350. After SmartObjects are initialized, then SmartLinks are added.
  351. Parameters: <none>
  352. ------------------------------------------------------------------------------*/
  353. END PROCEDURE.
  354. /* _UIB-CODE-BLOCK-END */
  355. &ANALYZE-RESUME
  356. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-row-available F-Frame-Win _ADM-ROW-AVAILABLE
  357. PROCEDURE adm-row-available :
  358. /*------------------------------------------------------------------------------
  359. Purpose: Dispatched to this procedure when the Record-
  360. Source has a new row available. This procedure
  361. tries to get the new row (or foriegn keys) from
  362. the Record-Source and process it.
  363. Parameters: <none>
  364. ------------------------------------------------------------------------------*/
  365. /* Define variables needed by this internal procedure. */
  366. {src/adm/template/row-head.i}
  367. /* Process the newly available records (i.e. display fields,
  368. open queries, and/or pass records on to any RECORD-TARGETS). */
  369. {src/adm/template/row-end.i}
  370. END PROCEDURE.
  371. /* _UIB-CODE-BLOCK-END */
  372. &ANALYZE-RESUME
  373. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKEL F-Frame-Win
  374. PROCEDURE ARTIKEL :
  375. /*------------------------------------------------------------------------------
  376. Purpose:
  377. Parameters: <none>
  378. Notes:
  379. ------------------------------------------------------------------------------*/
  380. DEF INPUT PARAMETER ipArtnr AS INT NO-UNDO.
  381. DEF INPUT PARAMETER ipInhalt AS INT NO-UNDO.
  382. DEF INPUT PARAMETER ipJahr AS INT NO-UNDO.
  383. FIND Artst USE-INDEX Artst-k1
  384. WHERE Artst.Firma = GVFirma
  385. AND Artst.Artnr = ipArtnr
  386. AND Artst.Inhalt = ipInhalt
  387. AND Artst.Jahr = ipJahr NO-LOCK NO-ERROR.
  388. IF AVAILABLE Artst THEN F_Artikel:SCREEN-VALUE IN FRAME {&FRAME-NAME} = Artst.bez.
  389. ELSE F_Artikel:SCREEN-VALUE IN FRAME {&FRAME-NAME} = '??????????'.
  390. END PROCEDURE.
  391. /* _UIB-CODE-BLOCK-END */
  392. &ANALYZE-RESUME
  393. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BONUSLAGER F-Frame-Win
  394. PROCEDURE BONUSLAGER :
  395. /*------------------------------------------------------------------------------
  396. Purpose:
  397. Parameters: <none>
  398. Notes:
  399. ------------------------------------------------------------------------------*/
  400. DEF INPUT PARAMETER ipLager AS INT NO-UNDO.
  401. iLager = ipLager.
  402. DO WITH FRAME {&FRAME-NAME}:
  403. APPLY 'ENTRY' TO BROWSE {&BROWSE-NAME}.
  404. RETURN NO-APPLY.
  405. END.
  406. END PROCEDURE.
  407. /* _UIB-CODE-BLOCK-END */
  408. &ANALYZE-RESUME
  409. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BUCHEN F-Frame-Win
  410. PROCEDURE BUCHEN :
  411. /*------------------------------------------------------------------------------
  412. Purpose:
  413. Parameters: <none>
  414. Notes:
  415. ------------------------------------------------------------------------------*/
  416. FOR EACH TWork:
  417. DELETE TWork.
  418. END.
  419. FOR EACH BBonusAbr USE-INDEX BonusAbr-k1
  420. WHERE BBonusAbr.Firma = GVFirma
  421. AND BBonusAbr.Bon_Sta = 0
  422. AND BBonusAbr.Knr = VKnr NO-LOCK:
  423. FIND TWork USE-INDEX TWork-k1
  424. WHERE TWork.SummGrp = 999
  425. AND TWork.MWST% = BBonusAbr.MWST-% NO-ERROR.
  426. IF NOT AVAILABLE TWork THEN DO:
  427. CREATE TWork.
  428. ASSIGN TWork.SummGrp = 999
  429. TWork.MWST% = BBonusAbr.MWST-%.
  430. END.
  431. TWork.Menge = TWork.Menge + BBonusAbr.Menge.
  432. TWork.Liter = TWork.Liter + BBonusAbr.Volumen.
  433. TWork.Betrag = TWork.Betrag + BBonusAbr.Betrag.
  434. TWork.Bonus = TWork.Bonus + BBonusAbr.Bonus.
  435. END.
  436. VBuchen = 0.
  437. VAnsatz = 0.
  438. i5 = 0.
  439. VTotal = 0.
  440. FOR EACH TWork
  441. BREAK BY TWork.MWST%:
  442. i5 = i5 + 1.
  443. VBuchen[i5] = TWork.Bonus.
  444. VAnsatz[i5] = TWork.MWST%.
  445. VTotal[01] = VTotal[01] + (TWork.Bonus * (100 + TWork.MWST%) / 100).
  446. IF i5 = 4 THEN LEAVE.
  447. END.
  448. Rundbetr = VTotal[01].
  449. Rundcode = 1.
  450. RUN RUNDEN ( INPUT 1, INPUT-OUTPUT Rundbetr ).
  451. VTotal[01] = Rundbetr.
  452. LVKnr = BonusAbr.Knr.
  453. LVRecid = RECID(BonusAbr).
  454. RUN "v8/d-bonusbuchen.w".
  455. IF KEYFUNCTION(LASTKEY) <> 'END-ERROR' THEN RUN OPEN_BonusAbr.
  456. END PROCEDURE.
  457. /* _UIB-CODE-BLOCK-END */
  458. &ANALYZE-RESUME
  459. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE CREATE_EXCEL F-Frame-Win
  460. PROCEDURE CREATE_EXCEL :
  461. /*------------------------------------------------------------------------------
  462. Purpose:
  463. Parameters: <none>
  464. Notes:
  465. ------------------------------------------------------------------------------*/
  466. DEF INPUT PARAMETER VVorlage AS CHAR NO-UNDO.
  467. DEF INPUT PARAMETER VDatei AS CHAR NO-UNDO.
  468. DEF INPUT PARAMETER VMakro AS CHAR NO-UNDO.
  469. DEF VAR MyFile AS CHAR NO-UNDO.
  470. DO WHILE TRUE:
  471. excelAppl = ?.
  472. MyFile = SEARCH(VVorlage).
  473. IF MyFile = ? THEN DO:
  474. MESSAGE 'Vorlage ' VVorlage ' nicht gefunden' VIEW-AS ALERT-BOX.
  475. RETURN.
  476. END.
  477. VDatei = SESSION:TEMP-DIR + VDatei.
  478. IF SEARCH(VDatei) <> ? THEN DO:
  479. VDatei = SEARCH(VDatei).
  480. OS-DELETE VALUE(VDatei).
  481. END.
  482. OS-COPY VALUE(MyFile) VALUE(VDatei).
  483. CREATE 'Excel.Application' excelAppl.
  484. excelAppl:Visible = TRUE.
  485. excelAppl:Workbooks:Open(VDatei, True).
  486. LEAVE.
  487. END.
  488. RETURN.
  489. /*
  490. excelAppl:Application:Run('Bestell').
  491. */
  492. END PROCEDURE.
  493. /* _UIB-CODE-BLOCK-END */
  494. &ANALYZE-RESUME
  495. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI F-Frame-Win _DEFAULT-DISABLE
  496. PROCEDURE disable_UI :
  497. /*------------------------------------------------------------------------------
  498. Purpose: DISABLE the User Interface
  499. Parameters: <none>
  500. Notes: Here we clean-up the user-interface by deleting
  501. dynamic widgets we have created and/or hide
  502. frames. This procedure is usually called when
  503. we are ready to "clean-up" after running.
  504. ------------------------------------------------------------------------------*/
  505. /* Hide all frames. */
  506. HIDE FRAME F-Main.
  507. IF THIS-PROCEDURE:PERSISTENT THEN DELETE PROCEDURE THIS-PROCEDURE.
  508. END PROCEDURE.
  509. /* _UIB-CODE-BLOCK-END */
  510. &ANALYZE-RESUME
  511. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI F-Frame-Win _DEFAULT-ENABLE
  512. PROCEDURE enable_UI :
  513. /*------------------------------------------------------------------------------
  514. Purpose: ENABLE the User Interface
  515. Parameters: <none>
  516. Notes: Here we display/view/enable the widgets in the
  517. user-interface. In addition, OPEN all queries
  518. associated with each FRAME and BROWSE.
  519. These statements here are based on the "Other
  520. Settings" section of the widget Property Sheets.
  521. ------------------------------------------------------------------------------*/
  522. DISPLAY T_Excel F_Artikel T_Word T_Verbuchen
  523. WITH FRAME F-Main.
  524. ENABLE RECT-22 Br_Bonus_1 T_Excel Btn_Start F_Artikel T_Word T_Verbuchen
  525. WITH FRAME F-Main.
  526. {&OPEN-BROWSERS-IN-QUERY-F-Main}
  527. END PROCEDURE.
  528. /* _UIB-CODE-BLOCK-END */
  529. &ANALYZE-RESUME
  530. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE EXCEL F-Frame-Win
  531. PROCEDURE EXCEL :
  532. /*------------------------------------------------------------------------------
  533. Purpose:
  534. Parameters: <none>
  535. Notes:
  536. ------------------------------------------------------------------------------*/
  537. DEF VAR daten AS CHAR NO-UNDO.
  538. DEF VAR VDateiName AS CHAR NO-UNDO.
  539. DEF VAR io AS LOG NO-UNDO.
  540. DO WITH FRAME {&FRAME-NAME}:
  541. daten = 'Bonus.xls' + CHR(01)
  542. + 'BonusVorlage.xls' + CHR(01)
  543. + ''.
  544. RUN CREATEDATEI ( INPUT daten ).
  545. VDateiName = RETURN-VALUE.
  546. excelAppl = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
  547. IF excelAppl = ? THEN RETURN NO-APPLY.
  548. RUN OPENEXCEl ( INPUT excelAppl, INPUT VDateiName,
  549. INPUT '' , OUTPUT io ) NO-ERROR.
  550. FOR EACH TWork:
  551. DELETE TWork.
  552. END.
  553. i1 = 0.
  554. TiDruck = TRUE.
  555. VSeite = 0.
  556. VLine = 0.
  557. Zuszz = 0.
  558. FOR EACH BBonusAbr USE-INDEX BonusAbr-k1
  559. WHERE BBonusAbr.Firma = GVFirma
  560. AND BBonusAbr.Bon_Sta = 0
  561. AND BBonusAbr.Knr = VKnr NO-LOCK,
  562. FIRST Artst OF BBonusAbr NO-LOCK
  563. BREAK BY BBonusAbr.Knr
  564. BY BBonusAbr.SummGrp
  565. BY Artst.Wg_Grp
  566. BY Artst.Prod_Grp
  567. BY Artst.Art_Grp
  568. BY Artst.Artnr
  569. BY Artst.Inhalt
  570. BY Artst.Jahr :
  571. IF FIRST-OF ( BBonusAbr.Knr ) THEN DO:
  572. FIND Adresse USE-INDEX Adresse-k1
  573. WHERE Adresse.Firma = AdFirma
  574. AND Adresse.Knr = BBonusAbr.Knr NO-LOCK NO-ERROR.
  575. VAnschrift = ''.
  576. IF AVAILABLE Adresse THEN DO:
  577. DO ix = 1 TO 12:
  578. VAnschrift[ix] = Adresse.Anschrift[ix].
  579. END.
  580. END.
  581. TiDruck = TRUE.
  582. END.
  583. i1 = (VLine + Zuszz - (VLine MOD 40)) / 40.
  584. IF i1 > (VSeite - 1) THEN TiDruck = TRUE.
  585. DO WHILE TiDruck:
  586. RUN TITEL.
  587. TiDruck = FALSE.
  588. END.
  589. Zuszz = 0.
  590. IF FIRST-OF ( BBonusAbr.SummGrp ) THEN DO:
  591. FIND FIRST BonSumm USE-INDEX BonSumm-k1
  592. WHERE BonSumm.Firma = GVFirma
  593. AND BonSumm.Bon_Summ = BBonusAbr.SummGrp NO-LOCK.
  594. VZelle = 'A' + STRING(VLine).
  595. excelAppl:Range(VZelle):Select.
  596. excelAppl:ActiveCell:FormulaR1C1 = BonSumm.Bez.
  597. excelAppl:ActiveCell:Font:Bold = TRUE.
  598. VLine = VLine + 1.
  599. IF BBonusAbr.Bon_Art = 1 THEN VRabatt = STRING(BBonusAbr.Bon_Wert,"z9.99-%").
  600. ELSE VRabatt = STRING(BBonusAbr.Bon_Wert,"z9.99-Fr.").
  601. END.
  602. IF FIRST-OF ( Artst.Wg_Grp ) THEN DO:
  603. FIND WarenGrp USE-INDEX WarenGrp-k1
  604. WHERE WarenGrp.Firma = GVFirma
  605. AND WarenGrp.Wgr = Artst.Wg_Grp NO-LOCK NO-ERROR.
  606. VZelle = 'B' + STRING(VLine).
  607. excelAppl:Range(VZelle):Select.
  608. IF AVAILABLE WarenGrp THEN excelAppl:ActiveCell:FormulaR1C1 = WarenGrp.Bez1.
  609. ELSE excelAppl:ActiveCell:FormulaR1C1 = '??????????'.
  610. excelAppl:ActiveCell:Font:Bold = TRUE.
  611. VLine = VLine + 1.
  612. END.
  613. FIND KGebinde USE-INDEX KGebinde-k1
  614. WHERE KGebinde.Firma = Artst.Firma
  615. AND KGebinde.Geb_Cd = Artst.KGeb_Cd NO-LOCK NO-ERROR.
  616. VZelle = 'A' + STRING(VLine).
  617. excelAppl:Range(VZelle):Select.
  618. excelAppl:ActiveCell:FormulaR1C1 = STRING(Artst.Artnr ,"999999")
  619. + "."
  620. + STRING(Artst.Inhalt ,"9999").
  621. VZelle = 'B' + STRING(VLine).
  622. excelAppl:Range(VZelle):Select.
  623. excelAppl:ActiveCell:FormulaR1C1 = Artst.Bez.
  624. IF Artst.Jahr > 1900 THEN DO:
  625. VZelle = 'C' + STRING(VLine).
  626. excelAppl:Range(VZelle):Select.
  627. excelAppl:ActiveCell:FormulaR1C1 = STRING(Artst.Jahr ,"9999").
  628. END.
  629. IF Artst.Alk_Gehalt > 0 THEN DO:
  630. VZelle = 'D' + STRING(VLine).
  631. excelAppl:Range(VZelle):Select.
  632. excelAppl:ActiveCell:FormulaR1C1 = STRING(Artst.Alk_Gehalt,"z9.99%").
  633. END.
  634. VZelle = 'E' + STRING(VLine).
  635. excelAppl:Range(VZelle):Select.
  636. IF AVAILABLE KGebinde THEN excelAppl:ActiveCell:FormulaR1C1 = KGebinde.KBez.
  637. ELSE excelAppl:ActiveCell:FormulaR1C1 = '??????????'.
  638. VZelle = 'F' + STRING(VLine).
  639. excelAppl:Range(VZelle):Select.
  640. excelAppl:ActiveCell:FormulaR1C1 = STRING(BBonusAbr.Menge ,"->>>>>>>>9").
  641. VZelle = 'G' + STRING(VLine).
  642. excelAppl:Range(VZelle):Select.
  643. excelAppl:ActiveCell:FormulaR1C1 = STRING(BBonusAbr.Volumen ,"->>>>>>>>9").
  644. VZelle = 'H' + STRING(VLine).
  645. excelAppl:Range(VZelle):Select.
  646. excelAppl:ActiveCell:FormulaR1C1 = STRING(BBonusAbr.Betrag ,"->>>>>>>>9").
  647. VZelle = 'I' + STRING(VLine).
  648. excelAppl:Range(VZelle):Select.
  649. excelAppl:ActiveCell:FormulaR1C1 = VRabatt.
  650. VZelle = 'J' + STRING(VLine).
  651. excelAppl:Range(VZelle):Select.
  652. excelAppl:ActiveCell:FormulaR1C1 = STRING(BBonusAbr.Bonus ,"->>>>9.99").
  653. VLine = VLine + 1.
  654. FIND TWork USE-INDEX TWork-k1
  655. WHERE TWork.SummGrp = BBonusAbr.SummGrp
  656. AND TWork.MWST% = BBonusAbr.MWST-% NO-ERROR.
  657. IF NOT AVAILABLE TWork THEN DO:
  658. CREATE TWork.
  659. ASSIGN TWork.SummGrp = BBonusAbr.SummGrp
  660. TWork.MWST% = BBonusAbr.MWST-%.
  661. END.
  662. TWork.Menge = TWork.Menge + BBonusAbr.Menge.
  663. TWork.Liter = TWork.Liter + BBonusAbr.Volumen.
  664. TWork.Betrag = TWork.Betrag + BBonusAbr.Betrag.
  665. TWork.Bonus = TWork.Bonus + BBonusAbr.Bonus.
  666. IF LAST-OF ( Artst.Wg_Grp ) THEN Zuszz = 3.
  667. IF NOT LAST-OF ( BBonusAbr.SummGrp ) THEN NEXT.
  668. VTotal = 0.
  669. FOR EACH TWork WHERE TWork.SummGrp = BBonusAbr.SummGrp NO-LOCK:
  670. VTotal[01] = VTotal[01] + TWork.Menge.
  671. VTotal[02] = VTotal[02] + TWork.Liter.
  672. VTotal[03] = VTotal[03] + TWork.Betrag.
  673. VTotal[04] = VTotal[04] + TWork.Bonus.
  674. END.
  675. VLine = VLine + 1.
  676. VZelle = 'F' + STRING(VLine).
  677. excelAppl:Range(VZelle):Select.
  678. excelAppl:ActiveCell:FormulaR1C1 = STRING(VTotal[01],"->>>>>>>>9").
  679. VZelle = 'G' + STRING(VLine).
  680. excelAppl:Range(VZelle):Select.
  681. excelAppl:ActiveCell:FormulaR1C1 = STRING(VTotal[02],"->>>>>>>>9").
  682. VZelle = 'H' + STRING(VLine).
  683. excelAppl:Range(VZelle):Select.
  684. excelAppl:ActiveCell:FormulaR1C1 = STRING(VTotal[03],"->>>>>>>>9").
  685. VZelle = 'J' + STRING(VLine).
  686. excelAppl:Range(VZelle):Select.
  687. excelAppl:ActiveCell:FormulaR1C1 = STRING(VTotal[04],"->>>>9.99").
  688. VZelle = 'F' + STRING(VLine) + ":J" + STRING(VLine).
  689. excelAppl:Range(VZelle):Select.
  690. excelAppl:ActiveCell:Font:Bold = TRUE.
  691. excelAppl:Rows(VLine):Select.
  692. excelAppl:Selection:Font:Bold = TRUE.
  693. VLine = VLine + 1.
  694. Zuszz = Zuszz + 5.
  695. END.
  696. VTotal = 0.
  697. Zuszz = 3.
  698. FOR EACH TWork NO-LOCK
  699. BREAK BY TWork.MWST%:
  700. VTotal[06] = VTotal[06] + TWork.Menge.
  701. VTotal[07] = VTotal[07] + TWork.Liter.
  702. VTotal[08] = VTotal[08] + TWork.Betrag.
  703. VTotal[09] = VTotal[09] + TWork.Bonus.
  704. IF FIRST-OF ( TWork.MWST% ) THEN Zuszz = Zuszz + 1.
  705. END.
  706. i1 = (VLine + Zuszz - (VLine MOD 40)) / 40.
  707. IF i1 > (VSeite - 1) THEN DO:
  708. TiDruck = TRUE.
  709. RUN TITEL.
  710. TiDruck = FALSE.
  711. END.
  712. ELSE VLine = VLine + 1.
  713. VZelle = 'B' + STRING(VLine).
  714. excelAppl:Range(VZelle):Select.
  715. excelAppl:ActiveCell:FormulaR1C1 = 'Total Bonusbetrag'.
  716. VZelle = 'J' + STRING(VLine).
  717. excelAppl:Range(VZelle):Select.
  718. excelAppl:ActiveCell:FormulaR1C1 = STRING(VTotal[09],"->>>>9.99").
  719. excelAppl:Rows(VLine):Select.
  720. excelAppl:Selection:Font:Bold = TRUE.
  721. VLine = VLine + 1.
  722. VBuchen = 0.
  723. VAnsatz = 0.
  724. i5 = 0.
  725. FOR EACH TWork
  726. BREAK BY TWork.MWST%:
  727. VTotal[01] = VTotal[01] + TWork.Menge.
  728. VTotal[02] = VTotal[02] + TWork.Liter.
  729. VTotal[03] = VTotal[03] + TWork.Betrag.
  730. VTotal[04] = VTotal[04] + TWork.Bonus.
  731. IF NOT LAST-OF ( TWork.MWST% ) THEN NEXT.
  732. Rundbetr = VTotal[04] * TWork.MWST% / 100.
  733. VTotal[09] = VTotal[09] + Rundbetr.
  734. i5 = i5 + 1.
  735. VBuchen[i5] = VTotal[04].
  736. VAnsatz[i5] = TWork.MWST%.
  737. VZelle = 'E' + STRING(VLine).
  738. excelAppl:Range(VZelle):Select.
  739. excelAppl:ActiveCell:FormulaR1C1 = 'MWST ' + STRING(TWork.MWST%,"z9.99%").
  740. VZelle = 'H' + STRING(VLine).
  741. excelAppl:Range(VZelle):Select.
  742. excelAppl:ActiveCell:FormulaR1C1 = STRING(VTotal[04],"->>>>>>>>9").
  743. VZelle = 'J' + STRING(VLine).
  744. excelAppl:Range(VZelle):Select.
  745. excelAppl:ActiveCell:FormulaR1C1 = STRING(Rundbetr ,"->>>>9.99").
  746. VLine = VLine + 1.
  747. VTotal[01] = 0.
  748. VTotal[02] = 0.
  749. VTotal[03] = 0.
  750. VTotal[04] = 0.
  751. VTotal[05] = 0.
  752. END.
  753. Rundbetr = VTotal[09].
  754. Rundcode = 1.
  755. RUN "v8/runden.p".
  756. VTotal[09] = Rundbetr.
  757. VZelle = 'B' + STRING(VLine).
  758. excelAppl:Range(VZelle):Select.
  759. excelAppl:ActiveCell:FormulaR1C1 = 'Bonusgutschrift inklusive Mehrwertsteuer'.
  760. VZelle = 'J' + STRING(VLine).
  761. excelAppl:Range(VZelle):Select.
  762. excelAppl:ActiveCell:FormulaR1C1 = STRING(VTotal[09],"->>>>9.99").
  763. excelAppl:Rows(VLine):Select.
  764. excelAppl:Selection:Font:Bold = TRUE.
  765. VLine = VLine + 1.
  766. excelAppl:Application:Run('SeitenWechsel').
  767. RELEASE OBJECT excelAppl.
  768. END.
  769. END PROCEDURE.
  770. /* _UIB-CODE-BLOCK-END */
  771. &ANALYZE-RESUME
  772. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GETDATEINAME F-Frame-Win
  773. PROCEDURE GETDATEINAME :
  774. /*------------------------------------------------------------------------------
  775. Purpose:
  776. Parameters: <none>
  777. Notes:
  778. ------------------------------------------------------------------------------*/
  779. DEF INPUT PARAMETER ipParam AS CHAR NO-UNDO.
  780. DEF VAR DateiName AS CHAR NO-UNDO.
  781. DEF VAR Pfad AS CHAR NO-UNDO.
  782. DEF VAR Laenge AS INT NO-UNDO.
  783. DEF VAR cString AS CHAR NO-UNDO.
  784. DEF VAR ix AS INT NO-UNDO.
  785. DEF VAR Ja AS LOG NO-UNDO.
  786. DateiName = ipParam.
  787. IF DateiName = '' THEN RETURN 'ERROR-PARAMETER'.
  788. DO WHILE TRUE:
  789. IF SEARCH(DateiName) <> ? THEN DO:
  790. DateiName = SEARCH(DateiName).
  791. FILE-INFO:FILE-NAME = DateiName.
  792. DateiName = FILE-INFO:FULL-PATHNAME.
  793. LEAVE.
  794. END.
  795. cString = ''.
  796. Laenge = LENGTH(DateiName).
  797. DO ix = Laenge TO 1 BY -1:
  798. IF SUBSTRING(DateiName,ix,01) = '/' THEN LEAVE.
  799. IF SUBSTRING(DateiName,ix,01) = '\' THEN LEAVE.
  800. cString = SUBSTRING(DateiName,ix,01) + cString.
  801. END.
  802. DateiName = 'Vorlagen\' + cString.
  803. IF SEARCH(DateiName) <> ? THEN DO:
  804. DateiName = SEARCH(DateiName).
  805. FILE-INFO:FILE-NAME = DateiName.
  806. DateiName = FILE-INFO:FULL-PATHNAME.
  807. LEAVE.
  808. END.
  809. DateiName = 'WordVorlagen\' + cString.
  810. IF SEARCH(DateiName) <> ? THEN DO:
  811. DateiName = SEARCH(DateiName).
  812. FILE-INFO:FILE-NAME = DateiName.
  813. DateiName = FILE-INFO:FULL-PATHNAME.
  814. LEAVE.
  815. END.
  816. DateiName = 'ExcelVorlagen\' + cString.
  817. IF SEARCH(DateiName) <> ? THEN DO:
  818. DateiName = SEARCH(DateiName).
  819. FILE-INFO:FILE-NAME = DateiName.
  820. DateiName = FILE-INFO:FULL-PATHNAME.
  821. LEAVE.
  822. END.
  823. RETURN 'ERROR-DateiName'.
  824. END.
  825. RETURN DateiName.
  826. END PROCEDURE.
  827. /* _UIB-CODE-BLOCK-END */
  828. &ANALYZE-RESUME
  829. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE local-view F-Frame-Win
  830. PROCEDURE local-view :
  831. /*------------------------------------------------------------------------------
  832. Purpose: Override standard ADM method
  833. Notes:
  834. ------------------------------------------------------------------------------*/
  835. RUN dispatch IN THIS-PROCEDURE ( INPUT 'view':U ) .
  836. RUN OPEN_BonusAbr.
  837. PUBLISH 'GETBONUSLAGER' ( OUTPUT iLager ).
  838. APPLY 'ENTRY' TO BROWSE Br_Bonus_1.
  839. END PROCEDURE.
  840. /* _UIB-CODE-BLOCK-END */
  841. &ANALYZE-RESUME
  842. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE OPEN_BonusAbr F-Frame-Win
  843. PROCEDURE OPEN_BonusAbr :
  844. /*------------------------------------------------------------------------------
  845. Purpose:
  846. Parameters: <none>
  847. Notes:
  848. ------------------------------------------------------------------------------*/
  849. DO WITH FRAME {&FRAME-NAME}:
  850. IF NUM-RESULTS("{&BROWSE-NAME}":U) <> ? THEN CLOSE QUERY Br_Bonus_1.
  851. OPEN QUERY Br_Bonus_1
  852. FOR EACH BonusAbr USE-INDEX BonusAbr-k1
  853. WHERE BonusAbr.Firma = GVFirma
  854. AND BonusAbr.Bon_Sta = 0 NO-LOCK.
  855. IF NUM-RESULTS("{&BROWSE-NAME}":U) <> ? AND
  856. NUM-RESULTS("{&BROWSE-NAME}":U) > 0 THEN APPLY 'VALUE-CHANGED' TO BROWSE {&BROWSE-NAME}.
  857. END.
  858. END PROCEDURE.
  859. /* _UIB-CODE-BLOCK-END */
  860. &ANALYZE-RESUME
  861. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE send-records F-Frame-Win _ADM-SEND-RECORDS
  862. PROCEDURE send-records :
  863. /*------------------------------------------------------------------------------
  864. Purpose: Send record ROWID's for all tables used by
  865. this file.
  866. Parameters: see template/snd-head.i
  867. ------------------------------------------------------------------------------*/
  868. /* Define variables needed by this internal procedure. */
  869. {src/adm/template/snd-head.i}
  870. /* For each requested table, put it's ROWID in the output list. */
  871. {src/adm/template/snd-list.i "BonusAbr"}
  872. /* Deal with any unexpected table requests before closing. */
  873. {src/adm/template/snd-end.i}
  874. END PROCEDURE.
  875. /* _UIB-CODE-BLOCK-END */
  876. &ANALYZE-RESUME
  877. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE state-changed F-Frame-Win
  878. PROCEDURE state-changed :
  879. /* -----------------------------------------------------------
  880. Purpose:
  881. Parameters: <none>
  882. Notes:
  883. -------------------------------------------------------------*/
  884. DEFINE INPUT PARAMETER p-issuer-hdl AS HANDLE NO-UNDO.
  885. DEFINE INPUT PARAMETER p-state AS CHARACTER NO-UNDO.
  886. END PROCEDURE.
  887. /* _UIB-CODE-BLOCK-END */
  888. &ANALYZE-RESUME
  889. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TEMP_FILE F-Frame-Win
  890. PROCEDURE TEMP_FILE :
  891. /*------------------------------------------------------------------------------
  892. Purpose:
  893. Parameters: <none>
  894. Notes:
  895. ------------------------------------------------------------------------------*/
  896. DO WHILE TRUE TRANSACTION:
  897. FIND Tabel USE-INDEX Tabel-k1
  898. WHERE Tabel.Firma = GVFirma
  899. AND Tabel.RecArt = 'TEMPFILE'
  900. AND Tabel.CodeI = 0
  901. AND Tabel.CodeC = 'EXCEL'
  902. AND Tabel.Sprcd = 1 NO-ERROR.
  903. IF NOT AVAILABLE Tabel THEN DO:
  904. CREATE Tabel.
  905. ASSIGN Tabel.Firma = GVFirma
  906. Tabel.RecArt = 'TEMPFILE'
  907. Tabel.CodeI = 0
  908. Tabel.CodeC = 'EXCEL'
  909. Tabel.Sprcd = 1
  910. Tabel.Bez1 = SESSION:TEMP-DIR.
  911. END.
  912. Tabel.Int_1 = Tabel.Int_1 + 1.
  913. VTemp = Tabel.Bez1 + 'Ge_MIS' + STRING(Tabel.Int_1) + '.tmp'.
  914. RELEASE Tabel.
  915. LEAVE.
  916. END.
  917. END PROCEDURE.
  918. /* _UIB-CODE-BLOCK-END */
  919. &ANALYZE-RESUME
  920. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE TITEL F-Frame-Win
  921. PROCEDURE TITEL :
  922. /*------------------------------------------------------------------------------
  923. Purpose:
  924. Parameters: <none>
  925. Notes:
  926. ------------------------------------------------------------------------------*/
  927. IF VSeite > 0 THEN DO:
  928. IF (VSeite * 40) < VLine THEN VLine = VSeite * 40.
  929. VLine = VLine + 1.
  930. VZelle = 'A' + STRING(VLine).
  931. excelAppl:Range(VZelle):Select.
  932. excelAppl:Selection:VALUE = "&SW&".
  933. END.
  934. VSeite = VSeite + 1.
  935. VLine = VLine + 1.
  936. DO ix = 5 TO 11:
  937. VZelle = 'A' + TRIM(STRING(VLine)).
  938. excelAppl:Range(VZelle):Select.
  939. excelAppl:ActiveCell = TRIM(VAnschrift[ix]).
  940. /*
  941. IF ix = 11 THEN DO:
  942. excelAppl:ActiveCell:Font:Bold = TRUE.
  943. END.
  944. */
  945. VLine = VLine + 1.
  946. END.
  947. VZelle = 'C' + STRING(VLine - 3).
  948. excelAppl:Range(VZelle):Select.
  949. excelAppl:ActiveCell = 'Bonusabrechnung '
  950. + STRING(BBonusAbr.VonDatum,"99.99.9999")
  951. + " - "
  952. + STRING(BBonusAbr.BisDatum,"99.99.9999").
  953. excelAppl:ActiveCell:Font:Bold = TRUE.
  954. excelAppl:ActiveCell:Font:Size = 12.
  955. VLine = ((VSeite - 1) * 40) + 9.
  956. IF VSeite > 1 THEN DO:
  957. excelAppl:Range("A9:J9"):Select.
  958. excelAppl:Selection:Copy.
  959. VZelle = 'A' + STRING(VLine) + ":J" + STRING(VLine).
  960. excelAppl:Range(VZelle):Select.
  961. excelAppl:ActiveSheet:Paste.
  962. END.
  963. VLine = VLine + 1.
  964. END PROCEDURE.
  965. /* _UIB-CODE-BLOCK-END */
  966. &ANALYZE-RESUME
  967. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE WORD F-Frame-Win
  968. PROCEDURE WORD :
  969. /*------------------------------------------------------------------------------
  970. Purpose:
  971. Parameters: <none>
  972. Notes:
  973. ------------------------------------------------------------------------------*/
  974. DEF VAR DateiName AS CHAR NO-UNDO.
  975. DEF VAR Dokument AS CHAR NO-UNDO.
  976. DEF VAR Datendok AS CHAR NO-UNDO.
  977. DEF VAR Steuerdok AS CHAR NO-UNDO.
  978. DEF VAR cAnrede AS CHAR NO-UNDO.
  979. DEF VAR VArt AS INT NO-UNDO.
  980. DEF VAR BAnsatz AS DEC NO-UNDO.
  981. DEF VAR GTotal AS DEC NO-UNDO.
  982. DEF VAR cSteuerDaten AS CHAR NO-UNDO.
  983. DEF VAR cDok1 AS CHAR NO-UNDO.
  984. DEF VAR cDok2 AS CHAR NO-UNDO.
  985. DEF VAR AnzDok AS INT NO-UNDO.
  986. DEF VAR hDok AS COM-HANDLE NO-UNDO.
  987. DO WITH FRAME {&FRAME-NAME}:
  988. DateiName = 'BonusVorlage.dot'.
  989. RUN GETDATEINAME ( INPUT DateiName ).
  990. IF RETURN-VALUE BEGINS 'ERROR' THEN DO:
  991. MESSAGE RETURN-VALUE VIEW-AS ALERT-BOX ERROR.
  992. RETURN.
  993. END.
  994. Dokument = RETURN-VALUE.
  995. DateiName = 'BonusVorlage_st.doc'.
  996. RUN GETDATEINAME ( INPUT DateiName ).
  997. IF RETURN-VALUE BEGINS 'ERROR' THEN DO:
  998. MESSAGE RETURN-VALUE VIEW-AS ALERT-BOX ERROR.
  999. RETURN.
  1000. END.
  1001. Steuerdok = RETURN-VALUE.
  1002. Datendok = SESSION:TEMP-DIR + 'Bonus_da.txt'.
  1003. DateiName = Dokument.
  1004. Dokument = SESSION:TEMP-DIR + 'Bonus.dot'.
  1005. OS-COPY VALUE(DateiName) VALUE(Dokument).
  1006. DateiName = Steuerdok.
  1007. SteuerDok = SESSION:TEMP-DIR + 'Bonus_st.doc'.
  1008. OS-COPY VALUE(DateiName) VALUE(SteuerDok).
  1009. wordAppl = DYNAMIC-FUNCTION('CREATEWORD':U) NO-ERROR.
  1010. wordAppl:VISIBLE = FALSE.
  1011. WordAppl:Documents:OPEN(SteuerDok, TRUE ).
  1012. WordAppl:Selection:WholeStory.
  1013. WordAppl:Selection:COPY.
  1014. WordAppl:ActiveDocument:CLOSE(FALSE).
  1015. cSteuerDaten = CLIPBOARD:VALUE + CHR(10).
  1016. wordAppl:VISIBLE = TRUE.
  1017. FOR EACH TWork:
  1018. DELETE TWork.
  1019. END.
  1020. FOR EACH BBonusAbr USE-INDEX BonusAbr-k1
  1021. WHERE BBonusAbr.Firma = GVFirma
  1022. AND BBonusAbr.Bon_Sta = 0
  1023. AND BBonusAbr.Knr = VKnr NO-LOCK,
  1024. FIRST Artst OF BBonusAbr NO-LOCK
  1025. BREAK BY BBonusAbr.Knr
  1026. BY BBonusAbr.SummGrp
  1027. BY Artst.Wg_Grp
  1028. BY Artst.Prod_Grp
  1029. BY Artst.Art_Grp
  1030. BY Artst.Artnr
  1031. BY Artst.Inhalt
  1032. BY Artst.Jahr :
  1033. IF FIRST-OF ( BBonusAbr.Knr ) THEN DO:
  1034. FIND Adresse USE-INDEX Adresse-k1
  1035. WHERE Adresse.Firma = AdFirma
  1036. AND Adresse.Knr = BBonusAbr.Knr NO-LOCK NO-ERROR.
  1037. VAnschrift = ''.
  1038. IF AVAILABLE Adresse THEN DO:
  1039. DO ix = 1 TO 12:
  1040. VAnschrift[ix] = Adresse.Anschrift[ix].
  1041. END.
  1042. END.
  1043. cAnrede = Adresse.BriefAnr.
  1044. END.
  1045. FIND TWork USE-INDEX TWork-k1
  1046. WHERE TWork.SummGrp = BBonusAbr.SummGrp
  1047. AND TWork.MWST% = BBonusAbr.MWST-% NO-ERROR.
  1048. IF NOT AVAILABLE TWork THEN DO:
  1049. CREATE TWork.
  1050. ASSIGN TWork.SummGrp = BBonusAbr.SummGrp
  1051. TWork.MWST% = BBonusAbr.MWST-%.
  1052. END.
  1053. TWork.Menge = TWork.Menge + BBonusAbr.Menge.
  1054. TWork.Liter = TWork.Liter + BBonusAbr.Volumen.
  1055. TWork.Betrag = TWork.Betrag + BBonusAbr.Betrag.
  1056. TWork.Bonus = TWork.Bonus + BBonusAbr.Bonus.
  1057. END.
  1058. OUTPUT TO VALUE(Datendok).
  1059. PUT CONTROL cSteuerDaten.
  1060. PUT CONTROL VAnschrift[01] ";"
  1061. VAnschrift[02] ";"
  1062. VAnschrift[03] ";"
  1063. VAnschrift[04] ";"
  1064. VAnschrift[05] ";"
  1065. VAnschrift[06] ";"
  1066. VAnschrift[07] ";"
  1067. VAnschrift[08] ";"
  1068. VAnschrift[09] ";"
  1069. VAnschrift[10] ";"
  1070. VAnschrift[11] ";"
  1071. VAnschrift[12] ";"
  1072. cAnrede ";"
  1073. STRING(TODAY,'99.99.9999') ";"
  1074. STRING(YEAR(VVonDatum),'9999') ";"
  1075. STRING(VVonDatum,'99.99.9999') ";"
  1076. STRING(VBisDatum,'99.99.9999') ";".
  1077. VBuchen = 0.
  1078. VAnsatz = 0.
  1079. i5 = 0.
  1080. GTotal = 0.
  1081. FOR EACH TWork
  1082. BREAK BY TWork.MWST%:
  1083. IF FIRST-OF(TWork.MWST%) THEN DO:
  1084. i5 = i5 + 1.
  1085. VAnsatz[i5] = TWork.MWST%.
  1086. END.
  1087. VBuchen[i5] = VBuchen[i5] + TWork.Bonus.
  1088. END.
  1089. i5 = 0.
  1090. FOR EACH TWork BREAK BY TWork.SummGrp:
  1091. IF FIRST-OF(TWork.SummGrp) THEN DO:
  1092. VTotal = 0.
  1093. FIND FIRST BonusAbr USE-INDEX BonusAbr-k1
  1094. WHERE BonusAbr.Firma = GVFirma
  1095. AND BonusAbr.Bon_Sta = 0
  1096. AND BonusAbr.Knr = VKnr
  1097. AND BonusAbr.VonDatum = VVonDatum
  1098. AND BonusAbr.SummGrp = TWork.SummGrp NO-LOCK.
  1099. VArt = BonusAbr.Bon_Art.
  1100. BAnsatz = BonusAbr.Bon_Wert.
  1101. END.
  1102. VTotal[01] = VTotal[01] + TWork.Menge.
  1103. VTotal[02] = VTotal[02] + TWork.Betrag.
  1104. VTotal[03] = VTotal[03] + TWork.Liter.
  1105. VTotal[04] = VTotal[04] + TWork.Bonus.
  1106. GTotal = GTotal + TWork.Bonus.
  1107. IF NOT LAST-OF(TWork.SummGrp) THEN NEXT.
  1108. i5 = i5 + 1.
  1109. IF i5 > 10 THEN LEAVE.
  1110. CASE VArt:
  1111. WHEN 0 THEN DO:
  1112. PUT CONTROL TRIM(STRING(VTotal[01],'->>>,>>>,>>>')) ";"
  1113. ' Fl. à' ";"
  1114. TRIM(STRING(BAnsatz,'->>>9.99 Fr.')) ";"
  1115. TRIM(STRING(VTotal[04],'->>>,>>>,>>9.99 CHF')) ";".
  1116. END.
  1117. WHEN 1 THEN DO:
  1118. PUT CONTROL TRIM(STRING(VTotal[02],'->>>,>>>,>>>')) ";"
  1119. ' Fr. à' ";"
  1120. TRIM(STRING(BAnsatz,'->>>9.99 %')) ";"
  1121. TRIM(STRING(VTotal[04],'->>>,>>>,>>9.99 CHF')) ";".
  1122. END.
  1123. WHEN 2 THEN DO:
  1124. PUT CONTROL TRIM(STRING(VTotal[03],'->>>,>>>,>>>')) ";"
  1125. ' Liter à' ";"
  1126. TRIM(STRING(BAnsatz,'->>>9.99 Fr.')) ";"
  1127. TRIM(STRING(VTotal[04],'->>>,>>>,>>9.99 CHF')) ";".
  1128. END.
  1129. END CASE.
  1130. END.
  1131. DO i5 = i5 + 1 TO 10:
  1132. PUT CONTROL ";;;;".
  1133. END.
  1134. DO ix = 1 TO 4:
  1135. IF VBuchen[ix] = 0 THEN PUT CONTROL ";;".
  1136. ELSE DO:
  1137. Rundbetr = VBuchen[ix] * VAnsatz[ix] / 100.
  1138. PUT CONTROL 'Mehrwertsteuer '
  1139. TRIM(STRING(VAnsatz[ix],'z9.99 %')) ";"
  1140. TRIM(STRING(Rundbetr ,'->>>,>>9.99 CHF')) ";".
  1141. GTotal = GTotal + Rundbetr.
  1142. END.
  1143. END.
  1144. Rundcode = 1.
  1145. Rundbetr = GTotal.
  1146. RUN "v8/runden.p".
  1147. GTotal = Rundbetr.
  1148. PUT CONTROL STRING(GTotal,'->>>,>>>,>>9.99 CHF') CHR(10).
  1149. OUTPUT CLOSE.
  1150. wordAppl:Documents:Add (Dokument, FALSE).
  1151. cDok1 = wordAppl:ActiveDocument:Name.
  1152. wordAppl:ActiveDocument:MailMerge:OpenDataSource(DatenDok, False, False).
  1153. wordAppl:ActiveDocument:MailMerge:Execute(TRUE).
  1154. cDok2 = wordAppl:ActiveDocument:Name.
  1155. AnzDok = WordAppl:Documents:Count().
  1156. DO ix = 1 TO AnzDok:
  1157. hDok = wordAppl:Windows:ITEM(ix).
  1158. IF NOT VALID-HANDLE(hDok) THEN NEXT.
  1159. hDok:Activate().
  1160. IF wordAppl:ActiveDocument:Name <> cDok1 THEN NEXT.
  1161. WordAppl:ActiveDocument:Close(FALSE).
  1162. LEAVE.
  1163. END.
  1164. RELEASE OBJECT wordAppl.
  1165. END.
  1166. END PROCEDURE.
  1167. /* _UIB-CODE-BLOCK-END */
  1168. &ANALYZE-RESUME