;*********************************************************************************************
; Dateiname 	: 	SD_Externe_Attribute.lsp
; Autor         : 	Stephan Wörz
; Erstellt      :	20.04.2005
; geändert    	:
;*********************************************************************************************
; Beschreibung:		- 	AttributeTool / Lightversion
;
;*********************************************************************************************
; Änderungen
;
;*********************************************************************************************
;(in-package :teo) 
(use-package :oli)

;(setq flag "HLZ")
(sd-defdialog 'SD_Externe_Attribute
  :dialog-title   "Externe_Attribute"
  :toolbox-button t
  :start-variable 'object

;;================================================================================================
;;=========== VARIABLEN ==========================================================================
;;================================================================================================

  :variables'(
  
(OBJECT
      :value-type    :part-assembly
      :initial-value 	nil
      :size 			:third
      :modifies 		nil
      :title         "Teil"
      :prompt-text   "Teil auswählen"
      :after-input
       (progn
          (attriholen)
          (maske)    
       ); end progn
   ); end OBJECT

(Artikelnummer
      :initial-optional :true
      :initial-visible nil      
      :after-input 
         (progn
           (sd-set-text-control-value "TC_Artikelnummer" :text Artikelnummer)     
           (maske)
          ); end progn
      :size :third
      :value-type    :string
      :title         "Artikel"
      :prompt-text   "Artikel eingeben"
    ); end Lesa_HLZ_Artikel


(Benennung
      :initial-optional :true
      :initial-visible nil      
      :after-input 
         (progn
           (sd-set-text-control-value "TC_Benennung" :text Benennung)     
           (maske)
          );progn
      :size :third
      :value-type    :string
      :title         "Benennung"
      :prompt-text   "Benennung waehlen"
    ); end Lesa_HLZ_Benennung

)  ;end variables

;;================================================================================================
;;=========== FUNKTIONEN =========================================================================
;;================================================================================================

:local-functions
'(
(attriholen ()		;Attribute von OBJECT holen und in Variablen streichen		-> Auswerten der Attribute am OBJECT

	(setq Artikelnummer 		(bomattr-get-Artikelnummer		object))           
	(setq Benennung 			(bomattr-get-Benennung 			object))         
); end attriholen

(abgleichen ()		; Werte aus TextControls holen und in Variablen schreiben 	-> Auswerten der Benutzereingabe
	(setq Artikelnummer 	(sd-get-text-control-value 	"TC_Artikelnummer" 	)) 
	(setq Benennung 	 	(sd-get-text-control-value 	"TC_Benennung"		))    
;	(display (format nil "Benennung: ~A " Benennung))	
);end abgleichen

(maskezu ()
     (sd-hide-dialog-shell "UICT-TEST" :ignorePin t )
);end maskezu

(attrisetzen ()
 
	(sd-attach-item-attribute object "WZ_ATTRIBUTE"
     :attachment :contents 
     :on-copy    :maintain
     :on-merge   :maintain
     :on-split   :detach 
     :on-xform   :maintain
     :filing     '(:sd-file)
     :values `(
	   	:Artikelnummer 	, Artikelnummer                                           
       	:Benennung 	    , Benennung 	
       			 ); end values
     ); end sd-attach-item-attribute
);end attrisetzten

;;================================================================================================
;;=========== Definition der Maske  ==============================================================
;;================================================================================================

(maske ()


(sd-create-dialog-shell "UICT-TEST" 
                        :title           "Attribute"
                        :areaBackground  :command 
); end maske

(sd-append-area "UICT-TEST-1-AA" "UICT-TEST-AA"
    :frame            t
    :title            "SCHILLER"
	:margin          5
    :titleForeground  "#ffff00"
    :background       :option)

;;================================================================================================
;;========= GridArea 'Stuecklisteneintraege ======================================================
;;================================================================================================
  (sd-append-grid-area "Eingabemaske" "UICT-TEST-1-AA"
      :frame t
      :title "Attribute"
      :spacing 1
      :margin 4
      :cellSize 10,12
      :width  273
      :height 80 )

;;================================================================================================
;;=========== Textfelder 'TextControls' ========= GridArea 'Stuecklisteneintraege ================
;;================================================================================================

    (sd-create-text-control "TC_Artikelnummer" "Eingabemaske"
     :x 11
	 :y 0
	 :width 15
	 :height 2
	 :editable t
	 :showModified nil
	 :showFocus t
	 :killFocusAction '(progn 
	 			(abgleichen)
	 			)
	 :enterAction '(progn 
	 		(abgleichen)))

    (sd-create-text-control "TC_Benennung" "Eingabemaske"
     :x 11
	 :y 2
	 :width 15
	 :height 2
	 :editable t
	 :showModified nil
	 :showFocus t
	 :killFocusAction '(progn 
	 			(abgleichen)
	 			)
	 :enterAction '(progn 
	 		(abgleichen)))
	 		
;;================================================================================================
;;=========== Textfelder 'TextControls' == aktualisieren ========================================= 
;;================================================================================================

	      
(sd-set-text-control-value 	"TC_Artikelnummer" 		:text 	Artikelnummer	)
(sd-set-text-control-value 	"TC_Benennung" 			:text 	Benennung		)
	 

;;================================================================================================
;;=========== Schaltflaechen 'PushButton' ========= GridArea 'Stuecklisteneintraege ==============
;;================================================================================================

(sd-create-pushbutton-control "Artikelnummer" "Eingabemaske"
     :x 0
	 :y 0
	 :width 11
	 :height 2
	 :title "Artikel:"
	 :pushAction '(progn 
	 (sd-show-display-table "Artikelnummer")
	))	 

(sd-create-pushbutton-control "Benennung" "Eingabemaske"
     :x 0
	 :y 2
	 :width 11
	 :height 2
	 :title "Benennung:"
	 :pushAction '(progn
	      (sd-show-display-table "Benennung"
	      		)
	))

;;================================================================================================
;;=========== GridArea 'Befehle' =================================================================
;;================================================================================================
  
;nächstes Grid unterhalb!
	(sd-append-newline "UICT-TEST-1-AA")

  	(sd-append-grid-area "Befehle" "UICT-TEST-1-AA"
      :frame t
      :title "Befehle"
      :spacing 1
      :margin 4
      :cellSize 10,12
      :width  273
      :height 80)
;;================================================================================================
;;=========== Schaltflaechen 'PushButtons ======== GridArea 'Befehle' ============================
;;================================================================================================
	 
(sd-create-pushbutton-control "Lesa_pb_Schliessen" "Befehle"
     	:x 0
	    :y 0
	    :width 26
	    :height 2
	    :title "Schliessen"
	    :pushAction '(progn
                  	(maskezu)  ))	
	    
(sd-create-pushbutton-control "Lesa_pb_Attriesetzen" "Befehle"
     	:x 0
	    :y 2
	    :width 26
	    :height 2
	    :title "Attribute setzen / Fenster schliessen"
	    :pushAction '(progn
	         (abgleichen)
	         (attrisetzen)
	         (maskezu) 
	         ))	 



; Zeigt Dialog "UICT-TEST" an
(sd-show-dialog-shell "UICT-TEST" 
:position '("TOP-MENU-TOOLBOX-TB" :bottomleft 160 0))
      
	   	      
);endmaske		
 
);endlocalfunk
  
 
:ok-action
	'(progn
 		(maskezu)
);end ok_action


:cancel-action
	'(progn
       	(maskezu)
);end cancel-ACTION

:help-action
	'(progn
    	(sd-display-url ( Format NIL "~A/SD_Externe_Attribute.htm" (oli::sd-convert-filename-from-platform (oli::sd-sys-getenv "SCHILLERHELPDIR"))))
		); end progn

);end defdialog

;;================================================================================================
;;=========== Attribute auslesen =================================================================
;;================================================================================================

(defun bomattr-get-Artikelnummer (selitem)
  (let ((attr (sd-inq-item-attribute selitem "WZ_ATTRIBUTE"
                                     :values :attachment :contents)))
     (if attr (getf attr :Artikelnummer) nil)))


(defun bomattr-get-Benennung(selitem)
  (let ((attr (sd-inq-item-attribute selitem "WZ_ATTRIBUTE"
                                     :values :attachment :contents)))
     (if attr (getf attr :Benennung) nil)))