You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2007/12/17 21:41:26 UTC

svn commit: r604993 - in /ofbiz/trunk/specialpurpose/pos: config/ data/ screens/default/dialog/ screens/default/dialog/error/ screens/default/menu/ src/org/ofbiz/pos/ src/org/ofbiz/pos/device/impl/ src/org/ofbiz/pos/event/ src/org/ofbiz/pos/screen/ sty...

Author: jleroux
Date: Mon Dec 17 12:41:23 2007
New Revision: 604993

URL: http://svn.apache.org/viewvc?rev=604993&view=rev
Log:
A modified patch from Chris Lombardi "Ability to add items with modifiers in POS" (https://issues.apache.org/jira/browse/OFBIZ-1109) - OFBIZ-1109
There are some additions I did, and still some things to do... An new Jira issue should be opened

Added:
    ofbiz/trunk/specialpurpose/pos/screens/default/dialog/ConfigureItem.xml   (with props)
    ofbiz/trunk/specialpurpose/pos/screens/default/dialog/error/itemnotconfigurable.xml   (with props)
    ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java   (with props)
Modified:
    ofbiz/trunk/specialpurpose/pos/config/XuiLabels.properties
    ofbiz/trunk/specialpurpose/pos/config/XuiLabels_es.properties
    ofbiz/trunk/specialpurpose/pos/config/XuiLabels_fr.properties
    ofbiz/trunk/specialpurpose/pos/config/XuiLabels_it.properties
    ofbiz/trunk/specialpurpose/pos/config/XuiLabels_ro.properties
    ofbiz/trunk/specialpurpose/pos/config/XuiLabels_zh.properties
    ofbiz/trunk/specialpurpose/pos/config/buttonevents.xml
    ofbiz/trunk/specialpurpose/pos/config/pos.properties
    ofbiz/trunk/specialpurpose/pos/config/pos_es.properties
    ofbiz/trunk/specialpurpose/pos/config/pos_fr.properties
    ofbiz/trunk/specialpurpose/pos/config/pos_it.properties
    ofbiz/trunk/specialpurpose/pos/config/pos_ro.properties
    ofbiz/trunk/specialpurpose/pos/config/pos_zh.properties
    ofbiz/trunk/specialpurpose/pos/data/PosSecurityData.xml
    ofbiz/trunk/specialpurpose/pos/screens/default/menu/posmain.xml
    ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java
    ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java
    ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java
    ofbiz/trunk/specialpurpose/pos/styles/posstyles.xml

Modified: ofbiz/trunk/specialpurpose/pos/config/XuiLabels.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/XuiLabels.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/XuiLabels.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/XuiLabels.properties Mon Dec 17 12:41:23 2007
@@ -6,9 +6,9 @@
 # to you under the Apache License, Version 2.0 (the
 # "License"); you may not use this file except in compliance
 # with the License.  You may obtain a copy of the License at
-# 
+#
 # http://www.apache.org/licenses/LICENSE-2.0
-# 
+#
 # Unless required by applicable law or agreed to in writing,
 # software distributed under the License is distributed on an
 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
+### This file contains labels directly translated by XUI framework
 Add=Add
 AmountInOut=Amount
 CASH=CASH
@@ -29,6 +30,7 @@
 CLOSE=CLOSE
 CLR=CLR
 CLR_DISC=CLR DISC
+CONFIG_ITEM=Item Configuration
 CREDIT=CREDIT
 Cancel=Cancel
 DEL=DEL
@@ -62,6 +64,7 @@
 PROMO_CODE=PROMO CODE
 QTY=QTY
 RECEIPT_PRINTER_COMMUNICATION_ERROR=RECEIPT PRINTER COMMUNICATION ERROR
+RECEIPT_SERIALISE_ERROR=RECEIPT SERIALISE ERROR
 REPRINT=REPRINT
 RESET_XUI=RESET XUI
 ReasonInOut=Reason
@@ -84,6 +87,7 @@
 UNKNOWN_CARD_TYPE=UNKNOWN CARD TYPE
 VOID_ITEM=VOID ITEM
 VOID_SALE=VOID SALE
+item_not_configurable=The selected item is not configurable.
 no_sales=No sales saved
 order_not_found=ORDER NOT FOUND
 problems_reading_card=PROBLEMS READING SWIPED CARD

Modified: ofbiz/trunk/specialpurpose/pos/config/XuiLabels_es.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/XuiLabels_es.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/XuiLabels_es.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/XuiLabels_es.properties Mon Dec 17 12:41:23 2007
@@ -16,32 +16,32 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
-####
-Add=A\u00F1adir
+### This file contains labels directly translated by XUI framework
+Add=A\u00f1adir
 CASH=CASH
-CASH_DRAWER_COMMUNICATION_ERROR=Error en comunicaci\u00F3n de caja
-CASH_DRAWER_IS_OPEN=La caja est\u00E1 abierta
+CASH_DRAWER_COMMUNICATION_ERROR=Error en comunicaci\u00f3n de caja
+CASH_DRAWER_IS_OPEN=La caja est\u00e1 abierta
 CHANGE_PRICE=Cambiando precio
 CHECK=CHEQUE
 CLEAR_ALL=Limpiar todos
-CLEAR_CACHE=Limpiar cach\u00E9
-CLEAR_ONE=Anular art\u00EDculo
+CLEAR_CACHE=Limpiar cach\u00e9
+CLEAR_ONE=Anular art\u00edculo
 CLOSE=Cerrar
 CLR=LIMPIAR
 CLR_DISC=LIMPIAR DISCO
-CREDIT=Cr\u00E9dito
+CREDIT=Cr\u00e9dito
 Cancel=Cancel
 DEL=BORRAR
 Delete=Suprimir
 ENT=Validar
-EXCEPTION=Excepci\u00F3n
+EXCEPTION=Excepci\u00f3n
 EXIT=Salir
 FINISH=Fin
-FUNCTION_NOT_YET_SUPPORTED=Funci\u00F3n no soportada
+FUNCTION_NOT_YET_SUPPORTED=Funci\u00f3n no soportada
 GIFT_CERT=Certificado de regalo
-INVALID_CARD_NUMBER=Tarjeta de cr\u00E9dito inv\u00E1lida
-ITEM_DISC=Descuento de art\u00EDculo
-ITEM_MODIFICATION_ERROR=Error en la modificaci\u00F3n del art\u00EDculo
+INVALID_CARD_NUMBER=Tarjeta de cr\u00e9dito inv\u00e1lida
+ITEM_DISC=Descuento de art\u00edculo
+ITEM_MODIFICATION_ERROR=Error en la modificaci\u00f3n del art\u00edculo
 LANG=Idioma
 LOCK=Bloquear
 MAIN=Principal
@@ -49,7 +49,7 @@
 MGR=Gestion
 MOD=Cambiar la cantidad
 NOT_ENOUGH_FUNDS=No tiene suficientes fondos
-NO_ITEMS_SOLD=Art\u00EDculos no vendidos
+NO_ITEMS_SOLD=Art\u00edculos no vendidos
 OK=OK
 OPEN=ABIERTO
 OPEN_DRAWER=ABRIR CAJA
@@ -57,30 +57,30 @@
 PRINTER_NOT_READY=IMPRESORA NO LISTA
 PROMO=PROMOCIONES
 QTY=CANTIDAD
-RECEIPT_PRINTER_COMMUNICATION_ERROR=Error de comunicaci\u00F3n entre impresora y caja
+RECEIPT_PRINTER_COMMUNICATION_ERROR=Error de comunicaci\u00f3n entre impresora y caja
 REPRINT=REIMPRIMIR
 RESET_XUI=Reiniciar
 Replace=Reemplazar
 ReplaceAndDelete=<html><center>Reemplazar y<br>borrar
 SALE_DISC=Descuento de ventas
 SALE_VOIDED=Venta anulada
-SET_REF\#=N\u00FAmero
+SET_REF\#=N\u00famero
 SIGN_OUT=Salir
 SKU=SKU
 Save=Guardar
 SaveAndClear=<html><center>Guardar y<br>limpiar
-TERMINAL_IS_CLOSED=El terminar est\u00E1 cerrado
+TERMINAL_IS_CLOSED=El terminar est\u00e1 cerrado
 TEST_ALERT=Alerta (prueba)
 TEST_ALERT_BOX=Pueba de alerta:
-TEST_MSR=Tarjeta de cr\u00E9dito
+TEST_MSR=Tarjeta de cr\u00e9dito
 TOTALS=TOTAL
 TRANS_RET=TRANS RET
-TRANS_SAVE=Guardar transacci\u00F3n
+TRANS_SAVE=Guardar transacci\u00f3n
 UNKNOWN_CARD_TYPE=Tipo de tarjeta desconocido
-VOID_ITEM=Anular art\u00EDculo
+VOID_ITEM=Anular art\u00edculo
 VOID_SALE=Anular venta
 no_sales=No se guardaron ventas
 order_not_found=Orden no encontrada
 problems_reading_card=Problemas al leer la tarjeta
 product_not_found=Producto no encontrado
-promo_page=Esta ser\u00E1 la p\u00E1gina de promociones
+promo_page=Esta ser\u00e1 la p\u00e1gina de promociones

Modified: ofbiz/trunk/specialpurpose/pos/config/XuiLabels_fr.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/XuiLabels_fr.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/XuiLabels_fr.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/XuiLabels_fr.properties Mon Dec 17 12:41:23 2007
@@ -6,9 +6,9 @@
 # to you under the Apache License, Version 2.0 (the
 # "License"); you may not use this file except in compliance
 # with the License.  You may obtain a copy of the License at
-# 
+#
 # http://www.apache.org/licenses/LICENSE-2.0
-# 
+#
 # Unless required by applicable law or agreed to in writing,
 # software distributed under the License is distributed on an
 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -16,39 +16,42 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
+### This file contains labels directly translated by XUI framework
 Add=Ajouter
 AmountInOut=Montant
-CASH=Esp\u00E8ces
+CASH=Esp\u00e8ces
 CASH_DRAWER_COMMUNICATION_ERROR=Erreur lors de la communication avec le tiroir caisse
 CASH_DRAWER_IS_OPEN=Le tiroir caisse est ouvert
 CHANGE_PRICE=Changer le prix
-CHECK=Ch\u00E8que
+CHECK=Ch\u00e8que
 CLEAR_ALL=Tout annuler
 CLEAR_CACHE=Annuler l'encours
 CLEAR_ONE=Annuler l'article
 CLOSE=Fermer
 CLR=Effacer
 CLR_DISC=Annuler la remise
-CREDIT=Cr\u00E9dit
+CONFIG_ITEM=Configurer l'article
+CREDIT=Cr\u00e9dit
 Cancel=Annuler
 DEL=Suppr.
 Delete=Supprimer
 ENT=Valider
-EXCEPTION=Exception rencontr\u00E9e
+EXCEPTION=Exception rencontr\u00e9e
 EXIT=Quitter
 FINISH=Fin
-FUNCTION_NOT_YET_SUPPORTED=Fonction non encore support\u00E9e
+FUNCTION_NOT_YET_SUPPORTED=Fonction non encore support\u00e9e
 GIFT_CERT=Bon d'achat
-INVALID_CARD_NUMBER=N\u00B0 de carte non valide
+INVALID_CARD_NUMBER=N\u00b0 de carte non valide
 ITEM_DISC=Remise sur l'article
 ITEM_MODIFICATION_ERROR=Erreur lors de la modification de l'article
 LANG=Langage
+LOAD=Charger
 LOCK=Bloquer
 MAIN=Vente
-MANAGER_NOT_LOGGED_IN=Identifiant non g\u00E9rant
+MANAGER_NOT_LOGGED_IN=Identifiant non g\u00e9rant
 MGR=Gestion
-MOD=Changer la quantit\u00E9
-NOT_ENOUGH_FUNDS=Le client n'a pas fournit assez d'argent pour cl\u00F4turer la vente
+MOD=Changer la quantit\u00e9
+NOT_ENOUGH_FUNDS=Le client n'a pas fournit assez d'argent pour cl\u00f4turer la vente
 NO_ITEMS_SOLD=Aucun article vendu
 OK=OK
 OPEN=Ouvrir
@@ -56,34 +59,37 @@
 PAID_IN=Retour en caisse
 PAID_OUT=Sortie de caisse
 PAY=Paiement
-PRINTER_NOT_READY=Imprimante de caisse non pr\u00EAte
+PRINTER_NOT_READY=Imprimante de caisse non pr\u00eate
 PROMO=Promos
-QTY=Quantit\u00E9
+PROMO_CODE=Code de promotion
+QTY=Quantit\u00e9
 RECEIPT_PRINTER_COMMUNICATION_ERROR=Erreur lors de la communication avec l'imprimante de caisse
-REPRINT=R\u00E9afficher
-RESET_XUI=R\u00E9initialiser
+RECEIPT_SERIALISE_ERROR=Erreur lors de la tentative de s\u00e9rialisation du ticket
+REPRINT=R\u00e9afficher
+RESET_XUI=R\u00e9initialiser
 ReasonInOut=Raison
 Replace=Remplacer
 ReplaceAndDelete=<html><center>Remplacer et<br>supprimer
 SALE_DISC=Remise sur la vente
-SALE_VOIDED=Vente annul\u00E9e
-SET_REF\#=n\u00B0 ?
+SALE_VOIDED=Vente annul\u00e9e
+SET_REF\#=n\u00b0 ?
 SIGN_OUT=Sortir
 SKU=Code
 Save=Sauver
-SaveAndClear=<html><center>Sauver et<br>r\u00E9intialiser la vente
-TERMINAL_IS_CLOSED=Le terminal est ferm\u00E9
+SaveAndClear=<html><center>Sauver et<br>r\u00e9intialiser la vente
+TERMINAL_IS_CLOSED=Le terminal est ferm\u00e9
 TEST_ALERT=Alerte (test)
-TEST_ALERT_BOX=Test de l'impl\u00E9mentation des alertes
-TEST_MSR=Carte de cr\u00E9dit
+TEST_ALERT_BOX=Test de l'impl\u00e9mentation des alertes
+TEST_MSR=Carte de cr\u00e9dit
 TOTALS=Totals
 TRANS_RET=Recharger une vente
 TRANS_SAVE=Sauver la vente
 UNKNOWN_CARD_TYPE=Type de carte inconnu
 VOID_ITEM=Annuler l'article
 VOID_SALE=Annuler la vente
-no_sales=Aucune vente sauv\u00E9e
-order_not_found=N\u00B0 de transaction inconnu !
-problems_reading_card=Probl\u00E8me lors de la lecture de la carte
+item_not_configurable=Article non configurable
+no_sales=Aucune vente sauv\u00e9e
+order_not_found=N\u00b0 de transaction inconnu !
+problems_reading_card=Probl\u00e8me lors de la lecture de la carte
 product_not_found=Produit inconnu !
 promo_page=Ce sera la page des promotions...

Modified: ofbiz/trunk/specialpurpose/pos/config/XuiLabels_it.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/XuiLabels_it.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/XuiLabels_it.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/XuiLabels_it.properties Mon Dec 17 12:41:23 2007
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
+### This file contains labels directly translated by XUI framework
 CASH=CONTANTE
 CASH_DRAWER_COMMUNICATION_ERROR=ERRORE DI COMUNICAZIONE CON REGISTRATORE DI CASSA
 CASH_DRAWER_IS_OPEN=REGISTRATORE DI CASSA E' APERTO
@@ -29,7 +30,6 @@
 CLR_DISC=PULISCI SCONTO
 CREDIT=CREDITO
 DEL=CANCELLA
-Delete=
 ENT=INSERISCI
 EXCEPTION=ECCEZIONE
 EXIT=ESCI
@@ -56,14 +56,11 @@
 RECEIPT_PRINTER_COMMUNICATION_ERROR=ERRORE COMUNICAZIONE STAMPA RICEVUTA
 REPRINT=RISTAMPA
 RESET_XUI=AZZERA XUI
-ReplaceAndDelete=
 SALE_DISC=SCONTO VENDITA
 SALE_VOIDED=VENDITA VUOTA
 SET_REF\#=IMPOSTA RIF#
 SIGN_OUT=SIGN OUT
 SKU=CODICE PRODOTTO
-Save=
-SaveAndClear=
 TERMINAL_IS_CLOSED=TERMINALE E' CHIUSO
 TEST_ALERT=TEST AVVISO
 TEST_ALERT_BOX=TEST BOX AVVISO - TESTANDO IL DIALOGO IMPLEMENTAZIONE
@@ -77,4 +74,4 @@
 order_not_found=ORDINE NON TROVATO
 problems_reading_card=PROBLEMI LEGGENDO LETTORE CARTE
 product_not_found=PRODOTTO NON TROVATO
-promo_page=Questo sar\u00E0 nella pagina promozione!
+promo_page=Questo sar\u00e0 nella pagina promozione!

Modified: ofbiz/trunk/specialpurpose/pos/config/XuiLabels_ro.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/XuiLabels_ro.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/XuiLabels_ro.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/XuiLabels_ro.properties Mon Dec 17 12:41:23 2007
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
+### This file contains labels directly translated by XUI framework
 CASH=NUMERAR
 CASH_DRAWER_COMMUNICATION_ERROR=EROARE DE COMUNICARE CU REGISTRATORUL DE CASA
 CASH_DRAWER_IS_OPEN=REGISTRATORUL DE CASA ESTE DESCHIS
@@ -29,7 +30,6 @@
 CLR_DISC=CURATA REDUCERE
 CREDIT=CREDIT
 DEL=STERGE
-Delete=
 ENT=INTRODUCETI
 EXCEPTION=EXCEPTIE
 EXIT=IESIRE
@@ -56,17 +56,14 @@
 RECEIPT_PRINTER_COMMUNICATION_ERROR=EROARE LA PRIMIREA COMUNICARII DE TIPARIRE
 REPRINT=RETIPARESTE
 RESET_XUI=AZEREAZA XUI
-ReplaceAndDelete=
 SALE_DISC=SCONT VANZARE
 SALE_VOIDED=VANZARE GOALA
 SET_REF\#=SETEAZA RIF#
 SIGN_OUT=SIGN AUT 
 SKU=COD PRODUS
-Save=
-SaveAndClear=
 TERMINAL_IS_CLOSED=TERMINAL INCHIS
 TEST_ALERT=TEST AVIZARE
-TEST_ALERT_BOX= AVIZ TEST BOX - TESTAND DIALOGUL IMPLEMENTRE
+TEST_ALERT_BOX=AVIZ TEST BOX - TESTAND DIALOGUL IMPLEMENTRE
 TEST_MSR=TEST MSR
 TOTALS=TOTAL
 TRANS_RET=RETURNARE TRANZACTIE
@@ -76,6 +73,5 @@
 VOID_SALE=VANZARE GOALA
 order_not_found=COMANDA NEGASITA
 problems_reading_card=PROBLEME LA CITIREA CARDULUI
-product_not_found= NU GASESTE PRODUSUL 
+product_not_found=NU GASESTE PRODUSUL 
 promo_page=Acesta va fi in pagina de promotie!
-

Modified: ofbiz/trunk/specialpurpose/pos/config/XuiLabels_zh.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/XuiLabels_zh.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/XuiLabels_zh.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/XuiLabels_zh.properties Mon Dec 17 12:41:23 2007
@@ -16,64 +16,61 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
-CASH=\u73B0\u91D1
-CASH_DRAWER_COMMUNICATION_ERROR=\u94B1\u7BB1\u901A\u8BAF\u9519
-CASH_DRAWER_IS_OPEN=\u94B1\u7BB1\u5F00\u7740
-CHANGE_PRICE=\u8C03\u6574\u4EF7\u683C
-CHECK=\u652F\u7968
-CLEAR_ALL=\u6E05\u9664\u6240\u6709
-CLEAR_CACHE=\u6E05\u7F13\u5B58
-CLEAR_ONE=\u6E05\u9664\u4E00
+### This file contains labels directly translated by XUI framework
+CASH=\u73b0\u91d1
+CASH_DRAWER_COMMUNICATION_ERROR=\u94b1\u7bb1\u901a\u8baf\u9519
+CASH_DRAWER_IS_OPEN=\u94b1\u7bb1\u5f00\u7740
+CHANGE_PRICE=\u8c03\u6574\u4ef7\u683c
+CHECK=\u652f\u7968
+CLEAR_ALL=\u6e05\u9664\u6240\u6709
+CLEAR_CACHE=\u6e05\u7f13\u5b58
+CLEAR_ONE=\u6e05\u9664\u4e00
 CLOSE=\u5173
-CLR=\u6E05\u9664
-CLR_DISC=\u6E05\u9664\u6298\u6263
-CREDIT=\u4FE1\u7528\u5361
-Delete=
-ENT=\u786E\u8BA4
-EXCEPTION=\u9519\u8BEF
-EXIT=\u9000\u51FA
-FINISH=\u5B8C\u6210
-FUNCTION_NOT_YET_SUPPORTED=\u8BE5\u529F\u80FD\u8FD8\u672A\u652F\u6301
-GIFT_CERT=\u793C\u5238
-INVALID_CARD_NUMBER=\u65E0\u6548\u5361\u53F7
+CLR=\u6e05\u9664
+CLR_DISC=\u6e05\u9664\u6298\u6263
+CREDIT=\u4fe1\u7528\u5361
+ENT=\u786e\u8ba4
+EXCEPTION=\u9519\u8bef
+EXIT=\u9000\u51fa
+FINISH=\u5b8c\u6210
+FUNCTION_NOT_YET_SUPPORTED=\u8be5\u529f\u80fd\u8fd8\u672a\u652f\u6301
+GIFT_CERT=\u793c\u5238
+INVALID_CARD_NUMBER=\u65e0\u6548\u5361\u53f7
 ITEM_DISC=\u5355\u9879\u6298\u6263
-ITEM_MODIFICATION_ERROR=\u884C\u4FEE\u6539\u51FA\u9519
-LANG=\u8BED\u8A00
+ITEM_MODIFICATION_ERROR=\u884c\u4fee\u6539\u51fa\u9519
+LANG=\u8bed\u8a00
 LOCK=\u9501
-MAIN=\u4E3B\u9875
-MANAGER_NOT_LOGGED_IN=\u7BA1\u7406\u5458\u672A\u767B\u5F55
+MAIN=\u4e3b\u9875
+MANAGER_NOT_LOGGED_IN=\u7ba1\u7406\u5458\u672a\u767b\u5f55
 MGR=MGR
 MOD=MOD
-NOT_ENOUGH_FUNDS=\u5BA2\u6237\u4EA4\u6B3E\u4E0D\u8DB3
-NO_ITEMS_SOLD=\u6CA1\u6709\u9500\u552E\u9879
-OPEN=\u5F00
-OPEN_DRAWER=\u6253\u5F00\u94B1\u7BB1
-PAY=\u652F\u4ED8
-PRINTER_NOT_READY=\u6253\u5370\u673A\u672A\u5C31\u7EEA
-PROMO=\u4FC3\u9500
-QTY=\u4EF6\u6570
-RECEIPT_PRINTER_COMMUNICATION_ERROR=\u6253\u5370\u51FA\u9519
-REPRINT=\u91CD\u5370
-RESET_XUI=\u5237\u65B0\u754C\u9762
-ReplaceAndDelete=
-SALE_DISC=\u9500\u552E\u6298\u6263
-SALE_VOIDED=\u9500\u552E\u4F5C\u5E9F
+NOT_ENOUGH_FUNDS=\u5ba2\u6237\u4ea4\u6b3e\u4e0d\u8db3
+NO_ITEMS_SOLD=\u6ca1\u6709\u9500\u552e\u9879
+OPEN=\u5f00
+OPEN_DRAWER=\u6253\u5f00\u94b1\u7bb1
+PAY=\u652f\u4ed8
+PRINTER_NOT_READY=\u6253\u5370\u673a\u672a\u5c31\u7eea
+PROMO=\u4fc3\u9500
+QTY=\u4ef6\u6570
+RECEIPT_PRINTER_COMMUNICATION_ERROR=\u6253\u5370\u51fa\u9519
+REPRINT=\u91cd\u5370
+RESET_XUI=\u5237\u65b0\u754c\u9762
+SALE_DISC=\u9500\u552e\u6298\u6263
+SALE_VOIDED=\u9500\u552e\u4f5c\u5e9f
 SET_REF\#=SET REF#
-SIGN_OUT=\u7B7E\u9000
+SIGN_OUT=\u7b7e\u9000
 SKU=SKU
-Save=
-SaveAndClear=
-TERMINAL_IS_CLOSED=\u7EC8\u7AEF\u5DF2\u5173\u95ED
-TEST_ALERT=\u6D4B\u8BD5\u62A5\u8B66
-TEST_ALERT_BOX=\u6D4B\u8BD5\u62A5\u8B66\u76D2 - \u6D4B\u8BD5\u5BF9\u8BB2\u5668
-TEST_MSR=\u6D4B\u8BD5\u78C1\u6761
-TOTALS=\u5408\u8BA1
+TERMINAL_IS_CLOSED=\u7ec8\u7aef\u5df2\u5173\u95ed
+TEST_ALERT=\u6d4b\u8bd5\u62a5\u8b66
+TEST_ALERT_BOX=\u6d4b\u8bd5\u62a5\u8b66\u76d2 - \u6d4b\u8bd5\u5bf9\u8bb2\u5668
+TEST_MSR=\u6d4b\u8bd5\u78c1\u6761
+TOTALS=\u5408\u8ba1
 TRANS_RET=TRANS RET
-TRANS_SAVE=\u4EA4\u6613\u4FDD\u5B58
-UNKNOWN_CARD_TYPE=\u672A\u77E5\u5361\u7C7B\u578B
-VOID_ITEM=\u7A7A\u884C
-VOID_SALE=\u7A7A\u9500\u552E
-order_not_found=\u8BA2\u5355\u4E0D\u5B58\u5728
-problems_reading_card=\u5237\u5361\u95EE\u9898
-product_not_found=\u8D27\u54C1\u4E0D\u5B58\u5728
-promo_page=\u8FD9\u662F\u4FC3\u9500\u9875!
+TRANS_SAVE=\u4ea4\u6613\u4fdd\u5b58
+UNKNOWN_CARD_TYPE=\u672a\u77e5\u5361\u7c7b\u578b
+VOID_ITEM=\u7a7a\u884c
+VOID_SALE=\u7a7a\u9500\u552e
+order_not_found=\u8ba2\u5355\u4e0d\u5b58\u5728
+problems_reading_card=\u5237\u5361\u95ee\u9898
+product_not_found=\u8d27\u54c1\u4e0d\u5b58\u5728
+promo_page=\u8fd9\u662f\u4fc3\u9500\u9875!

Modified: ofbiz/trunk/specialpurpose/pos/config/buttonevents.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/buttonevents.xml?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/buttonevents.xml (original)
+++ ofbiz/trunk/specialpurpose/pos/config/buttonevents.xml Mon Dec 17 12:41:23 2007
@@ -80,6 +80,7 @@
     <event button-name="menuClrDisc" class-name="org.ofbiz.pos.event.MenuEvents" method-name="clearDiscounts" disable-lock="false"/>
     <event button-name="menuSave" class-name="org.ofbiz.pos.event.MenuEvents" method-name="saveSale" disable-lock="false"/>
     <event button-name="menuLoad" class-name="org.ofbiz.pos.event.MenuEvents" method-name="loadSale" disable-lock="false"/>
+    <event button-name="menuConfigItem" class-name="org.ofbiz.pos.event.MenuEvents" method-name="configureItem" disable-lock="false"/>
 
     <!-- payment events -->
     <event button-name="payCash" class-name="org.ofbiz.pos.event.PaymentEvents" method-name="payCash" disable-lock="false"/>
@@ -121,4 +122,4 @@
     <event button-name="testAlert" class-name="org.ofbiz.pos.event.TestEvents" method-name="testAlert" disable-lock="false"/>
     <event button-name="testLogIdx" class-name="org.ofbiz.pos.event.TestEvents" method-name="logSelectedIndex" disable-lock="false"/>
     <event button-name="testMsr" class-name="org.ofbiz.pos.event.TestEvents" method-name="testMsr" disable-lock="false"/>
-</button-events>
\ No newline at end of file
+</button-events>

Modified: ofbiz/trunk/specialpurpose/pos/config/pos.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/pos.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/pos.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/pos.properties Mon Dec 17 12:41:23 2007
@@ -16,6 +16,9 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
+### This file contains labels translated by the POS component (ie not by XUI framework)
+(ItemDiscount)=(Item discount)
+(SalesDiscount)=(Sales discount)
 (adjustment)=(adjustment)
 AMT=AMT
 AUTHCD=Enter Auth Code:
@@ -27,6 +30,8 @@
 CREDIT_CARD=CREDIT CARD
 CREDNO=Enter Card Number:
 CREDZP=Enter Billing ZipCode:
+ConfigureItem=Item Configuration
+CreateOrChooseReasonInOut=You have to create or choose a reason
 DATE=DATE
 DRWR=TILL
 DateFormat=EEE MMM dd
@@ -50,6 +55,8 @@
 OPDRAM=Starting Drawer Amount:
 OTHER=OTHER
 PAYFIN=Press Finish To Complete Sale
+PaidInTitle=Enter amount to paid in and create or choose a reason
+PaidOutTitle=Enter amount to withdraw and create or choose a reason
 Processing=Processing payments...
 QTY=QTY
 REFNUM=Enter Reference Number:
@@ -73,8 +80,3 @@
 draw=Dr:
 term=Term:
 total_report=TOTALS REPORT
-CreateOrChooseReasonInOut=You have to create or choose a reason
-PaidInTitle=Enter amount to paid in and create or choose a reason
-PaidOutTitle=Enter amount to withdraw and create or choose a reason
-(ItemDiscount)=(Item discount)
-(SalesDiscount)=(Sales discount)
\ No newline at end of file

Modified: ofbiz/trunk/specialpurpose/pos/config/pos_es.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/pos_es.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/pos_es.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/pos_es.properties Mon Dec 17 12:41:23 2007
@@ -16,18 +16,20 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
-
+### This file contains labels translated by the POS component (ie not by XUI framework)
+(ItemDiscount)=(Item discount)
+(SalesDiscount)=(Sales discount)
 (adjustment)=(adjustment)
 AMT=Precio
-AUTHCD=Ingrese el c\u00F3digo secreto :
+AUTHCD=Ingrese el c\u00f3digo secreto :
 CASH=CONTADO
 CHANGE=Cambio :
 CHECK=CHEQUE
-CREDCF=Ingrese los \u00FAltimos 4 d\u00EDgitos
-CREDEX=Ingrese fecha de expiraci\u00F3n (MMYY)
-CREDIT_CARD=TARJETA DE CR\u00C9DITO
-CREDNO=Ingrese n\u00FAmero de tarjeta :
-CREDZP=Ingrese c\u00F3digo postal de facturaci\u00F3n
+CREDCF=Ingrese los \u00faltimos 4 d\u00edgitos
+CREDEX=Ingrese fecha de expiraci\u00f3n (MMYY)
+CREDIT_CARD=TARJETA DE CR\u00c9DITO
+CREDNO=Ingrese n\u00famero de tarjeta :
+CREDZP=Ingrese c\u00f3digo postal de facturaci\u00f3n
 DATE=FECHA
 DRWR=Caja
 DateFormat=EEE MMM dd
@@ -35,38 +37,36 @@
 EMPL=VENDEDOR
 ENTCAS=Ingrese monto en efectivo
 ENTCHK=Ingrese monto en cheque
-ENTCRC=Ingrese monto en tarjeta de cr\u00E9dito
+ENTCRC=Ingrese monto en tarjeta de cr\u00e9dito
 ENTGFC=Ingrese monto de certificado de regalo:\u0009
 ENTOTH=Ingrese monto de otros pagos
 GIFT_CARD=Certificado de regalo
 GROSS_SALES=Total
 Grand_Total=Gran total
-ISCLOSED=El registro est\u00E1 cerrado
-ISOPEN=El registro est\u00E1 abierto
+ISCLOSED=El registro est\u00e1 cerrado
+ISOPEN=El registro est\u00e1 abierto
 ITEM=ITEM
-Invalid_Selection=Selecci\u00F3n inv\u00E1lida
+Invalid_Selection=Selecci\u00f3n inv\u00e1lida
 OPDRAM=Monto inicial de la caja:
 OTHER=OTROS
 PAYFIN=Presione FINISH para completar la venta
 Processing=Procesando pagos...
 QTY=Cantidad
-REFNUM=Ingrese n\u00FAmero  de referencia
+REFNUM=Ingrese n\u00famero  de referencia
 SKU=SKU
 Sales_Tax=Impuestos de ventas
 Saving=Usted ahorra....
 Shutting_down=Cerrando...
 TOTAL=Total
 TOTALD=Total debido:
-TXID=N\u00FAmero de venta
+TXID=N\u00famero de venta
 ULOGIN=Ingrese su login:
 UPASSW=Ingrese password
-UserNotmanager=El usuario no es administrador v\u00E1lido
-VOID=Ingrese n\u00FAmero de orden a anular
+UserNotmanager=El usuario no es administrador v\u00e1lido
+VOID=Ingrese n\u00famero de orden a anular
 Validating=Validando...
-WaitingFinalSales=Esperando transmisi\u00F3n de datos...
+WaitingFinalSales=Esperando transmisi\u00f3n de datos...
 clerk=Empleado
 draw=Dr.
 term=Terminal:
 total_report=REPORTE TOTAL:
-(ItemDiscount)=(Item discount)
-(SalesDiscount)=(Sales discount)
\ No newline at end of file

Modified: ofbiz/trunk/specialpurpose/pos/config/pos_fr.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/pos_fr.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/pos_fr.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/pos_fr.properties Mon Dec 17 12:41:23 2007
@@ -16,65 +16,67 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
+### This file contains labels translated by the POS component (ie not by XUI framework)
+(ItemDiscount)=Remise sur l'article
+(SalesDiscount)=Remise sur la vente
 (adjustment)=(ajustement)
 AMT=Prix
 AUTHCD=Entrez le code secret :
-CASH=Esp\u00E8ces
+CASH=Esp\u00e8ces
 CHANGE=A rendre :
-CHECK=Ch\u00E8que(s)
+CHECK=Ch\u00e8que(s)
 CREDCF=Entrez les 4 derniers chiffres :
 CREDEX=Entrez la date d'expiration (MMYY):
-CREDIT_CARD=Carte(s) de cr\u00E9dit
-CREDNO=Entrez le n\u00B0 de la carte :
+CREDIT_CARD=Carte(s) de cr\u00e9dit
+CREDNO=Entrez le n\u00b0 de la carte :
 CREDZP=Entrez le code postal de facturation :
+ConfigureItem=Configuration de l'article
+CreateOrChooseReasonInOut=Vous devez cr\u00e9er ou choisir une raison pour ce mouvement de caisse
 DATE=Date
 DRWR=Caisse
 DateFormat=EE dd MMM
-DateTimeFormat='le' dd MMMMM yyyy '\u00E0'  HH:mm:ss
+DateTimeFormat='le' dd MMMMM yyyy '\u00e0'  HH:mm:ss
 EMPL=Vendeur
-ENTCAS=Entrez le montant en esp\u00E8ce :
-ENTCHK=Entrez le montant en ch\u00E8que :
-ENTCRC=Entrez le montant en carte de cr\u00E9dit :
+ENTCAS=Entrez le montant en esp\u00e8ce :
+ENTCHK=Entrez le montant en ch\u00e8que :
+ENTCRC=Entrez le montant en carte de cr\u00e9dit :
 ENTGFC=Entrez le montant en bon d'achat :
 ENTOTH=Entrez le mt en autre moyen de paiement :
 GIFT_CARD=Bon(s) d'achat
 GROSS_SALES=Total
 Grand_Total=Total
-ISCLOSED=Le registre est ferm\u00E9.
+ISCLOSED=Le registre est ferm\u00e9.
 ISOPEN=Le registre est ouvert.
-ITEM=D\u00E9signation
-Invalid_Selection=S\u00E9lection non valide !
+ITEM=D\u00e9signation
+Invalid_Selection=S\u00e9lection non valide !
 LoadASale=Charger une vente
 LoadSaleListDblClickTip=Vous pouvez utiliser le double clic pour remplacer la vente en cours et supprimer celle ci
 OPDRAM=Contenu initial du tiroir :
 OTHER=Autres
-PaidInOut=Entrez le montant et créer ou choisissez une raison pour ce mouvement de caisse
 PAYFIN=Appuyez sur [Fin] pour terminer la vente !
+PaidInOut=Entrez le montant et cr\u00e9er ou choisissez une raison pour ce mouvement de caisse
+PaidInTitle=Entrez le montant \u00e0 remettre en caisse et cr\u00e9er ou choisissez une raison
+PaidOutTitle=Entrez le montant \u00e0 retirer et cr\u00e9er ou choisissez une raison
 Processing=Traitement du paiement...
 QTY=Nb
-REFNUM=Entrez la r\u00E9f\u00E9rence (nombre) :
+REFNUM=Entrez la r\u00e9f\u00e9rence (nombre) :
 SKU=Code
 Sales_Tax=TVA
 SaveASale=Sauver la vente en cours
 Saving=Enregistrement de la vente...
-SelectAProduct=S\u00E9lectionnez un produit
+SelectAProduct=S\u00e9lectionnez un produit
 SelectProductListDblClickTip=Vous pouvez utiliser le double clic pour chosir un produit
-Shutting_down=Arr\u00EAt en cours...
+Shutting_down=Arr\u00eat en cours...
 TOTAL=Total
-TOTALD=Total d\u00FB :
-TXID=N\u00B0vente
+TOTALD=Total d\u00fb :
+TXID=N\u00b0vente
 ULOGIN=Entrez votre identifiant :
 UPASSW=Entrez votre mot de passe :
-UserNotmanager=Cet utilisateur n'est pas un g\u00E9rant !
-VOID=Entrez le n\u00B0 d'ordre \u00E0 annuler :
+UserNotmanager=Cet utilisateur n'est pas un g\u00e9rant !
+VOID=Entrez le n\u00b0 d'ordre \u00e0 annuler :
 Validating=Validation...
-WaitingFinalSales=En attente de transmission de donn\u00E9es ...
+WaitingFinalSales=En attente de transmission de donn\u00e9es ...
 clerk=Vendeur :
 draw=Tiroir :
 term=Terminal :
 total_report=TOTAUX
-CreateOrChooseReasonInOut=Vous devez créer ou choisir une raison pour ce mouvement de caisse
-PaidInTitle=Entrez le montant \u00E0 remettre en caisse et créer ou choisissez une raison
-PaidOutTitle=Entrez le montant \u00E0 retirer et créer ou choisissez une raison
-(ItemDiscount)=Remise sur l'article
-(SalesDiscount)=Remise sur la vente
\ No newline at end of file

Modified: ofbiz/trunk/specialpurpose/pos/config/pos_it.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/pos_it.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/pos_it.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/pos_it.properties Mon Dec 17 12:41:23 2007
@@ -16,6 +16,9 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
+### This file contains labels translated by the POS component (ie not by XUI framework)
+(ItemDiscount)=(Item discount)
+(SalesDiscount)=(Sales discount)
 (adjustment)=(adjustment)
 AMT=IMP
 AUTHCD=Inserire Codice Autorizzazione:
@@ -30,7 +33,6 @@
 DATE=DATA
 DRWR=CASSIERE
 DateFormat=EEE MMM dd
-DateTimeFormat=
 EMPL=IMPIEGATO
 ENTCAS=Inserire Importo Contante:
 ENTCHK=Inserire Importo Assegno:
@@ -40,11 +42,10 @@
 GIFT_CARD=CARTA OMAGGIO
 GROSS_SALES=LORDO VENDITA
 Grand_Total=Totale Generale
-ISCLOSED=Registratore di Cassa \u00E8 Chiuso
-ISOPEN=Registratore di Cassa \u00E8 Aperto
+ISCLOSED=Registratore di Cassa \u00e8 Chiuso
+ISOPEN=Registratore di Cassa \u00e8 Aperto
 ITEM=PRODOTTO
 Invalid_Selection=Selezione Non Valida!
-LoadSaleListDblClickTip=
 OPDRAM=Importo Iniziale Cassiere:
 OTHER=ALTRO
 PAYFIN=Premere Fine Per Completare la Vendita
@@ -53,7 +54,6 @@
 REFNUM=Inserire Numero Riferimento:
 SKU=CODICE PRODOTTO
 Sales_Tax=Tasse di Vendita
-SaveASale=
 Saving=Salvataggio vendita...
 Shutting_down=Chiusura...
 TOTAL=TOTALE
@@ -61,7 +61,7 @@
 TXID=IDTAX
 ULOGIN=Inserire Id Utente:
 UPASSW=Inserire Password:
-UserNotmanager=Utente non \u00E8 un manager valido!
+UserNotmanager=Utente non \u00e8 un manager valido!
 VOID=Inserire Numero Ordine Da Svuotare:
 Validating=Validazione...
 WaitingFinalSales=In Attesa di trasmissione dei dati vendite finali...
@@ -69,5 +69,3 @@
 draw=Cass.:
 term=Termine:
 total_report=TOTALI STAMPA
-(ItemDiscount)=(Item discount)
-(SalesDiscount)=(Sales discount)
\ No newline at end of file

Modified: ofbiz/trunk/specialpurpose/pos/config/pos_ro.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/pos_ro.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/pos_ro.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/pos_ro.properties Mon Dec 17 12:41:23 2007
@@ -16,6 +16,9 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
+### This file contains labels translated by the POS component (ie not by XUI framework)
+(ItemDiscount)=(Item discount)
+(SalesDiscount)=(Sales discount)
 (adjustment)=(adjustment)
 AMT=IMP
 AUTHCD=Introduceti Codul de Autorizatie:
@@ -30,13 +33,13 @@
 DATE=DATA
 DRWR=CASIER
 DateFormat=EEE MMM dd
-DateTimeFormat= yyyy MMMMM dd 'la' hh:mm:ss aaa 
+DateTimeFormat=yyyy MMMMM dd 'la' hh:mm:ss aaa 
 EMPL=Angajat
 ENTCAS=Introduceti Valoare Numerar:
 ENTCHK=Introduceti Valoare  CEC:
-ENTCRC= Introduceti Valoare Carte de Credit:
-ENTGFC= Introduceti Valoare Carte Omagiu:
-ENTOTH= Introduceti Valoare Alte Plati:
+ENTCRC=Introduceti Valoare Carte de Credit:
+ENTGFC=Introduceti Valoare Carte Omagiu:
+ENTOTH=Introduceti Valoare Alte Plati:
 GIFT_CARD=CARTE OMAGIU
 GROSS_SALES=Valoare BRUTA-VANZARE
 Grand_Total=Total General
@@ -44,7 +47,7 @@
 ISOPEN=Registru de Casa este Deschis
 ITEM=PRODUS
 Invalid_Selection=Selectare InValida!
-LoadSaleListDblClickTip= Poti folosi dublu click  pentru a rescrie vanzarea cruenta si pentru a o sterge.
+LoadSaleListDblClickTip=Poti folosi dublu click  pentru a rescrie vanzarea cruenta si pentru a o sterge.
 OPDRAM=Valoare Initiala Casierie:
 OTHER=ALTE
 PAYFIN=Apasa Terminare(FINISH) Pentru a Completa Vanzarea
@@ -69,5 +72,3 @@
 draw=Cas:
 term=Term:
 total_report=TOTAL REPORT
-(ItemDiscount)=(Item discount)
-(SalesDiscount)=(Sales discount)
\ No newline at end of file

Modified: ofbiz/trunk/specialpurpose/pos/config/pos_zh.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/config/pos_zh.properties?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/config/pos_zh.properties (original)
+++ ofbiz/trunk/specialpurpose/pos/config/pos_zh.properties Mon Dec 17 12:41:23 2007
@@ -16,58 +16,56 @@
 # specific language governing permissions and limitations
 # under the License.
 ###############################################################################
+### This file contains labels translated by the POS component (ie not by XUI framework)
+(ItemDiscount)=(Item discount)
+(SalesDiscount)=(Sales discount)
 (adjustment)=(adjustment)
-AMT=\u91D1\u989D
-AUTHCD=\u8F93\u5165\u6388\u6743\u7801:
-CASH=\u73B0\u91D1
-CHANGE=\u627E\u96F6:
-CHECK=\u652F\u7968
-CREDCF=\u8F93\u5165\u6700\u540E4\u4F4D\u5361\u53F7:
-CREDEX=\u8F93\u5165\u5230\u671F\u65E5 (MMYY):
-CREDIT_CARD=\u4FE1\u7528\u5361
-CREDNO=\u8F93\u5165\u5361\u53F7:
-CREDZP=\u8F93\u5165\u8D26\u5355\u90AE\u653F\u7F16\u7801:
-DATE=\u65E5\u671F
-DRWR=\u949E\u7BB1
+AMT=\u91d1\u989d
+AUTHCD=\u8f93\u5165\u6388\u6743\u7801:
+CASH=\u73b0\u91d1
+CHANGE=\u627e\u96f6:
+CHECK=\u652f\u7968
+CREDCF=\u8f93\u5165\u6700\u540e4\u4f4d\u5361\u53f7:
+CREDEX=\u8f93\u5165\u5230\u671f\u65e5 (MMYY):
+CREDIT_CARD=\u4fe1\u7528\u5361
+CREDNO=\u8f93\u5165\u5361\u53f7:
+CREDZP=\u8f93\u5165\u8d26\u5355\u90ae\u653f\u7f16\u7801:
+DATE=\u65e5\u671f
+DRWR=\u949e\u7bb1
 DateFormat=EEE MMM dd
-DateTimeFormat=
-EMPL=\u6536\u94F6\u5458
-ENTCAS=\u8F93\u5165\u73B0\u91D1\u989D:
-ENTCHK=\u8F93\u5165\u652F\u7968\u989D:
-ENTCRC=\u8F93\u5165\u4FE1\u7528\u5361\u989D:
-ENTGFC=\u8F93\u5165\u793C\u54C1\u5361\u989D:
-ENTOTH=\u8F93\u5165\u5176\u4ED6\u4ED8\u6B3E\u989D:
-GIFT_CARD=\u793C\u54C1\u5361
-GROSS_SALES=\u6BDB\u9500\u552E\u989D
-Grand_Total=\u603B\u8BA1
-ISCLOSED=\u63D0\u793A\u724C\u5DF2\u5173\u95ED
-ISOPEN=\u63D0\u793A\u724C\u5DF2\u6253\u5F00
+EMPL=\u6536\u94f6\u5458
+ENTCAS=\u8f93\u5165\u73b0\u91d1\u989d:
+ENTCHK=\u8f93\u5165\u652f\u7968\u989d:
+ENTCRC=\u8f93\u5165\u4fe1\u7528\u5361\u989d:
+ENTGFC=\u8f93\u5165\u793c\u54c1\u5361\u989d:
+ENTOTH=\u8f93\u5165\u5176\u4ed6\u4ed8\u6b3e\u989d:
+GIFT_CARD=\u793c\u54c1\u5361
+GROSS_SALES=\u6bdb\u9500\u552e\u989d
+Grand_Total=\u603b\u8ba1
+ISCLOSED=\u63d0\u793a\u724c\u5df2\u5173\u95ed
+ISOPEN=\u63d0\u793a\u724c\u5df2\u6253\u5f00
 ITEM=\u9879
-Invalid_Selection=\u975E\u6CD5\u9009\u9879!
-LoadSaleListDblClickTip=
-OPDRAM=\u5F00\u59CB\u949E\u7BB1\u91D1\u989D:
-OTHER=\u5176\u4ED6
-PAYFIN=\u6309\u5B8C\u6210\u952E\u7ED3\u675F\u9500\u552E
-Processing=\u5904\u7406\u652F\u4ED8...
-QTY=\u4EF6\u6570
-REFNUM=\u8F93\u5165\u6D41\u6C34\u53F7:
+Invalid_Selection=\u975e\u6cd5\u9009\u9879!
+OPDRAM=\u5f00\u59cb\u949e\u7bb1\u91d1\u989d:
+OTHER=\u5176\u4ed6
+PAYFIN=\u6309\u5b8c\u6210\u952e\u7ed3\u675f\u9500\u552e
+Processing=\u5904\u7406\u652f\u4ed8...
+QTY=\u4ef6\u6570
+REFNUM=\u8f93\u5165\u6d41\u6c34\u53f7:
 SKU=SKU
-Sales_Tax=\u9500\u552E\u7A0E
-SaveASale=
-Saving=\u4FDD\u5B58\u9500\u552E...
-Shutting_down=\u5173\u95ED...
-TOTAL=\u5408\u8BA1
-TOTALD=\u5408\u8BA1\u989D:
-TXID=\u4EA4\u6613\u53F7
-ULOGIN=\u8F93\u5165\u7528\u6237 ID:
-UPASSW=\u8F93\u5165\u53E3\u4EE4:
-UserNotmanager=\u7528\u6237\u975E\u5408\u6CD5\u7BA1\u7406\u5458!
-VOID=\u8F93\u5165\u8981\u4F5C\u5E9F\u7684\u8BA2\u5355\u53F7:
-Validating=\u786E\u8BA4...
-WaitingFinalSales=\u7B49\u5F85\u6700\u7EC8\u9500\u552E\u6570\u636E\u4F20\u8F93...
-clerk=\u6536\u94F6\u5458:
-draw=\u949E\u7BB1:
-term=\u7EC8\u7AEF:
-total_report=\u5408\u8BA1\u62A5\u8868
-(ItemDiscount)=(Item discount)
-(SalesDiscount)=(Sales discount)
\ No newline at end of file
+Sales_Tax=\u9500\u552e\u7a0e
+Saving=\u4fdd\u5b58\u9500\u552e...
+Shutting_down=\u5173\u95ed...
+TOTAL=\u5408\u8ba1
+TOTALD=\u5408\u8ba1\u989d:
+TXID=\u4ea4\u6613\u53f7
+ULOGIN=\u8f93\u5165\u7528\u6237 ID:
+UPASSW=\u8f93\u5165\u53e3\u4ee4:
+UserNotmanager=\u7528\u6237\u975e\u5408\u6cd5\u7ba1\u7406\u5458!
+VOID=\u8f93\u5165\u8981\u4f5c\u5e9f\u7684\u8ba2\u5355\u53f7:
+Validating=\u786e\u8ba4...
+WaitingFinalSales=\u7b49\u5f85\u6700\u7ec8\u9500\u552e\u6570\u636e\u4f20\u8f93...
+clerk=\u6536\u94f6\u5458:
+draw=\u949e\u7bb1:
+term=\u7ec8\u7aef:
+total_report=\u5408\u8ba1\u62a5\u8868

Modified: ofbiz/trunk/specialpurpose/pos/data/PosSecurityData.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/data/PosSecurityData.xml?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/data/PosSecurityData.xml (original)
+++ ofbiz/trunk/specialpurpose/pos/data/PosSecurityData.xml Mon Dec 17 12:41:23 2007
@@ -35,4 +35,6 @@
     <SecurityGroupPermission groupId="POSCLERK" permissionId="ACCOUNTING_CREATE"/>
     <SecurityGroupPermission groupId="POSCLERK" permissionId="ACCOUNTING_UPDATE"/>
     <SecurityGroupPermission groupId="POSCLERK" permissionId="ACCOUNTING_COMM_VIEW"/>
+    <SecurityGroupPermission groupId="POSCLERK" permissionId="ACCTG_ATX_CREATE"/>
+    <SecurityGroupPermission groupId="POSCLERK" permissionId="ACCTG_ATX_UPDATE"/>        
 </entity-engine-xml>

Added: ofbiz/trunk/specialpurpose/pos/screens/default/dialog/ConfigureItem.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/screens/default/dialog/ConfigureItem.xml?rev=604993&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/screens/default/dialog/ConfigureItem.xml (added)
+++ ofbiz/trunk/specialpurpose/pos/screens/default/dialog/ConfigureItem.xml Mon Dec 17 12:41:23 2007
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<XPage class="net.xoetrope.swing.XDialog"> 
+    <Components>
+        <Panel x="0" y="0" w="1280" h="1024" style="menu">
+            <ScrollPane x="20" y="20" w="150" h="372">
+                <List name="configList" x="0" y="0" w="200" h="400" style="editAndList"/>
+            </ScrollPane>
+            <!-- <Button name="BtnCancel" x="0" y="500" w="100" h="60" style="configureItemButtonRed" content="Cancel" alignment="Center"/> -->
+            <Button name="BtnOk" x="102" y="500" w="100" h="60" style="configureItemButtonGreen" content="Ok" alignment="Center"/>       
+            <Button name="BtnReset" x="204" y="500" w="100" h="60" style="configureItemButtonRed" content="Reset" alignment="Center"/>
+            
+            <ScrollPane name="optionListPane" x="625" y="20" w="150" h="372">
+                <List name="optionList" x="0" y="0" w="200" h="400" style="editAndList"/>
+            </ScrollPane>
+            <Button name="r1c1" x="204" y="20" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r1c2" x="306" y="20" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r1c3" x="408" y="20" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r1c4" x="510" y="20" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r2c1" x="204" y="100" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r2c2" x="306" y="100" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r2c3" x="408" y="100" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r2c4" x="510" y="100" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r3c1" x="204" y="180" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r3c2" x="306" y="180" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r3c3" x="408" y="180" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r3c4" x="510" y="180" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r4c1" x="204" y="260" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r4c2" x="306" y="260" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r4c3" x="408" y="260" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r4c4" x="510" y="260" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r5c1" x="204" y="340" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r5c2" x="306" y="340" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r5c3" x="408" y="340" w="100" h="60" style="posButton" content="" alignment="Center"/>
+            <Button name="r5c4" x="510" y="340" w="100" h="60" style="posButton" content="" alignment="Center"/>
+        </Panel>
+    </Components>
+</XPage>

Propchange: ofbiz/trunk/specialpurpose/pos/screens/default/dialog/ConfigureItem.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/specialpurpose/pos/screens/default/dialog/ConfigureItem.xml
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/specialpurpose/pos/screens/default/dialog/ConfigureItem.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: ofbiz/trunk/specialpurpose/pos/screens/default/dialog/error/itemnotconfigurable.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/screens/default/dialog/error/itemnotconfigurable.xml?rev=604993&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/screens/default/dialog/error/itemnotconfigurable.xml (added)
+++ ofbiz/trunk/specialpurpose/pos/screens/default/dialog/error/itemnotconfigurable.xml Mon Dec 17 12:41:23 2007
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<XPage>
+    <Components>
+        <Panel name="errorPanel" x="0" y="0" w="400" h="200" style="errorpanel" border="0" alignment="Center">
+            <Button w="400" h="200" name="closeBtn" style="error" content="item_not_configurable" alignment="Center"/>
+        </Panel>
+    </Components>
+</XPage>

Propchange: ofbiz/trunk/specialpurpose/pos/screens/default/dialog/error/itemnotconfigurable.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/specialpurpose/pos/screens/default/dialog/error/itemnotconfigurable.xml
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/specialpurpose/pos/screens/default/dialog/error/itemnotconfigurable.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: ofbiz/trunk/specialpurpose/pos/screens/default/menu/posmain.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/screens/default/menu/posmain.xml?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/screens/default/menu/posmain.xml (original)
+++ ofbiz/trunk/specialpurpose/pos/screens/default/menu/posmain.xml Mon Dec 17 12:41:23 2007
@@ -24,7 +24,7 @@
         <Button name="menuMain" x="102" y="0" w="100" h="60" style="posButton" content="MAIN" alignment="Center"/>
         <Button name="menuMgr" x="204" y="0" w="100" h="60" style="posButton" content="MGR" alignment="Center"/>
         <Button name="menuPromo" x="306" y="0" w="100" h="60" style="posButton" content="PROMO" alignment="Center"/>
-        <Button name="" x="408" y="0" w="100" h="60" style="posButton" content="" alignment="Center"/>
+        <Button name="menuConfigItem" x="408" y="0" w="100" h="60" style="posButton" content="CONFIG_ITEM" alignment="Center"/>
         <Button name="menuPay" x="510" y="0" w="100" h="60" style="posButton" content="PAY" alignment="Center"/>
 
         <!-- line 2 -->
@@ -57,7 +57,7 @@
         <Button name="SKU.GZ-8544" x="204" y="248" w="100" h="60" style="skuButtonGizmo" content="GZ-8544" alignment="Center"/>
         <Button name="SKU.GZ-9290" x="306" y="248" w="100" h="60" style="skuButtonGizmo" content="GZ-9290" alignment="Center"/>
         <Button name="SKU.WG-1111" x="408" y="248" w="100" h="60" style="skuButtonWidget" content="WG-1111" alignment="Center"/>
-        <Button name="" x="510" y="248" w="100" h="60" style="posButton" content="" alignment="Center"/>
+        <Button name="SKU.PC001" x="510" y="248" w="100" h="60" style="skuButtonConfigurableItem" content="CONFIG PC" alignment="Center"/>
 
         <!-- line 6 -->
         <!--Button name="testAlert" x="0" y="310" w="100" h="60" style="posButton" content="TEST ALERT" alignment="Center"/-->
@@ -69,4 +69,4 @@
         <Button name="" x="510" y="310" w="100" h="60" style="posButton" content="" alignment="Center"/>
         <!--Button name="testMsr" x="510" y="310" w="100" h="60" style="posButton" content="TEST MSR" alignment="Center"/-->
     </Components>    
-</XPage>
\ No newline at end of file
+</XPage>

Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java Mon Dec 17 12:41:23 2007
@@ -26,6 +26,8 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.ArrayList;
+//import javax.swing.SwingWorker;
 
 import net.xoetrope.xui.data.XModel;
 import net.xoetrope.xui.helper.SwingWorker;
@@ -57,6 +59,8 @@
 import org.ofbiz.pos.screen.LoadSale;
 import org.ofbiz.pos.screen.PosScreen;
 import org.ofbiz.pos.screen.SaveSale;
+import org.ofbiz.product.config.ProductConfigWrapper;
+import org.ofbiz.product.config.ProductConfigWrapper.ConfigOption;
 import org.ofbiz.product.store.ProductStoreWorker;
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.LocalDispatcher;
@@ -237,6 +241,34 @@
         return itemInfo;
     }
 
+    public List getItemConfigInfo(int index) {
+        List<Map> list = new ArrayList<Map>();
+        // I think I need to initialize the list in a special way
+        // to use foreach in receipt.java
+
+        ShoppingCartItem item = cart.findCartItem(index);
+        if(this.isAggregatedItem(item.getProductId())){
+            ProductConfigWrapper pcw = null;
+            pcw = item.getConfigWrapper();
+            List selected = pcw.getSelectedOptions();
+            Iterator iter = selected.iterator();
+            while(iter.hasNext()){
+                ConfigOption configoption = (ConfigOption)iter.next();
+                Map itemInfo = new HashMap();
+                if (configoption.isSelected()){
+                    itemInfo.put("productId", "");
+                    itemInfo.put("sku", "");
+                    itemInfo.put("description", configoption.getDescription());
+                    itemInfo.put("quantity", UtilFormatOut.formatQuantity(item.getQuantity()));
+                    itemInfo.put("basePrice", UtilFormatOut.formatPrice(configoption.getPrice()));
+                    itemInfo.put("isTaxable", item.taxApplies() ? "T" : " ");
+                    list.add(itemInfo);
+                }
+            }
+        }
+        return list;
+    }
+
     public Map getPaymentInfo(int index) {
         ShoppingCart.CartPaymentInfo inf = cart.getPaymentInfo(index);
         GenericValue infValue = inf.getValueObject(session.getDelegator());
@@ -350,19 +382,134 @@
         }
     }
 
+    public boolean isAggregatedItem(String productId){
+        trace("is Aggregated Item", productId);
+        try {
+            GenericDelegator delegator = cart.getDelegator();
+            GenericValue product = null;
+            product = delegator.findByPrimaryKeyCache("Product", UtilMisc.toMap("productId", productId));
+            if ("AGGREGATED".equals(product.getString("productTypeId"))) {
+                return true;
+            }
+        } catch (GenericEntityException e){
+            trace("item lookup error", e);
+            Debug.logError(e, module);
+        } catch (Exception e){
+            trace("general exception", e);
+            Debug.logError(e, module);
+        }        
+        return false;
+    }
+
+    public ProductConfigWrapper getProductConfigWrapper(String productId){
+        //Get a PCW for a new product
+        trace("get Product Config Wrapper", productId);
+        ProductConfigWrapper pcw = null;
+        try {
+            GenericDelegator delegator = cart.getDelegator();
+            pcw = new ProductConfigWrapper(delegator, session.getDispatcher(), 
+                    productId, null, null, null, null, null, null);            
+        } catch (ItemNotFoundException e) {
+            trace("item not found", e);
+            //throw e;
+        } catch (CartItemModifyException e) {
+            trace("add item error", e);
+            //throw e;
+        }catch (GenericEntityException e){
+            trace("item lookup error", e);
+            Debug.logError(e, module);
+        } catch (Exception e){
+            trace("general exception", e);
+            Debug.logError(e, module);
+        } 
+        return pcw;
+    }
+
+    public ProductConfigWrapper getProductConfigWrapper(String productId, String cartIndex ){
+        // Get a PCW for a pre-configured product
+         trace("get Product Config Wrapper", productId + "/" + cartIndex );
+         ProductConfigWrapper pcw = null;
+         try {
+            int index = Integer.parseInt(cartIndex);
+            ShoppingCartItem product = cart.findCartItem(index);
+            GenericDelegator delegator = cart.getDelegator();
+            pcw = product.getConfigWrapper();
+        } catch (Exception e){
+            trace("general exception", e);
+            Debug.logError(e, module);
+        }         
+        return pcw;
+    }
+    
     public void addItem(String productId, double quantity) throws CartItemModifyException, ItemNotFoundException {
         trace("add item", productId + "/" + quantity);
         try {
-            cart.addOrIncreaseItem(productId, null, quantity, null, null, null, null, null, null, null, null, null, null, null, null, session.getDispatcher());
+            GenericDelegator delegator = cart.getDelegator();
+            GenericValue product = null;
+            ProductConfigWrapper pcw = null;
+            product = delegator.findByPrimaryKeyCache("Product", UtilMisc.toMap("productId", productId));
+            if ("AGGREGATED".equals(product.getString("productTypeId"))) {
+                // if it's an aggregated item, load the configwrapper and set to defaults
+                pcw = new ProductConfigWrapper(delegator, session.getDispatcher(), productId, null, null, null, null, null, null);
+                pcw.setDefaultConfig();
+            }
+            //cart.addOrIncreaseItem(productId, null, quantity, null, null, null, null, null, null, null, null, null, null, null, null, session.getDispatcher());
+            cart.addOrIncreaseItem(productId, null, quantity, null, null, null, null, null, null, null, null, pcw, null, null, null, session.getDispatcher());
         } catch (ItemNotFoundException e) {
             trace("item not found", e);
             throw e;
         } catch (CartItemModifyException e) {
             trace("add item error", e);
             throw e;
+        }catch (GenericEntityException e){
+            trace("item lookup error", e);
+            Debug.logError(e, module);
+        } catch (Exception e){
+            trace("general exception", e);
+            Debug.logError(e, module);
         }
     }
 
+    public void addItem(String productId, ProductConfigWrapper pcw) 
+        throws ItemNotFoundException, CartItemModifyException {
+        trace("add item with ProductConfigWrapper", productId );
+        try {
+            cart.addOrIncreaseItem(productId, null, 1, null, null, null, null, null, null, null, null, pcw, null, null, null, session.getDispatcher());
+        } catch (ItemNotFoundException e) {
+            trace("item not found", e);
+            throw e;
+        } catch (CartItemModifyException e) {
+            trace("add item error", e);
+            throw e;
+        } catch (Exception e){
+            trace("general exception", e);
+            Debug.logError(e, module);
+        }
+    }
+
+    public void modifyConfig(String productId, ProductConfigWrapper pcw, String cartIndex) 
+        throws CartItemModifyException, ItemNotFoundException {
+        trace("modify item config", cartIndex );
+        try {   
+            int cartIndexInt = Integer.parseInt(cartIndex);
+            ShoppingCartItem cartItem = cart.findCartItem(cartIndexInt);
+            double quantity = cartItem.getQuantity();
+            cart.removeCartItem(cartIndexInt, session.getDispatcher());
+            cart.addOrIncreaseItem(productId, null, quantity, null, null, null, null, null, null, null, null, pcw, null, null, null, session.getDispatcher());
+        } catch (CartItemModifyException e) {
+            Debug.logError(e, module);
+            trace("void or add item error", productId, e);
+            throw e;
+        } catch (ItemNotFoundException e) {
+            trace("item not found", e);
+            throw e;
+        } catch (Exception e){
+            trace("general exception", e);
+            Debug.logError(e, module);
+        }
+        return;
+    }
+    
     public void modifyQty(String productId, double quantity) throws CartItemModifyException {
         trace("modify item quantity", productId + "/" + quantity);
         ShoppingCartItem item = cart.findCartItem(productId, null, null, null, 0.00);
@@ -719,6 +866,28 @@
                 Journal.appendNode(line, "td", "qty", UtilFormatOut.formatQuantity(quantity));
                 Journal.appendNode(line, "td", "price", UtilFormatOut.formatPrice(subTotal));
                 Journal.appendNode(line, "td", "index", Integer.toString(cart.getItemIndex(item)));
+
+                if (this.isAggregatedItem(item.getProductId())){
+                    // put alterations here
+                    ProductConfigWrapper pcw = null;
+                    // product = delegator.findByPrimaryKeyCache("Product", UtilMisc.toMap("productId", productId));
+                    // pcw = new ProductConfigWrapper(delegator, session.getDispatcher(), productId, null, null, null, null, null, null);
+                    pcw = item.getConfigWrapper();
+                    List selected = pcw.getSelectedOptions();
+                    Iterator iter = selected.iterator();
+                    while(iter.hasNext()){
+                        ConfigOption configoption = (ConfigOption)iter.next();
+                        if (configoption.isSelected()){
+                            XModel option = Journal.appendNode(model, "tr", "", "");
+                            Journal.appendNode(option, "td", "sku", "");
+                            Journal.appendNode(option, "td", "desc", configoption.getDescription());
+                            Journal.appendNode(option, "td", "qty", "");
+                            Journal.appendNode(option, "td", "price", UtilFormatOut.formatPrice(configoption.getPrice()));
+                            Journal.appendNode(option, "td", "index", Integer.toString(cart.getItemIndex(item)));
+                        }
+                    }
+                }
+                  
                 if (adjustment != 0) {
                     // append the promo info
                     XModel promo = Journal.appendNode(model, "tr", "", "");
@@ -921,6 +1090,27 @@
             pos.showDialog("dialog/error/nosales");
         }
     }
+
+/*    public void configureItem(String cartIndex, PosScreen pos) {
+         trace("configure item", cartIndex);
+         try {
+            int index = Integer.parseInt(cartIndex);
+            ShoppingCartItem product = cart.findCartItem(index);
+            GenericDelegator delegator = cart.getDelegator();
+            ProductConfigWrapper pcw = null;
+            pcw = product.getConfigWrapper();
+            if(pcw != null) {
+                ConfigureItem configItem = new ConfigureItem(cartIndex, pcw, this, pos);
+                configItem.openDlg();
+            }
+            else {
+                pos.showDialog("dialog/error/itemnotconfigurable");
+            }
+        } catch (Exception e){
+            trace("general exception", e);
+            Debug.logError(e, module);
+        }         
+    }  */
 
     public List createShoppingLists() {
         List shoppingLists = null;

Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java Mon Dec 17 12:41:23 2007
@@ -27,6 +27,7 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.List;
 
 import jpos.JposException;
 import jpos.POSPrinter;
@@ -70,7 +71,8 @@
     protected int[] descLength = { 25, 25, 0 };
     protected int[] pridLength = { 25, 25, 0 };
     protected int[] infoLength = { 34, 34, 0 };
-
+    protected int[] configPaddingLength = { 2, 2, 2 };
+    protected String[] configPadding = { "  ", "  ", "  "};
     protected PosTransaction lastTransaction = null;
 
     public Receipt(String deviceName, int timeout) {
@@ -275,6 +277,17 @@
                         }
                     } else if ("#dateFormat".equals(code[0])) {
                         this.dateFmtStr[type] = code[1];
+                    } else if ("#configPadding.length".equals(code[0])) {
+                        try {
+                            this.configPaddingLength[type] = Integer.parseInt(code[1]);
+                            StringBuffer spaces = new StringBuffer();
+                            for (int i=0; i < this.configPaddingLength[type]; i+=1){
+                                spaces.append(" ");
+                            }
+                            this.configPadding[type] = spaces.toString();                            
+                        } catch (NumberFormatException e) {
+                            Debug.logWarning(e, module);
+                        }
                     }
                 } else if (line.trim().startsWith("[BEGIN ITEM LOOP]")) {
                     template[currentPart++] = buf.toString();
@@ -361,10 +374,44 @@
             if (toPrint.indexOf("\n") > -1) {
                 String[] lines = toPrint.split("\\n");
                 for (int x = 0; x < lines.length; x++) {
-                    this.println(lines[x]);
+                    String trimmed = lines[x].trim();
+                    if(trimmed.length()>1){  // if empty string don't println
+                        this.println(lines[x]);
+                    }
                 }
             } else {
                 this.println(toPrint);
+            }
+            
+            if(trans.isAggregatedItem(((String)expandMap.get("productId")).trim())){
+                List<Map> maps = trans.getItemConfigInfo(i);
+                for (Map map: maps){
+                    expandMap = this.makeCodeExpandMap(trans, type);
+                    expandMap.putAll(map);
+                    // adjust the padding
+                    expandMap.put("description",
+                        UtilFormatOut.padString(this.configPadding[type] + 
+                        (String) expandMap.get("description"), descLength[type], true, ' '));
+                    expandMap.put("productId", UtilFormatOut.padString((String) expandMap.get("productId"), pridLength[type], true, ' '));
+                    //expandMap.put("basePrice", UtilFormatOut.padString((String) expandMap.get("basePrice"), priceLength[type], false, ' '));
+                    expandMap.put("basePrice", UtilFormatOut.padString((String) " ", priceLength[type], false, ' '));
+                    expandMap.put("subtotal", UtilFormatOut.padString((String) expandMap.get("subtotal"), priceLength[type], false, ' '));
+                    //expandMap.put("quantity", UtilFormatOut.padString((String) expandMap.get("quantity"), qtyLength[type], false, ' '));
+                    expandMap.put("quantity", UtilFormatOut.padString((String) " ", qtyLength[type], false, ' '));
+                    expandMap.put("isTaxable", UtilFormatOut.padString((String) " ", priceLength[type], false, ' '));
+                    toPrint = FlexibleStringExpander.expandString(loopStr, expandMap);
+                    if (toPrint.indexOf("\n") > -1) {
+                        String[] lines = toPrint.split("\\n");
+                        for (int x = 0; x < lines.length; x++) {
+                            String trimmed = lines[x].trim();
+                            if(trimmed.length()>1){
+                                this.println(lines[x]);
+                            }
+                        }
+                    } else {
+                        this.println(toPrint);
+                    }
+                }
             }
         }
     }

Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java Mon Dec 17 12:41:23 2007
@@ -35,6 +35,8 @@
 import org.ofbiz.pos.screen.SelectProduct;
 import org.ofbiz.pos.screen.PosScreen;
 import org.ofbiz.entity.GenericValue;
+import org.ofbiz.pos.screen.ConfigureItem;
+import org.ofbiz.product.config.ProductConfigWrapper;
 
 public class MenuEvents {
 
@@ -178,10 +180,31 @@
                 pos.showDialog("dialog/error/producterror");
             }
 
+            // Check for Aggregated item
+            boolean aggregatedItem = false;
+            ProductConfigWrapper pcw = null;
+            try {
+                aggregatedItem = trans.isAggregatedItem(productId);
+                if(aggregatedItem){
+                    pcw = trans.getProductConfigWrapper(productId);
+                    pcw.setDefaultConfig();
+                    ConfigureItem configureItem = new ConfigureItem(pcw, trans, pos);
+                    pcw = configureItem.openDlg();
+                    configureItem = null;
+                }
+            }catch(Exception e){
+                Debug.logError(e, module);
+                pos.showDialog("dialog/error/producterror");                
+            }
+                        
             // add the item to the cart; report any errors to the user
             if (productId != null) {
                 try {
-                    trans.addItem(productId, quantity);
+                    if(!aggregatedItem){
+                        trans.addItem(productId, quantity);                    
+                    }else{
+                        trans.addItem(productId, pcw);
+                    }
                 } catch (CartItemModifyException e) {
                     Debug.logError(e, module);
                     pos.showDialog("dialog/error/producterror");
@@ -387,4 +410,37 @@
         Journal journal = pos.getJournal();
         return journal.getSelectedSku();
     }
+
+    public static void configureItem(PosScreen pos) {
+        PosTransaction trans = PosTransaction.getCurrentTx(pos.getSession());
+        Journal journal = pos.getJournal();
+        String index = journal.getSelectedIdx();
+        String productId = journal.getSelectedSku();
+        //trans.configureItem(index, pos);
+               
+        boolean aggregatedItem = false;
+        ProductConfigWrapper pcw = null;
+        try {
+            aggregatedItem = trans.isAggregatedItem(productId);
+            if(aggregatedItem){
+                pcw = trans.getProductConfigWrapper(productId, index);
+                ConfigureItem configureItem = new ConfigureItem(pcw, trans, pos);
+                pcw = configureItem.openDlg();
+                configureItem = null;
+                trans.modifyConfig(productId, pcw, index);
+            }else{
+                pos.showDialog("dialog/error/itemnotconfigurable");
+            }
+        }catch(Exception e){
+            Debug.logError(e, module);
+            pos.showDialog("dialog/error/producterror");                
+        }
+        
+        trans.calcTax();
+        pos.refresh();
+        
+        return;
+    }
+
+    
 }

Added: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java?rev=604993&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java (added)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java Mon Dec 17 12:41:23 2007
@@ -0,0 +1,433 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *******************************************************************************/
+package org.ofbiz.pos.screen;
+
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.ArrayList;
+import java.util.EventObject;
+import javax.swing.DefaultListModel;
+import javax.swing.JList;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionListener;
+import javax.swing.event.ListSelectionEvent;
+
+import net.xoetrope.swing.XButton;
+import net.xoetrope.swing.XDialog;
+import net.xoetrope.swing.XList;
+import net.xoetrope.swing.XScrollPane;
+import net.xoetrope.xui.XPage;
+
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.entity.GenericValue;
+import org.ofbiz.pos.PosTransaction;
+import org.ofbiz.product.config.ProductConfigWrapper;
+import org.ofbiz.product.config.ProductConfigWrapper.ConfigItem;
+import org.ofbiz.product.config.ProductConfigWrapper.ConfigOption;
+
+
+public class ConfigureItem extends XPage {
+
+    /**
+     * To create or configure a configurable item 
+     */
+    public static final String module = ConfigureItem.class.getName();
+    protected PosScreen m_pos = null;
+    protected ConfigureItem m_configureItem = null;
+    protected XDialog m_dialog = null;
+    protected XList m_configList = null;
+    protected XList m_optionList = null;
+    protected XButton m_ok = null;
+    protected XButton m_reset = null;
+    protected XScrollPane m_optionListPane = null;
+    protected PosTransaction m_trans = null;
+    protected static final String buttonArray[][] = {
+        { "r1c1", "r1c2", "r1c3", "r1c4" },
+        { "r2c1", "r2c2", "r2c3", "r2c4" },
+        { "r3c1", "r3c2", "r3c3", "r3c4" },
+        { "r4c1", "r4c2", "r4c3", "r4c4" }
+    };
+    protected ProductConfigWrapper m_pcw = null;
+    protected ArrayList m_buttonList = null;
+    protected Hashtable questionHashMap = null;
+
+    public ConfigureItem(ProductConfigWrapper pcw, PosTransaction trans, PosScreen page) {
+        m_pcw = pcw;
+        m_trans = trans;
+        m_pos = page;
+        m_configureItem = this;
+    }
+        
+    public ProductConfigWrapper openDlg() {
+        // cache must be set to false because there's no method to remove actionhandlers
+        m_dialog = (XDialog) pageMgr.loadPage(
+                m_pos.getScreenLocation() + "/dialog/ConfigureItem", false);
+        //TODO: change caption
+        m_dialog.setCaption(UtilProperties.getMessage("pos", "ConfigureItem", Locale.getDefault()));
+
+        m_optionListPane = (XScrollPane) m_dialog.findComponent("optionListPane");
+        m_configList = (XList) m_dialog.findComponent("configList");
+        m_optionList = (XList) m_dialog.findComponent("optionList");        
+        m_ok = (XButton) m_dialog.findComponent("BtnOk");
+        m_reset = (XButton) m_dialog.findComponent("BtnReset");
+
+        addMouseHandler(m_ok, "ok");
+        addMouseHandler(m_reset, "reset");
+
+        getButtons();
+        //debugQuestions();
+        showItem();
+        displayQuestions();
+        m_dialog.pack();
+        m_dialog.showDialog(this);
+
+        return m_pcw;
+    }
+    
+    public synchronized void ok() {
+        if (wasMouseClicked()) {
+            closeDlg();
+        }
+    }
+    
+    public synchronized void reset() {
+        if (wasMouseClicked()) {
+            m_pcw.setDefaultConfig();
+            resetButtons();
+            showItem();
+            m_dialog.repaint();
+        }
+    }
+
+    public synchronized void buttonPressed() {
+        EventObject eo = getCurrentEvent();
+        XButton button = (XButton) eo.getSource();
+        Question question = (Question)questionHashMap.get(button.getName());
+        question.buttonClicked();
+        showItem();
+        m_dialog.repaint();
+        return;
+    }
+
+    public synchronized void listPressed() {
+        EventObject eo = getCurrentEvent();
+        showItem();
+        m_dialog.repaint();
+        return;
+    }
+    
+    
+    private void closeDlg() {
+        m_dialog.closeDlg();
+    }
+    
+    private void resetButtons(){
+        Object[] questions = questionHashMap.values().toArray();
+        for(Object question : questions){
+            ((Question)question).reset();
+        }
+        return;
+    }
+    
+    private void showItem(){
+        DefaultListModel listModel = null;         
+        listModel = new DefaultListModel();
+        
+        GenericValue gv = m_pcw.getProduct();
+        listModel.addElement(gv.get("description")); 
+        
+        List questions = m_pcw.getQuestions();
+        if(questions==null) ; // no questions, we shouldn't be here
+        else{
+            Iterator iter = questions.iterator();
+            while(iter.hasNext()){
+                ConfigItem question = (ConfigItem)iter.next();
+                List options = question.getOptions();
+                Iterator itero = options.iterator();
+                while(itero.hasNext()){
+                    ConfigOption configoption = (ConfigOption)itero.next();
+                    if (configoption.isSelected()){
+                        listModel.addElement("  "+configoption.getDescription());
+                    }
+                }
+            }
+        }                
+        m_configList.setModel(listModel);
+        return;
+    }
+
+    private void displayQuestions(){
+
+        QuestionFactory qf = new QuestionFactory();
+        questionHashMap = new Hashtable();
+        
+        List questions = m_pcw.getQuestions();
+        if(questions==null) ; // no questions, we shouldn't be here
+        else{
+            Iterator iter = questions.iterator();
+            Iterator buttons = m_buttonList.iterator();
+            while(iter.hasNext()){
+                Question buttonQuestion = qf.get((ConfigItem)iter.next());
+                XButton button = (XButton)buttons.next();
+                questionHashMap.put(button.getName(), buttonQuestion );
+                buttonQuestion.setupButton(button);
+                if(buttonQuestion instanceof ListQuestion){
+                    ((ListQuestion)buttonQuestion).setupListPane(m_optionListPane);
+                }
+                addActionHandler(button, "buttonPressed");
+            }
+        }
+        return;
+    }
+    
+    private void getButtons(){
+        ArrayList buttonList = new ArrayList();
+        for(String[] buttonSingleArray : buttonArray ){
+            for(String buttonName : buttonSingleArray){
+                //Debug.logInfo("ButtonName: "+buttonName, module);
+                XButton button = (XButton) m_dialog.findComponent(buttonName);
+                buttonList.add(button);
+            }
+        }
+        m_buttonList = buttonList;
+    }
+    
+    private void debugQuestions(){
+        //Debug.logInfo("debugQuestions",module);
+        GenericValue gv = m_pcw.getProduct();
+
+        //Debug.logInfo("Product: " +gv.get("description"), module);
+        
+        List questions = m_pcw.getQuestions();
+        if(questions==null) return; // no questions, return
+     
+        Iterator iter = questions.iterator();
+        while(iter.hasNext()){
+            ConfigItem question = (ConfigItem)iter.next();
+            /*Debug.logInfo("Question: " + question.getQuestion(), module);
+            Debug.logInfo("IsFirst: "+question.isFirst()+
+                    ", IsMandatory: "+question.isMandatory()+
+                    ", IsSelected: "+question.isSelected()+
+                    ", IsSingleChoice: "+question.isSingleChoice()+
+                    ", IsStandard: "+question.isStandard(), module);*/
+                              
+            List options = question.getOptions();
+            Iterator itero = options.iterator();
+            
+            while(itero.hasNext()){
+                ConfigOption configoption = (ConfigOption)itero.next();
+                /*Debug.logInfo("Found option " + configoption.getDescription(), module);
+                Debug.logInfo("IsAvailable: "+configoption.isAvailable()+
+                    ", IsSelected: "+configoption.isSelected(), module);*/
+                //configoption.getComponents()
+            }
+        }
+    }
+
+    /*
+     *  What are the Question types?
+            Must choose one - isMandatory & isSingleChoice
+            May choose one - !isMandatory & isSingleChoice
+            May choose one or more - !isMandatory & !isSingleChoice
+            Must choose one or more - isMandatory & !isSingleChoice
+            For !isMandatory, include way to select none
+
+     *  SingleChoice with one option can be a button.  (Can't be mandatory)
+    Example: decaf
+        SingleChoice with multiple options can be a group of buttons or a list.
+                Example: temperature (extra hot, warm, cold)
+        Not SingleChoice with multiple options can be a group of buttons or a list
+                Example: flavor (vanilla and chocolate)
+        Can I specify multiple of an item?  4 shots of espresso?
+                Could do as a list?  Example:  Extra shots -> single, double, etc.
+
+        What is isStandard? Maybe I can key off IsStandard for using buttons, others get a list.
+
+        */
+    
+    protected class QuestionFactory{
+        
+        public Question get(ConfigItem question){
+
+            List options = question.getOptions();         
+            if(question.isSingleChoice()){
+                if(options.size()>2){
+                   return new ListButtonQuestion(question);
+                }else{
+                    //TODO: this doesn't handle the case of 
+                    // two options with none required to be selected
+                   return new SingleButtonQuestion(question);
+                }
+            }
+            else{
+                return new ListButtonQuestion(question);
+            }
+        }
+    }
+
+    protected interface Question{        
+        public void setupButton(XButton button);
+        //public void setupList(XList list);
+        public void buttonClicked();
+        public void reset();
+    }
+    
+    protected interface ListQuestion{
+        public void setupListPane(XScrollPane m_optionListPane);
+    }
+    
+    protected class SingleButtonQuestion implements Question{
+        private XButton button = null;
+        private ConfigItem question = null;
+        private int showOption = 0;
+        
+        public SingleButtonQuestion(ConfigItem question){
+            this.question = question;
+            return;
+        }
+
+        public void setupButton(XButton button){
+            this.button = button;
+            List options = question.getOptions();
+            if(question.isSelected()){
+                ConfigOption selectedOption = question.getSelected();
+                showOption = options.indexOf(selectedOption);
+            }
+            ConfigOption configoption = (ConfigOption)options.get(showOption);         
+            button.setText(configoption.getDescription());
+            return;
+        }
+
+        /*public void setupListPane(XScrollPane m_optionListPane){
+            return;
+        } */
+
+        public void buttonClicked(){
+            //only two choices, if the button is clicked, toggle
+            List options = question.getOptions();
+            ConfigOption unselectedoption = (ConfigOption)options.get(showOption);         
+            unselectedoption.setSelected(false);
+            showOption = (showOption+1)%2;
+            ConfigOption selectedoption = (ConfigOption)options.get(showOption);         
+            selectedoption.setSelected(true);
+            button.setText(selectedoption.getDescription());
+            return;
+        }
+               
+        public void reset(){
+            showOption = 0;
+            List options = question.getOptions();
+            if(question.isSelected()){
+                ConfigOption selectedOption = question.getSelected();
+                showOption = options.indexOf(selectedOption);
+            }
+            ConfigOption configoption = (ConfigOption)options.get(showOption);         
+            button.setText(configoption.getDescription());
+            return;           
+        }
+    }
+
+    protected class ListButtonQuestion implements Question, ListQuestion{
+        private XButton button = null;
+        private XScrollPane scrollpane = null;
+        private ConfigItem question = null;
+        
+        public ListButtonQuestion(ConfigItem question){
+            this.question = question;
+            return;
+        }
+
+        public void setupButton(XButton button){
+            this.button = button;
+            int showOption = 0;
+            button.setText(question.getQuestion());
+            return;
+        }   
+
+        public void setupListPane(XScrollPane m_optionListPane){
+            scrollpane = m_optionListPane;
+            return;
+        }
+        
+        public void buttonClicked(){
+            Iterator options = question.getOptions().iterator();
+           
+            DefaultListModel listModel = new DefaultListModel();
+            
+            while(options.hasNext()){
+                ConfigOption configoption = (ConfigOption)options.next();
+                listModel.addElement(configoption.getDescription());
+                //Debug.logInfo("Found option " + configoption.getDescription(), module);
+                //Debug.logInfo("IsAvailable: "+configoption.isAvailable()+
+                //    ", IsSelected: "+configoption.isSelected(), module);
+            }
+            
+            //Create the list and put it in a scroll pane.
+            JList list = new JList(listModel);
+            list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+            LBQSelectionHandler selectionHandler = new LBQSelectionHandler();
+            selectionHandler.setQuestion(question);
+            list.addListSelectionListener(selectionHandler);
+
+            scrollpane.add(list);
+            return;
+        }
+        
+        public void reset(){
+            return;
+        }
+    }    
+    
+    protected class LBQSelectionHandler implements ListSelectionListener {
+        private ConfigItem question = null;
+        
+        public void setQuestion(ConfigItem question){
+            this.question = question;
+        }
+        
+        public void valueChanged(ListSelectionEvent event) {
+            try{
+                JList jlist = (JList)event.getSource();
+                boolean isAdjusting = event.getValueIsAdjusting();
+                if(!isAdjusting){
+                    int[] selected = jlist.getSelectedIndices();
+                    //for(int i: selected){
+                    //    Debug.logInfo(""+i, module);
+                    //}
+                    List<ConfigOption> options = (List<ConfigOption>)question.getOptions();
+                    for (ConfigOption option: options){
+                        option.setSelected(false);
+                    }
+                    for(int i: selected){
+                        ConfigOption option = options.get(i);
+                        option.setSelected(true);
+                    }
+                    m_configureItem.listPressed();
+                }
+            }
+            catch(Exception ex){
+                Debug.logInfo(ex.getMessage(), module);
+                ex.printStackTrace();                
+            }
+        }
+    }
+}

Propchange: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/ConfigureItem.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/trunk/specialpurpose/pos/styles/posstyles.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/styles/posstyles.xml?rev=604993&r1=604992&r2=604993&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/styles/posstyles.xml (original)
+++ ofbiz/trunk/specialpurpose/pos/styles/posstyles.xml Mon Dec 17 12:41:23 2007
@@ -157,6 +157,15 @@
         <font_weight value="1"/>
         <font_italic value="0"/>
     </style>
+    <style name="skuButtonConfigurableItem">
+        <color_back value="daa520"/>
+        <color_fore value="000000"/>
+        <font_face value="verdana"/>
+        <font_size value="14"/>
+        <font_weight value="1"/>
+        <font_italic value="0"/>
+    </style>
+
 
     <!-- embedded POS [menu] button styles (required but can be customized) -->
     <style name="posButton">