Advertisement
Guest User

Untitled

a guest
Aug 30th, 2018
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Progress 14.46 KB | None | 0 0
  1. &SCOPED-DEFINE fmrow 11
  2. {abdeclre.i}
  3. {timeproc.i}
  4.  
  5. {zzpifrm2a.i &NEW = NEW &ROW = {&fmrow}}
  6. DEF INPUT PARAM imode   AS CHAR.
  7. DEF INPUT PARAM ipart   AS CHAR.
  8. DEF INPUT PARAM ikey    AS CHAR.
  9.  
  10. DEF QUERY q1 FOR zzpi_mstr, indeks.
  11.  
  12. DEF VAR rep           AS LOG.
  13. DEF VAR rep_id        AS ROWID.
  14. DEF VAR v_added_id    AS INT.
  15. DEF VAR v_key         AS LOG          FORMAT 'Tak/Nie' INITIAL TRUE. /*bo 04.04.2014*/.
  16. DEF VAR v_part        LIKE zzpi_part.
  17. DEF VAR v_status      LIKE zzpi_status.
  18. DEF VAR v_closed      LIKE mfc_logical.
  19. DEF VAR v_curr        LIKE zzpi_curr.
  20. DEF VAR v_ass         LIKE mfc_logical.
  21. DEF VAR v_userid      LIKE usr_userid.
  22. DEF VAR v_mrk_gr      LIKE zzpi_mrk_gr.
  23. DEF VAR v_ostat       AS CHAR         EXTENT 2.
  24.  
  25. DEF FRAME ffltr
  26.     v_part                                      COLON 10
  27.     v_mrk_gr                                    COLON 10
  28.     v_curr                                      COLON 10
  29.     v_closed    LABEL "Tylko otwarte"           COLON 25
  30.     v_ass       LABEL "Tylko moje"              COLON 25
  31.     v_key       LABEL "Tylko cenniki specjalne" COLON 25
  32. WITH SIDE-LABELS OVERLAY VIEW-AS DIALOG-BOX.
  33.  
  34. FUNCTION qty_site_loc RETURNS CHARACTER (INPUT ip_part AS CHAR ,INPUT ip_site AS CHAR,INPUT ip_loc AS CHAR).
  35.  
  36.     FIND FIRST x1ld_det WHERE x1ld_det.x1ld_domain  = GLOBAL_DOMAIN
  37.                           AND x1ld_det.x1ld_part    = ip_part
  38.                           AND x1ld_det.x1ld_site    = ip_site
  39.                           AND x1ld_det.x1ld_loc     = ip_loc
  40.                           NO-LOCK NO-ERROR.
  41.                          
  42.     IF AVAILABLE x1ld_det THEN RETURN " " + ip_site + ':' + STRING(x1ld_det.x1ld_qty_oh) + "|" + STRING(x1ld_det.x1ld_qty_all).
  43.                           ELSE RETURN " " + ip_site + ":-|-".                                                                  
  44.                          
  45. END FUNCTION.
  46.  
  47. v_userid = '*' + global_userid + '*'.
  48. IF imode = "ALL"
  49. THEN DO:
  50.     {p_load.i ""v_part"" 'C' v_part ''}
  51.     {p_load.i ""v_curr"" 'C' v_curr ''}
  52.     {p_load.i ""v_closed"" 'B' v_closed ''}
  53.     {p_load.i ""v_ass"" 'B' v_ass ''}
  54.     {p_load.i ""v_mrk_gr"" 'C' v_mrk_gr ''}
  55. END.
  56. RUN open_b1.
  57. RUN show_b1.
  58.  
  59.  
  60. PROCEDURE open_b1.
  61.  
  62.     IF imode = "ALL"
  63.     THEN DO:
  64.    
  65.         FIND FIRST zzpi_mstr WHERE zzpi_mstr.zzpi_domain = global_domain
  66.                              AND   zzpi_mstr.zzpi_part BEGINS v_part
  67.                              AND ( v_closed = FALSE OR
  68.                                    v_closed = TRUE  AND zzpi_mstr.zzpi_status = '' )
  69.                              AND ( v_curr   = ''    OR
  70.                                    zzpi_mstr.zzpi_curr = v_curr )
  71.                              AND ( v_key    = FALSE OR
  72.                                    v_key    = TRUE  AND zzpi_mstr.zzpi_key = ikey )
  73.                              AND (zzpi_mrk_gr = v_mrk_gr OR v_mrk_gr = "")
  74.                              NO-LOCK NO-ERROR.
  75.                              
  76.         IF AVAILABLE zzpi_mstr AND v_key
  77.         THEN DO:
  78.        
  79.             OPEN QUERY q1   FOR EACH zzpi_mstr WHERE zzpi_mstr.zzpi_domain = global_domain
  80.                                                  AND zzpi_mstr.zzpi_part BEGINS v_part
  81.                                                  AND ( v_closed = FALSE OR
  82.                                                        v_closed = TRUE  AND zzpi_mstr.zzpi_status = "")
  83.                                                  AND ( v_curr   = "" OR zzpi_mstr.zzpi_curr = v_curr )
  84.                                                  AND ( v_key    = FALSE OR
  85.                                                        v_key    = TRUE  AND zzpi_mstr.zzpi_key = ikey ) /*bo 04.04.2014*/
  86.                                                  AND (zzpi_mrk_gr = v_mrk_gr OR v_mrk_gr = ""),
  87.                                    EACH indeks WHERE indeks.ind_indeks = zzpi_mstr.zzpi_part
  88.                                                  AND ( v_ass    = TRUE  AND indeks.ind_pm MATCHES v_userid OR
  89.                                                        v_ass    = FALSE )
  90.                                                   BY zzpi_mstr.zzpi_part
  91.                                                   BY zzpi_mstr.zzpi_beg_tstamp DESC
  92.                                                   BY zzpi_mstr.zzpi_status
  93.                                                   BY zzpi_mstr.zzpi_end_tstamp DESC
  94.                                                   BY zzpi_mstr.zzpi_domain.
  95.         END.
  96.         ELSE DO:
  97.        
  98.             IF v_key THEN {abmsg.i "'Nie znaleziono cennika ' + ikey + ' dla podanych parametrow!'" 4}.
  99.             OPEN QUERY q1   FOR EACH zzpi_mstr WHERE zzpi_mstr.zzpi_domain = global_domain
  100.                                                  AND zzpi_mstr.zzpi_part BEGINS v_part
  101.                                                  AND ( v_closed = FALSE OR
  102.                                                        v_closed = TRUE  AND zzpi_mstr.zzpi_status = '' )
  103.                                                  AND ( v_curr = ''      OR  zzpi_mstr.zzpi_curr = v_curr )
  104.                                                  AND ( v_key = FALSE    OR
  105.                                                        v_key = TRUE     AND zzpi_mstr.zzpi_key = '' ), /*bo 04.04.2014*/
  106.                                    EACH indeks WHERE indeks.ind_indeks = zzpi_mstr.zzpi_part
  107.                                                  AND ( v_ass = TRUE AND indeks.ind_pm MATCHES v_userid OR
  108.                                                        v_ass = FALSE )
  109.                                                   BY zzpi_mstr.zzpi_part
  110.                                                   BY zzpi_mstr.zzpi_beg_tstamp DESC
  111.                                                   BY zzpi_mstr.zzpi_status
  112.                                                   BY zzpi_mstr.zzpi_end_tstamp DESC
  113.                                                   BY zzpi_mstr.zzpi_domain .
  114.         END.
  115.     END.
  116.     ELSE IF imode = "ONE"
  117.     THEN DO:
  118.    
  119.         OPEN QUERY q1   FOR EACH zzpi_mstr WHERE zzpi_mstr.zzpi_domain = global_domain
  120.                                              AND zzpi_mstr.zzpi_part   = ipart
  121.                                              AND ( v_closed = FALSE OR
  122.                                                    v_closed = TRUE  AND zzpi_mstr.zzpi_status = '' )
  123.                                              AND ( v_curr   = ''    OR  zzpi_mstr.zzpi_curr = v_curr )
  124.                                              AND zzpi_mstr.zzpi_key = '',
  125.                                EACH indeks WHERE indeks.ind_indeks  = zzpi_mstr.zzpi_part
  126.                                               BY zzpi_mstr.zzpi_part
  127.                                               BY zzpi_mstr.zzpi_beg_tstamp DESC
  128.                                               BY zzpi_mstr.zzpi_status
  129.                                               BY zzpi_mstr.zzpi_end_tstamp DESC
  130.                                               BY zzpi_mstr.zzpi_domain .
  131.     END.
  132.    
  133. END PROCEDURE.
  134.  
  135.  
  136. PROCEDURE show_b1.
  137.  
  138.     DEF BROWSE b1 QUERY q1 NO-LOCK
  139.     DISPLAY zzpi_mstr.zzpi_part     FORMAT 'x(16)'      LABEL "Indeks"
  140.             zzpi_mstr.zzpi_key      FORMAT 'x(1)'       LABEL 'K'
  141.             zzpi_mstr.zzpi_status   FORMAT 'x(6)'
  142.             zzpi_mstr.zzpi_beg_date                     LABEL "Start"
  143.             zzpi_mstr.zzpi_end_date                     LABEL "Stop"
  144.             zzpi_mstr.zzpi_plan_end                     LABEL "Plan.zak"
  145.             zzpi_mstr.zzpi_base     FORMAT '>>>9.99'    LABEL 'Base'
  146.             zzpi_mstr.zzpi_min      FORMAT '>>>9.99'    LABEL 'Min'
  147.             zzpi_mstr.zzpi_zero     FORMAT '>>>9.99'    LABEL 'Zero'
  148.     WITH 5 DOWN NO-BOX WIDTH 78.
  149.    
  150.     ENABLE b1 WITH FRAME f1 TITLE STRING('Cennik ' + ikey) WITH ROW 2.
  151.     b1:SET-REPOSITIONED-ROW (3, "CONDITIONAL").
  152.    
  153.    
  154.     ON VALUE-CHANGED OF b1 RUN detail_b1.
  155.    
  156.     ON F1 OF b1 DO:
  157.    
  158.         RUN add_b1.
  159.         IF v_added_id > 0
  160.         THEN DO:
  161.             RUN open_b1.
  162.             RUN reposition_b1.
  163.         END.
  164.         APPLY "VALUE-CHANGED" TO b1 IN FRAME f1.
  165.        
  166.     END. /* ON F1 OF b1 DO: */
  167.    
  168.     ON F3 OF b1 DO:
  169.    
  170.         IF AVAILABLE zzpi_mstr
  171.         THEN DO:
  172.        
  173.             {gprun.i ""pi_azzpimod.p"" "({&fmrow},zzpi_mstr.zzpi_id, '', 0, 0, 0, '', global_userid, 0, output v_added_id)"}
  174.          
  175.             IF v_added_id > 0
  176.             THEN DO:
  177.            
  178.                 FIND FIRST bzzpi_mstr WHERE bzzpi_mstr.zzpi_domain = global_domain
  179.                                         AND bzzpi_mstr.zzpi_id     = v_added_id
  180.                                         NO-LOCK NO-ERROR.
  181.                
  182.                     IF  AVAILABLE bzzpi_mstr AND ikey = bzzpi_mstr.zzpi_key
  183.                     THEN DO:
  184.                         rep     = TRUE.
  185.                         rep_id  = ROWID (bzzpi_mstr).
  186.                     END.
  187.                    
  188.                     RUN open_b1.
  189.                     RUN reposition_b1.
  190.                
  191.             END.
  192.             b1:REFRESH().
  193.         END.
  194.         APPLY "VALUE-CHANGED" TO b1 IN FRAME f1.
  195.        
  196.     END. /* ON F3 OF b1 DO: */
  197.    
  198.     ON Enter OF b1 DO:
  199.    
  200.         IF AVAILABLE zzpi_mstr THEN {gprun.i ""pi_zzpidetbr.p"" "(zzpi_mstr.zzpi_id, '')"}.
  201.         APPLY "VALUE-CHANGED" TO b1 IN FRAME f1.
  202.        
  203.     END. /* ON Enter OF b1 DO: */
  204.    
  205.     ON H,h OF b1 DO:
  206.    
  207.         IF AVAILABLE zzpi_mstr THEN {gprun.i ""pi_zzpidetbr.p"" "(0, zzpi_mstr.zzpi_part)"}.
  208.         APPLY "VALUE-CHANGED" TO b1 IN FRAME f1.
  209.        
  210.     END. /* ON H,h OF b1 DO: */
  211.    
  212.     ON F5 OF b1 DO:
  213.    
  214.         IF AVAILABLE zzpi_mstr
  215.         THEN DO:
  216.            
  217.             {gprun.i ""pi_azzpicls.p"" "({&fmrow},zzpi_mstr.zzpi_id, 'MANUAL', OUTPUT v_ostat)"}
  218.             MESSAGE v_ostat[1] ":" v_ostat[2].
  219.            
  220.             IF GLOBAL_USERID = "ainf023"
  221.             THEN DO:
  222.                 MESSAGE "Usuwasz?" VIEW-AS ALERT-BOX QUESTION BUTTONS YES-NO TITLE "Uwaga" UPDATE lv_choice AS LOG.
  223.                 IF lv_choice THEN RUN del_b1.
  224.             END.
  225.             b1:REFRESH().
  226.            
  227.         END.
  228.         APPLY "VALUE-CHANGED" TO b1 IN FRAME f1.
  229.        
  230.     END. /*  ON F5 OF b1 DO: */
  231.    
  232.     ON R,r OF b1 DO:
  233.    
  234.         IF AVAILABLE zzpi_mstr
  235.         THEN
  236.             ASSIGN  rep     = TRUE
  237.                     rep_id  = ROWID (zzpi_mstr). /*bzzpi_mstr*/
  238.         RUN open_b1.
  239.         RUN reposition_b1.
  240.        
  241.         b1:REFRESH().
  242.         APPLY "VALUE-CHANGED" TO b1 IN FRAME f1.
  243.        
  244.     END. /* ON R,r OF b1 DO: */
  245.    
  246.     ON Y,Y OF b1 DO:
  247.    
  248.         IF AVAILABLE zzpi_mstr THEN {gprun.i ""pi_yypidsp.p"" "(zzpi_mstr.zzpi_id)"}.
  249.         APPLY "VALUE-CHANGED" TO b1 IN FRAME f1.
  250.        
  251.     END. /* ON Y,y OF b1 DO: */
  252.    
  253.     ON F7 OF b1 DO:
  254.    
  255.         RUN filtr_b1(OUTPUT v_ok).
  256.         IF v_ok THEN RUN open_b1.
  257.         APPLY "VALUE-CHANGED" TO b1 IN FRAME f1.
  258.        
  259.     END. /* ON F7 OF b1 DO: */
  260.    
  261.     APPLY "VALUE-CHANGED" TO b1 IN FRAME f1.
  262.     WAIT-FOR CLOSE OF CURRENT-WINDOW.
  263.    
  264. END PROCEDURE.
  265.  
  266.  
  267. PROCEDURE detail_b1.
  268.  
  269.     MESSAGE "F1 - dodanie cennika | F3 - modyfikuj | F5 - zamknij cennik | F7 - wyszukaj | Enter - biezacy cennik | H - historia dla indeksu ".
  270.     FIND FIRST bzzpi_mstr WHERE ROWID (bzzpi_mstr) = ROWID (zzpi_mstr) NO-LOCK NO-ERROR.
  271.    
  272.     IF AVAILABLE bzzpi_mstr
  273.     THEN DO: {zzpidsp2a.i} END.
  274.     ELSE DO:
  275.         HIDE MESSAGE.
  276.         MESSAGE "Brak informacji. Dodaj indeks do cennika - F1.".
  277.     END.
  278.    
  279. END PROCEDURE.
  280.  
  281.  
  282. PROCEDURE add_b1.
  283.  
  284.     DEF VAR vzzpi_id LIKE zzpi_mstr.zzpi_id.
  285.     vzzpi_id = 0.
  286.    
  287.     DO TRANSACTION:
  288.    
  289.         CLEAR FRAME fmain.
  290.         IF imode = "ONE" AND vpt_part  = "" THEN vpt_part = ipart.
  291.        
  292.         {gprun.i ""pi_azzpiadd.p"" "({&fmrow},'',?,0,?,0,'',0,0,0,global_userid,0,output v_added_id, ikey, ?,'','')"}
  293.        
  294.         FIND FIRST bzzpi_mstr WHERE bzzpi_mstr.zzpi_domain = global_domain
  295.                                 AND bzzpi_mstr.zzpi_id     = v_added_id
  296.                                 NO-LOCK NO-ERROR.
  297.                                
  298.             IF AVAILABLE bzzpi_mstr AND ikey = bzzpi_mstr.zzpi_key
  299.             THEN ASSIGN rep = TRUE
  300.                         rep_id = ROWID (bzzpi_mstr).
  301.                        
  302.     END.
  303.    
  304.     RELEASE bzzpi_mstr.
  305.    
  306. END PROCEDURE.
  307.  
  308.  
  309. PROCEDURE del_b1.
  310.  
  311.     DO TRANSACTION:
  312.    
  313.         FIND FIRST bzzpi_mstr WHERE ROWID (bzzpi_mstr) = ROWID (zzpi_mstr) EXCLUSIVE-LOCK NO-ERROR.
  314.            
  315.             IF AVAILABLE bzzpi_mstr
  316.             THEN DO:
  317.                
  318.                 FIND FIRST yypi_mstr WHERE yypi_mstr.yypi_domain        = GLOBAL_DOMAIN
  319.                                        AND yypi_mstr.yypi_base_list_id  = bzzpi_mstr.zzpi_id
  320.                                        EXCLUSIVE-LOCK NO-ERROR.
  321.                                        
  322.                 FIND FIRST zzpi_det WHERE zzpi_det.zzpid_zzpi_id    = bzzpi_mstr.zzpi_id
  323.                                     AND zzpi_det.zzpid_domain       = GLOBAL_DOMAIN
  324.                                     EXCLUSIVE-LOCK NO-ERROR.
  325.                                    
  326.                     IF AVAILABLE yypi_mstr AND yypi_mstr.yypi_status = "DELETED" THEN DELETE yypi_mstr.
  327.                     IF AVAILABLE zzpi_det AND zzpi_det.zzpid_status = "CLOSED" THEN DELETE zzpi_det.
  328.                     IF AVAILABLE bzzpi_mstr AND bzzpi_mstr.zzpi_status = "CLOSED" THEN DELETE bzzpi_mstr.
  329.                     ELSE UNDO.
  330.                    
  331.             END.
  332.            
  333.         RELEASE yypi_mstr.
  334.         RELEASE yypi_mstr.
  335.         RELEASE bzzpi_mstr.
  336.        
  337.     END. /* DO TRANSACTION: */
  338.    
  339. END PROCEDURE.
  340.  
  341.  
  342. PROCEDURE reposition_b1.
  343.  
  344.     IF rep
  345.     THEN REPOSITION q1 TO ROWID (rep_id).
  346.     rep = FALSE.
  347.    
  348. END PROCEDURE.
  349.  
  350.  
  351. PROCEDURE filtr_b1.
  352.  
  353.     DEF OUTPUT PARAM o_stat AS LOG.
  354.    
  355.     ON F4, END-ERROR OF FRAME ffltr HIDE FRAME ffltr.
  356.    
  357.     CLEAR FRAME ffltr.
  358.     UPDATE  v_part WHEN imode = 'ALL'
  359.             v_mrk_gr
  360.             v_curr
  361.             v_closed
  362.             v_ass
  363.             v_key
  364.             WITH FRAME ffltr.
  365.     IF imode = "ALL"
  366.     THEN DO:
  367.         {p_save.i ""v_part"" 'C' v_part ''}
  368.         {p_save.i ""v_curr"" 'C' v_curr ''}
  369.         {p_save.i ""v_closed"" 'B' v_closed ''}
  370.         {p_save.i ""v_ass"" 'B' v_ass ''}
  371.         {p_save.i ""v_key"" 'B' v_key ''}
  372.         {p_save.i ""v_mrk_gr"" 'C' v_mrk_gr ''}
  373.         RELEASE yyusr_param.
  374.     END.
  375.    
  376.     HIDE FRAME ffltr.
  377.     o_stat = TRUE.
  378.    
  379. END PROCEDURE.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement