g-bestellung-verbuchen.w 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2
  2. &ANALYZE-RESUME
  3. &Scoped-define WINDOW-NAME CURRENT-WINDOW
  4. &Scoped-define FRAME-NAME gBestellPreise
  5. {adecomm/appserv.i}
  6. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gBestellPreise
  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. DEFINE INPUT-OUTPUT PARAMETER iohtBesko AS HANDLE.
  28. /* Local Variable Definitions --- */
  29. DEFINE VARIABLE VBestand AS DECIMAL NO-UNDO DECIMALS 4.
  30. DEFINE VARIABLE nDEP AS DECIMAL NO-UNDO DECIMALS 4.
  31. DEFINE VARIABLE nEpCHF AS DECIMAL NO-UNDO DECIMALS 4.
  32. DEFINE VARIABLE WBestand AS DECIMAL NO-UNDO DECIMALS 4.
  33. DEFINE VARIABLE WEingang AS DECIMAL NO-UNDO DECIMALS 4.
  34. DEFINE VARIABLE TBestand AS DECIMAL NO-UNDO DECIMALS 4.
  35. DEFINE VARIABLE VJJ AS INTEGER NO-UNDO.
  36. DEFINE VARIABLE VMM AS INTEGER NO-UNDO.
  37. DEFINE VARIABLE nKorrektur AS DECIMAL NO-UNDO DECIMALS 4.
  38. DEFINE VARIABLE iFaknr AS INTEGER NO-UNDO.
  39. DEFINE VARIABLE cFaknr AS CHARACTER NO-UNDO.
  40. DEFINE VARIABLE nRundbetr AS DECIMAL NO-UNDO DECIMALS 4.
  41. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  42. DEFINE VARIABLE rBesko AS RECID NO-UNDO.
  43. { incl/dlgdefinition.i }
  44. { src/adm2/widgetprto.i }
  45. /* _UIB-CODE-BLOCK-END */
  46. &ANALYZE-RESUME
  47. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  48. /* ******************** Preprocessor Definitions ******************** */
  49. &Scoped-define PROCEDURE-TYPE SmartDialog
  50. &Scoped-define DB-AWARE no
  51. &Scoped-define ADM-CONTAINER DIALOG-BOX
  52. &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  53. /* Name of designated FRAME-NAME and/or first browse and/or first query */
  54. &Scoped-define FRAME-NAME gBestellPreise
  55. /* Standard List Definitions */
  56. &Scoped-Define ENABLED-OBJECTS RECT-2 E_Text F_Bestell_Nr F_FRW F_Kurs ~
  57. F_Faktor F_Bestellung F_Artikel F_Bestand F_Bestand_Am F_DEP F_DEP_Am ~
  58. F_Korrektur Btn_OK Btn_Cancel
  59. &Scoped-Define DISPLAYED-OBJECTS E_Text F_Bestell_Nr F_FRW F_Kurs F_Faktor ~
  60. F_Bestellung F_Artikel F_Bestand F_Bestand_Am F_DEP F_DEP_Am F_Korrektur
  61. /* Custom List Definitions */
  62. /* List-1,List-2,List-3,List-4,List-5,List-6 */
  63. &Scoped-define List-1 F_Bestell_Nr F_FRW F_Kurs F_Faktor
  64. &Scoped-define List-5 F_Artikel F_Bestand F_Bestand_Am F_DEP F_DEP_Am ~
  65. F_Korrektur
  66. /* _UIB-PREPROCESSOR-BLOCK-END */
  67. &ANALYZE-RESUME
  68. /* *********************** Control Definitions ********************** */
  69. /* Define a dialog box */
  70. /* Definitions of the field level widgets */
  71. DEFINE BUTTON Btn_Cancel AUTO-END-KEY
  72. LABEL "abbrechen"
  73. SIZE 15 BY 1.
  74. DEFINE BUTTON Btn_OK AUTO-GO
  75. LABEL "OK"
  76. SIZE 15 BY 1.
  77. DEFINE VARIABLE E_Text AS CHARACTER
  78. VIEW-AS EDITOR MAX-CHARS 1000
  79. SIZE 108 BY 2.52
  80. BGCOLOR 15 FGCOLOR 12 NO-UNDO.
  81. DEFINE VARIABLE F_Artikel AS CHARACTER FORMAT "X(256)":U
  82. LABEL "Artikel"
  83. VIEW-AS FILL-IN NATIVE
  84. SIZE 68 BY 1
  85. BGCOLOR 15 NO-UNDO.
  86. DEFINE VARIABLE F_Bestand AS CHARACTER FORMAT "X(256)":U
  87. LABEL "Bestand heute"
  88. VIEW-AS FILL-IN NATIVE
  89. SIZE 16 BY 1
  90. BGCOLOR 15 NO-UNDO.
  91. DEFINE VARIABLE F_Bestand_Am AS CHARACTER FORMAT "X(256)":U
  92. LABEL "Bestand am"
  93. VIEW-AS FILL-IN NATIVE
  94. SIZE 16 BY 1
  95. BGCOLOR 15 NO-UNDO.
  96. DEFINE VARIABLE F_Bestellung AS CHARACTER FORMAT "X(256)":U
  97. LABEL "Bestellung"
  98. VIEW-AS FILL-IN NATIVE
  99. SIZE 68 BY 1
  100. BGCOLOR 15 NO-UNDO.
  101. DEFINE VARIABLE F_Bestell_Nr AS CHARACTER FORMAT "x(20)":U
  102. LABEL "Dokumentnummer Lieferant"
  103. VIEW-AS FILL-IN NATIVE
  104. SIZE 20 BY 1
  105. BGCOLOR 15 NO-UNDO.
  106. DEFINE VARIABLE F_DEP AS CHARACTER FORMAT "X(256)":U
  107. LABEL "Durschnittlicher EP heute"
  108. VIEW-AS FILL-IN NATIVE
  109. SIZE 16 BY 1
  110. BGCOLOR 15 NO-UNDO.
  111. DEFINE VARIABLE F_DEP_Am AS CHARACTER FORMAT "X(256)":U
  112. LABEL "Durchschnittlicher EP am"
  113. VIEW-AS FILL-IN NATIVE
  114. SIZE 16 BY 1
  115. BGCOLOR 15 NO-UNDO.
  116. DEFINE VARIABLE F_Faktor AS INTEGER FORMAT "zzzz9":U INITIAL 0
  117. LABEL "Faktor"
  118. VIEW-AS FILL-IN NATIVE
  119. SIZE 9 BY 1
  120. BGCOLOR 15 NO-UNDO.
  121. DEFINE VARIABLE F_FRW AS CHARACTER FORMAT "X(256)":U
  122. LABEL "Währung"
  123. VIEW-AS FILL-IN NATIVE
  124. SIZE 28 BY 1
  125. BGCOLOR 15 NO-UNDO.
  126. DEFINE VARIABLE F_Korrektur AS CHARACTER FORMAT "x(16)":U
  127. LABEL "Korrektur der Einstandskosten"
  128. VIEW-AS FILL-IN NATIVE
  129. SIZE 16 BY 1
  130. BGCOLOR 15 NO-UNDO.
  131. DEFINE VARIABLE F_Kurs AS DECIMAL FORMAT "zz,zz9.999999":U INITIAL 0
  132. LABEL "Kurs"
  133. VIEW-AS FILL-IN NATIVE
  134. SIZE 20 BY 1
  135. BGCOLOR 15 NO-UNDO.
  136. DEFINE RECTANGLE RECT-2
  137. EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL
  138. SIZE 112 BY 14.29.
  139. /* ************************ Frame Definitions *********************** */
  140. DEFINE FRAME gBestellPreise
  141. E_Text AT ROW 1.95 COL 5 NO-LABEL WIDGET-ID 4 NO-TAB-STOP
  142. F_Bestell_Nr AT ROW 5 COL 41 COLON-ALIGNED WIDGET-ID 14
  143. F_FRW AT ROW 5 COL 81 COLON-ALIGNED WIDGET-ID 22 NO-TAB-STOP
  144. F_Kurs AT ROW 6 COL 89 COLON-ALIGNED WIDGET-ID 26
  145. F_Faktor AT ROW 7 COL 100 COLON-ALIGNED WIDGET-ID 20 NO-TAB-STOP
  146. F_Bestellung AT ROW 8 COL 41 COLON-ALIGNED WIDGET-ID 12 NO-TAB-STOP
  147. F_Artikel AT ROW 9 COL 41 COLON-ALIGNED WIDGET-ID 6 NO-TAB-STOP
  148. F_Bestand AT ROW 10 COL 41 COLON-ALIGNED WIDGET-ID 8 NO-TAB-STOP
  149. F_Bestand_Am AT ROW 11 COL 41 COLON-ALIGNED WIDGET-ID 10 NO-TAB-STOP
  150. F_DEP AT ROW 12 COL 41 COLON-ALIGNED WIDGET-ID 16 NO-TAB-STOP
  151. F_DEP_Am AT ROW 13 COL 41 COLON-ALIGNED WIDGET-ID 18 NO-TAB-STOP
  152. F_Korrektur AT ROW 14 COL 41 COLON-ALIGNED WIDGET-ID 24 NO-TAB-STOP
  153. Btn_OK AT ROW 16.24 COL 41.4
  154. Btn_Cancel AT ROW 16.24 COL 62.6
  155. RECT-2 AT ROW 1.48 COL 3 WIDGET-ID 2
  156. SPACE(1.99) SKIP(2.36)
  157. WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER
  158. SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE
  159. TITLE "Preise/Rechnung der Bestellung einbuchen"
  160. CANCEL-BUTTON Btn_Cancel WIDGET-ID 100.
  161. /* *********************** Procedure Settings ************************ */
  162. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  163. /* Settings for THIS-PROCEDURE
  164. Type: SmartDialog
  165. Allow: Basic,Browse,DB-Fields,Query,Smart
  166. Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target
  167. Design Page: 1
  168. Other Settings: COMPILE APPSERVER
  169. */
  170. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  171. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB gBestellPreise
  172. /* ************************* Included-Libraries *********************** */
  173. {src/adm2/containr.i}
  174. /* _UIB-CODE-BLOCK-END */
  175. &ANALYZE-RESUME
  176. /* *********** Runtime Attributes and AppBuilder Settings *********** */
  177. &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES
  178. /* SETTINGS FOR DIALOG-BOX gBestellPreise
  179. FRAME-NAME */
  180. ASSIGN
  181. FRAME gBestellPreise:SCROLLABLE = FALSE
  182. FRAME gBestellPreise:HIDDEN = TRUE.
  183. ASSIGN
  184. E_Text:RETURN-INSERTED IN FRAME gBestellPreise = TRUE
  185. E_Text:READ-ONLY IN FRAME gBestellPreise = TRUE.
  186. /* SETTINGS FOR FILL-IN F_Artikel IN FRAME gBestellPreise
  187. 5 */
  188. ASSIGN
  189. F_Artikel:READ-ONLY IN FRAME gBestellPreise = TRUE.
  190. /* SETTINGS FOR FILL-IN F_Bestand IN FRAME gBestellPreise
  191. 5 */
  192. ASSIGN
  193. F_Bestand:READ-ONLY IN FRAME gBestellPreise = TRUE.
  194. /* SETTINGS FOR FILL-IN F_Bestand_Am IN FRAME gBestellPreise
  195. 5 */
  196. ASSIGN
  197. F_Bestand_Am:READ-ONLY IN FRAME gBestellPreise = TRUE.
  198. ASSIGN
  199. F_Bestellung:READ-ONLY IN FRAME gBestellPreise = TRUE.
  200. /* SETTINGS FOR FILL-IN F_Bestell_Nr IN FRAME gBestellPreise
  201. 1 */
  202. /* SETTINGS FOR FILL-IN F_DEP IN FRAME gBestellPreise
  203. 5 */
  204. ASSIGN
  205. F_DEP:READ-ONLY IN FRAME gBestellPreise = TRUE.
  206. /* SETTINGS FOR FILL-IN F_DEP_Am IN FRAME gBestellPreise
  207. 5 */
  208. ASSIGN
  209. F_DEP_Am:READ-ONLY IN FRAME gBestellPreise = TRUE.
  210. /* SETTINGS FOR FILL-IN F_Faktor IN FRAME gBestellPreise
  211. 1 */
  212. ASSIGN
  213. F_Faktor:READ-ONLY IN FRAME gBestellPreise = TRUE.
  214. /* SETTINGS FOR FILL-IN F_FRW IN FRAME gBestellPreise
  215. 1 */
  216. ASSIGN
  217. F_FRW:READ-ONLY IN FRAME gBestellPreise = TRUE.
  218. /* SETTINGS FOR FILL-IN F_Korrektur IN FRAME gBestellPreise
  219. 5 */
  220. ASSIGN
  221. F_Korrektur:READ-ONLY IN FRAME gBestellPreise = TRUE.
  222. /* SETTINGS FOR FILL-IN F_Kurs IN FRAME gBestellPreise
  223. 1 */
  224. /* _RUN-TIME-ATTRIBUTES-END */
  225. &ANALYZE-RESUME
  226. /* Setting information for Queries and Browse Widgets fields */
  227. &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gBestellPreise
  228. /* Query rebuild information for DIALOG-BOX gBestellPreise
  229. _Options = "SHARE-LOCK"
  230. _Query is NOT OPENED
  231. */ /* DIALOG-BOX gBestellPreise */
  232. &ANALYZE-RESUME
  233. /* ************************ Control Triggers ************************ */
  234. &Scoped-define SELF-NAME gBestellPreise
  235. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gBestellPreise gBestellPreise
  236. ON END-ERROR OF FRAME gBestellPreise /* Preise/Rechnung der Bestellung einbuchen */
  237. DO:
  238. RUN ENDE.
  239. RETURN NO-APPLY.
  240. END.
  241. /* _UIB-CODE-BLOCK-END */
  242. &ANALYZE-RESUME
  243. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gBestellPreise gBestellPreise
  244. ON WINDOW-CLOSE OF FRAME gBestellPreise /* Preise/Rechnung der Bestellung einbuchen */
  245. DO:
  246. RUN ENDE.
  247. RETURN NO-APPLY.
  248. END.
  249. /* _UIB-CODE-BLOCK-END */
  250. &ANALYZE-RESUME
  251. &Scoped-define SELF-NAME Btn_Cancel
  252. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Cancel gBestellPreise
  253. ON CHOOSE OF Btn_Cancel IN FRAME gBestellPreise /* abbrechen */
  254. DO:
  255. RUN ENDE.
  256. RETURN NO-APPLY.
  257. END.
  258. /* _UIB-CODE-BLOCK-END */
  259. &ANALYZE-RESUME
  260. &Scoped-define SELF-NAME Btn_OK
  261. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK gBestellPreise
  262. ON CHOOSE OF Btn_OK IN FRAME gBestellPreise /* OK */
  263. DO:
  264. RUN VERBUCHEN.
  265. IF RETURN-VALUE = '' THEN btnOK = TRUE.
  266. RUN ENDE.
  267. RETURN NO-APPLY.
  268. END.
  269. /* _UIB-CODE-BLOCK-END */
  270. &ANALYZE-RESUME
  271. &Scoped-define SELF-NAME E_Text
  272. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL E_Text gBestellPreise
  273. ON ENTRY OF E_Text IN FRAME gBestellPreise
  274. DO:
  275. APPLY 'TAB' TO SELF.
  276. RETURN NO-APPLY.
  277. END.
  278. /* _UIB-CODE-BLOCK-END */
  279. &ANALYZE-RESUME
  280. &UNDEFINE SELF-NAME
  281. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gBestellPreise
  282. /* *************************** Main Block *************************** */
  283. { incl/dlgmainblock.i }
  284. {src/adm2/dialogmn.i}
  285. /* _UIB-CODE-BLOCK-END */
  286. &ANALYZE-RESUME
  287. /* ********************** Internal Procedures *********************** */
  288. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects gBestellPreise _ADM-CREATE-OBJECTS
  289. PROCEDURE adm-create-objects :
  290. /*------------------------------------------------------------------------------
  291. Purpose: Create handles for all SmartObjects used in this procedure.
  292. After SmartObjects are initialized, then SmartLinks are added.
  293. Parameters: <none>
  294. ------------------------------------------------------------------------------*/
  295. END PROCEDURE.
  296. /* _UIB-CODE-BLOCK-END */
  297. &ANALYZE-RESUME
  298. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI gBestellPreise _DEFAULT-DISABLE
  299. PROCEDURE disable_UI :
  300. /*------------------------------------------------------------------------------
  301. Purpose: DISABLE the User Interface
  302. Parameters: <none>
  303. Notes: Here we clean-up the user-interface by deleting
  304. dynamic widgets we have created and/or hide
  305. frames. This procedure is usually called when
  306. we are ready to "clean-up" after running.
  307. ------------------------------------------------------------------------------*/
  308. /* Hide all frames. */
  309. HIDE FRAME gBestellPreise.
  310. END PROCEDURE.
  311. /* _UIB-CODE-BLOCK-END */
  312. &ANALYZE-RESUME
  313. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gBestellPreise
  314. PROCEDURE enableObject :
  315. /*------------------------------------------------------------------------------*/
  316. /* Purpose: Super Override */
  317. /* Parameters: */
  318. /* Notes: */
  319. /*------------------------------------------------------------------------------*/
  320. FIND FIRST Waehrung NO-LOCK
  321. WHERE Waehrung.Firma = iohtBesko::Firma
  322. AND Waehrung.Frw = iohtBesko::Frw NO-ERROR.
  323. F_Frw = Waehrung.Bez.
  324. F_Kurs = Waehrung.Kurs.
  325. F_Faktor = Waehrung.Faktor.
  326. F_Bestell_Nr = STRING(iohtBesko::Besnr).
  327. FIND Adresse NO-LOCK
  328. WHERE Adresse.FIrma = AdFirma
  329. AND Adresse.Knr = iohtBesko::Knr NO-ERROR.
  330. F_Bestellung = STRING(Adresse.Knr,'999999 ') + Adresse.Anzeig_Br.
  331. E_Text = 'Achtung! Haben Sie alle Preise kontrolliert/mutiert ?' + CHR(10)
  332. + 'Anschliessend können keine Mutationen mehr gemacht werden!'.
  333. { incl/dlgenableobject.i }
  334. END PROCEDURE.
  335. /* _UIB-CODE-BLOCK-END */
  336. &ANALYZE-RESUME
  337. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gBestellPreise _DEFAULT-ENABLE
  338. PROCEDURE enable_UI :
  339. /*------------------------------------------------------------------------------
  340. Purpose: ENABLE the User Interface
  341. Parameters: <none>
  342. Notes: Here we display/view/enable the widgets in the
  343. user-interface. In addition, OPEN all queries
  344. associated with each FRAME and BROWSE.
  345. These statements here are based on the "Other
  346. Settings" section of the widget Property Sheets.
  347. ------------------------------------------------------------------------------*/
  348. DISPLAY E_Text F_Bestell_Nr F_FRW F_Kurs F_Faktor F_Bestellung F_Artikel
  349. F_Bestand F_Bestand_Am F_DEP F_DEP_Am F_Korrektur
  350. WITH FRAME gBestellPreise.
  351. ENABLE RECT-2 E_Text F_Bestell_Nr F_FRW F_Kurs F_Faktor F_Bestellung
  352. F_Artikel F_Bestand F_Bestand_Am F_DEP F_DEP_Am F_Korrektur Btn_OK
  353. Btn_Cancel
  354. WITH FRAME gBestellPreise.
  355. VIEW FRAME gBestellPreise.
  356. {&OPEN-BROWSERS-IN-QUERY-gBestellPreise}
  357. END PROCEDURE.
  358. /* _UIB-CODE-BLOCK-END */
  359. &ANALYZE-RESUME
  360. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gBestellPreise
  361. PROCEDURE ENDE :
  362. /*------------------------------------------------------------------------------*/
  363. /* Purpose: */
  364. /* Parameters: <none> */
  365. /* Notes: */
  366. /*------------------------------------------------------------------------------*/
  367. IF btnOK THEN
  368. DO:
  369. iohtBesko::lOK = TRUE.
  370. END.
  371. { incl/dlgende.i }
  372. END PROCEDURE.
  373. /* _UIB-CODE-BLOCK-END */
  374. &ANALYZE-RESUME
  375. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VERBUCHEN gBestellPreise
  376. PROCEDURE VERBUCHEN :
  377. /*------------------------------------------------------------------------------*/
  378. /* Purpose: */
  379. /* Parameters: <none> */
  380. /* Notes: */
  381. /*------------------------------------------------------------------------------*/
  382. DEFINE VARIABLE lOK AS LOGICAL NO-UNDO INIT FALSE.
  383. REPEAT TRANSACTION ON ERROR UNDO, LEAVE WITH FRAME {&FRAME-NAME}:
  384. Btn_OK :SENSITIVE = FALSE.
  385. Btn_Cancel:SENSITIVE = FALSE.
  386. ASSIGN {&List-6}.
  387. ASSIGN {&List-1}.
  388. IF F_Kurs = 0 THEN F_Kurs = 1.0.
  389. IF F_Faktor = 0 THEN F_Faktor = 1.
  390. FIND Steuer NO-LOCK
  391. WHERE Steuer.Firma = Firma NO-ERROR.
  392. FIND Besko NO-LOCK
  393. WHERE Besko.Firma = iohtBesko::Firma
  394. AND Besko.Besnr = iohtBesko::Besnr.
  395. nKorrektur = 0.
  396. FOR EACH Besze OF Besko:
  397. IF Besze.Artnr = 0 THEN NEXT.
  398. IF Besze.MGeli < 1 THEN NEXT.
  399. IF Besze.Verbucht = TRUE THEN NEXT.
  400. FIND Artst OF Besze.
  401. VBestand = Artst.Bestand.
  402. nDEP = 0.
  403. IF nDEP = 0 THEN nDEP = Artst.DEP.
  404. IF nDEP = 0 THEN nDEP = Artst.LEP.
  405. IF nDEP = 0 THEN nDEP = Artst.Listen_EP.
  406. IF Besko.FRW <> Steuer.Fwc03 THEN
  407. DO:
  408. IF F_Kurs <> Besze.Kurs THEN
  409. DO:
  410. Besze.Kurs = F_Kurs.
  411. Besze.Faktor = F_Faktor.
  412. nRundbetr = Besze.S_Preis_FRW * Besze.Kurs / Besze.Faktor.
  413. Besze.S_Preis = nRundbetr.
  414. nRundbetr = nRundbetr * ((100 - Besze.Rabatt) / 100) * ((100 - Besze.ZusRab) / 100) * (1 + (Besze.Spesen / 100)).
  415. Besze.Preis = nRundbetr.
  416. END.
  417. END.
  418. FIND ArtLief USE-INDEX ArtLief-k2
  419. WHERE ArtLief.Firma = Besze.Firma
  420. AND ArtLief.Knr = Besko.Knr
  421. AND ArtLief.Artnr = Besze.Artnr
  422. AND ArtLief.Inhalt = Besze.Inhalt
  423. AND ArtLief.Jahr = Besze.Jahr NO-ERROR.
  424. IF Besze.Preis > 0 THEN
  425. DO:
  426. IF nDEP = 0 THEN nDEP = Besze.Preis * F_Kurs / F_Faktor.
  427. nEpCHF = Besze.Preis * F_Kurs / F_Faktor.
  428. END.
  429. ELSE
  430. DO:
  431. IF nDEP = 0 THEN nDEP = ArtLief.S_Preis.
  432. nEpCHF = ArtLief.S_Preis.
  433. END.
  434. FIND Liefst USE-INDEX Liefst-k1
  435. WHERE Liefst.Firma = Besze.Firma
  436. AND Liefst.Knr = Besko.Knr NO-ERROR.
  437. F_Artikel = STRING(Besze.Artnr ,"999999/")
  438. + STRING(Besze.Inhalt ,"9999/")
  439. + STRING(Besze.Jahr ,"9999 ")
  440. + Artst.Bez.
  441. F_Bestand = STRING(VBestand ,"->>>,>>>,>>>,>>9").
  442. F_DEP = STRING(nDEP ,"zzz,zzz,zz9.9999").
  443. F_Bestand_Am = ''.
  444. F_DEP_Am = ''.
  445. DISPLAY {&List-5} WITH FRAME {&FRAME-NAME}.
  446. FOR EACH Artbw USE-INDEX Artbw-k2
  447. WHERE Artbw.Firma = Besze.Firma
  448. AND Artbw.Artnr = Besze.Artnr
  449. AND Artbw.Inhalt = Besze.Inhalt
  450. AND Artbw.Jahr = Besze.Jahr
  451. AND Artbw.Datum > Besko.Buch_Datum
  452. AND Artbw.Trnr <> Besze.Trnr
  453. AND Artbw.Lager = Besze.Lager NO-LOCK:
  454. IF Artbw.Tr_Art > 0 AND Artbw.Tr_Art < 11
  455. THEN VBestand = VBestand + Artbw.Menge.
  456. IF Artbw.Tr_Art > 10 AND Artbw.Tr_Art < 21
  457. THEN VBestand = VBestand - Artbw.Menge.
  458. END.
  459. F_Bestand_Am = STRING(VBestand ,"->>>,>>>,>>>,>>9").
  460. WBestand = 0.
  461. WEingang = 0.
  462. TBestand = 0.
  463. TBestand = VBestand + Besze.MGeli.
  464. IF VBestand < 0 THEN VBestand = 0.
  465. WBestand = VBestand * nDEP.
  466. WEingang = Besze.MGeli * nEpCHF.
  467. DO WHILE TRUE:
  468. IF TBestand < 0 THEN
  469. DO:
  470. nDEP = nEpCHF.
  471. LEAVE.
  472. END.
  473. IF VBestand = 0 THEN
  474. DO:
  475. nDEP = nEpCHF.
  476. LEAVE.
  477. END.
  478. nRundbetr = (WBestand + WEingang) / TBestand.
  479. nDEP = nRundbetr.
  480. LEAVE.
  481. END.
  482. F_DEP_Am = STRING(nDEP,"zzz,zzz,zz9.9999").
  483. FOR EACH Artbw USE-INDEX Artbw-k2
  484. WHERE Artbw.Firma = Besze.Firma
  485. AND Artbw.Artnr = Besze.Artnr
  486. AND Artbw.Inhalt = Besze.Inhalt
  487. AND Artbw.Jahr = Besze.Jahr
  488. AND Artbw.Datum > Besko.Buch_Datum
  489. AND Artbw.Tr_Art > 0
  490. AND Artbw.Tr_Art < 11
  491. AND Artbw.Trnr <> Besze.Trnr
  492. AND Artbw.Menge <> 0
  493. AND Artbw.Lager = Besze.Lager:
  494. IF Artbw.EP = nDEP THEN NEXT.
  495. IF Artbw.Faknr = 0 THEN
  496. DO:
  497. Artbw.EP = nDEP.
  498. NEXT.
  499. END.
  500. VJJ = YEAR (Artbw.Fak_Dat).
  501. VMM = MONTH(Artbw.Fak_Dat).
  502. nRundbetr = (Artbw.Menge * nDEP) - (Artbw.Menge * Artbw.Ep).
  503. nKorrektur = nKorrektur + nRundbetr.
  504. FIND DeArUms USE-INDEX DeArUms-k1
  505. WHERE DeArUms.Firma = Firma
  506. AND DeArUms.Jahr = VJJ
  507. AND DeArUms.Knr = Besko.Knr
  508. AND DeArUms.Artnr = Besze.Artnr
  509. AND DeArUms.Inhalt = Besze.Inhalt
  510. AND DeArUms.Jahrg = Besze.Jahr NO-ERROR.
  511. IF AVAILABLE DeArUms THEN
  512. DO:
  513. DeArUms.Ep_Kum = DeArUms.Ep_Kum + nRundbetr.
  514. DeArUms.Ep_Mon[VMM] = DeArUms.Ep_Mon[VMM] + nRundbetr.
  515. END.
  516. FIND ArtUms USE-INDEX ArtUms-k1
  517. WHERE ArtUms.Firma = Firma
  518. AND ArtUms.Jahr = VJJ
  519. AND ArtUms.Artnr = Besze.Artnr
  520. AND ArtUms.Inhalt = Besze.Inhalt
  521. AND ArtUms.Jahrg = Besze.Jahr NO-ERROR.
  522. IF AVAILABLE ArtUms THEN
  523. DO:
  524. ArtUms.Ep_Kum = ArtUms.Ep_Kum + nRundbetr.
  525. ArtUms.Ep_Mon[VMM] = ArtUms.Ep_Mon[VMM] + nRundbetr.
  526. END.
  527. FIND DebUms USE-INDEX DebUms-k1
  528. WHERE DebUms.Firma = Firma
  529. AND DebUms.Jahr = VJJ
  530. AND DebUms.Knr = Besko.Knr
  531. AND DebUms.Ums_Grp = 999 NO-ERROR.
  532. IF AVAILABLE DebUms THEN
  533. DO:
  534. DebUms.Ep_Kum = DebUms.Ep_Kum + nRundbetr.
  535. DebUms.Ep_Mon[VMM] = DebUms.Ep_Mon[VMM] + nRundbetr.
  536. END.
  537. Artbw.Ep = nDEP.
  538. END.
  539. F_Korrektur = STRING(nKorrektur,"->>>,>>>,>>>,>>9").
  540. DISPLAY {&List-5} WITH FRAME {&FRAME-NAME}.
  541. FOR EACH Aufze USE-INDEX Aufze-k2
  542. WHERE Aufze.Firma = Besze.Firma
  543. AND Aufze.Artnr = Besze.Artnr
  544. AND Aufze.Inhalt = Besze.Inhalt
  545. AND Aufze.Jahr = Besze.Jahr ,
  546. FIRST Aufko USE-INDEX Aufko-k1
  547. WHERE Aufko.Firma = Aufze.Firma
  548. AND Aufko.Aufnr = Aufze.Aufnr
  549. AND Aufko.Lief_Datum > Besko.Buch_Datum NO-LOCK :
  550. IF Aufze.EP = nDEP THEN NEXT.
  551. Aufze.EP = nDEP.
  552. END.
  553. IF Besze.Trnr = 0 THEN
  554. DO:
  555. FIND FIRST Artbw USE-INDEX Artbw-k4
  556. WHERE Artbw.Firma = Besze.Firma
  557. AND Artbw.Aufnr = Besze.Besnr
  558. AND Artbw.Artnr = Besze.Artnr
  559. AND Artbw.Inhalt = Besze.Inhalt
  560. AND Artbw.Jahr = Besze.Jahr
  561. AND Artbw.Knr = Besko.Knr
  562. AND Artbw.Tr_Art = 11
  563. AND Artbw.Menge = Besze.MGeli
  564. AND Artbw.Lager = Besze.Lager NO-ERROR.
  565. IF AVAILABLE Artbw THEN Besze.Trnr = Artbw.Trnr.
  566. END.
  567. IF Besze.Trnr > 0 THEN
  568. DO:
  569. F_Bestell_Nr = TRIM(REPLACE(F_Bestell_Nr, ' ', '')).
  570. cFaknr = ''.
  571. DO ii = 1 TO LENGTH(F_Bestell_Nr):
  572. IF SUBSTRING(F_Bestell_Nr, ii,01) < '0' THEN NEXT.
  573. IF SUBSTRING(F_Bestell_Nr, ii,01) > '9' THEN NEXT.
  574. cFaknr = cFaknr + SUBSTRING(F_Bestell_Nr,ii,01).
  575. END.
  576. IF LENGTH(cFaknr) > 6 THEN
  577. DO:
  578. ii = LENGTH(cFaknr) - 6 + 1.
  579. cFaknr = SUBSTRING(cFaknr,ii).
  580. END.
  581. iFaknr = INTEGER(cFaknr) NO-ERROR.
  582. FIND Artbw USE-INDEX Artbw-k1
  583. WHERE Artbw.Firma = Besze.Firma
  584. AND Artbw.Trnr = Besze.Trnr.
  585. ASSIGN
  586. Artbw.Bez1 = Besze.Bez1
  587. Artbw.Bez2 = Besze.Bez2
  588. Artbw.Knr = Besko.Knr
  589. Artbw.Menge = Besze.MGel
  590. Artbw.Alk_Gehalt = Artst.Alk_Gehalt
  591. Artbw.Aktion = Besze.Aktion
  592. Artbw.Lager = Besze.Lager
  593. Artbw.Preis = Besze.Preis
  594. Artbw.Bru_Betr = Besze.Preis * Besze.MGeli
  595. Artbw.Net_Betr = Besze.Preis * Besze.MGeli
  596. Artbw.FRW = Besze.FRW
  597. Artbw.Faktor = F_Faktor
  598. Artbw.Kurs = F_Kurs
  599. Artbw.Ep = nDEP
  600. Artbw.Lag_Buch = TRUE
  601. Artbw.Faknr = iFaknr
  602. Artbw.Fak_Dat = (IF Besko.Buch_Datum <> ?
  603. THEN Besko.Buch_Datum
  604. ELSE Artbw.Datum).
  605. END.
  606. Besze.L_EP = Artst.LEP.
  607. Besze.Verbucht = TRUE.
  608. IF NOT Besze.Aktion THEN
  609. DO:
  610. IF AVAILABLE ArtLief THEN
  611. DO:
  612. ASSIGN
  613. ArtLief.S_Preis_FRW = Besze.S_Preis_FRW
  614. ArtLief.S_Preis = Besze.S_Preis
  615. ArtLief.L_EP_FRW = Besze.Preis
  616. ArtLief.L_EP = Besze.Preis
  617. / Besze.Faktor
  618. * Besze.Kurs
  619. ArtLief.L_Rabatt = 100 - ((100 * (100 - Besze.Rabatt) / 100) * ((100 - Besze.ZusRab) / 100))
  620. ArtLief.Rabatt = Besze.Rabatt
  621. ArtLief.ZusRab = Besze.ZusRab.
  622. IF Besze.S_Artnr <> '' THEN ArtLief.S_Artnr = Besze.S_Artnr.
  623. END.
  624. ASSIGN
  625. Artst.LEP = nEpCHF.
  626. END.
  627. ASSIGN
  628. Artst.DEP = nDEP.
  629. END.
  630. Btn_OK :SENSITIVE = TRUE.
  631. Btn_Cancel:SENSITIVE = TRUE.
  632. lOK = TRUE.
  633. LEAVE.
  634. END.
  635. IF lOK THEN
  636. DO:
  637. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  638. rBesko = RECID(Besko).
  639. FIND Besko WHERE RECID(Besko) = rBesko.
  640. Besko.Verbucht = TRUE.
  641. Besko.Bestell_Nr = F_Bestell_Nr.
  642. Besko.Kurs = F_Kurs.
  643. RELEASE Besko.
  644. iohtBesko::lOK = lOK.
  645. LEAVE.
  646. END.
  647. END.
  648. END PROCEDURE.
  649. /* _UIB-CODE-BLOCK-END */
  650. &ANALYZE-RESUME