[ https://issues.apache.org/jira/browse/OFBIZ-289?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12486889 ]
Jacques Le Roux commented on OFBIZ-289: --------------------------------------- When saving a sale, if any adjustment (item or sale discount for instance) exists it's not saved. It's because the Save/Load Sales mechanism uses shopping lists. Of course shopping lists are not aware of adjutments. I have no real need today but this may turn annoying. So perhaps I will have to create a new Save/Load Sales mechanism using order and order status... > Percentage item and sale discounts not working > ---------------------------------------------- > > Key: OFBIZ-289 > URL: https://issues.apache.org/jira/browse/OFBIZ-289 > Project: OFBiz (The Open for Business Project) > Issue Type: Bug > Components: pos > Affects Versions: SVN trunk > Environment: N/A > Reporter: Marco Risaliti > Assigned To: Jacques Le Roux > Fix For: SVN trunk > > > Copy of http://jira.undersunconsulting.com/browse/OFBIZ-670 from Ray Barlow > =========================================================== > In the pos application it is throwing exceptions and failing to apply > percentage discounts either at the sale level: > 3526968 (Thread-39) [ PosButton.java:136:ERROR] > ---- exception report > ---------------------------------------------------------- > Button invocation exception - menuSaleDisc > Exception: org.ofbiz.pos.config.ButtonEventConfig$ButtonEventException > Message: null > ---- stack trace > --------------------------------------------------------------- > org.ofbiz.pos.config.ButtonEventConfig$ButtonEventException > org.ofbiz.pos.config.ButtonEventConfig.invoke(ButtonEventConfig.java:228) > org.ofbiz.pos.config.ButtonEventConfig.invokeButtonEvent(ButtonEventConfig.java:117) > > org.ofbiz.pos.component.PosButton$1.construct(PosButton.java:132) > net.xoetrope.xui.helper.SwingWorker$2.run(Unknown Source) > java.lang.Thread.run(Thread.java:534) > java.lang.reflect.InvocationTargetException > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > java.lang.reflect.Method.invoke(Method.java:324) > org.ofbiz.pos.config.ButtonEventConfig.invoke(ButtonEventConfig.java:220) > org.ofbiz.pos.config.ButtonEventConfig.invokeButtonEvent(ButtonEventConfig.java:117) > > org.ofbiz.pos.component.PosButton$1.construct(PosButton.java:132) > net.xoetrope.xui.helper.SwingWorker$2.run(Unknown Source) > java.lang.Thread.run(Thread.java:534) > Caused by: java.lang.IllegalArgumentException: [GenericEntity.set] > "percentage" is not a field of OrderAdjustment, must be one of: > orderAdjustmentId, orderAdjustmentTypeId, orderId, orderItemSeqId, > shipGroupSeqId, comments, description, amount, productPromoId, > productPromoRuleId, productPromoActionSeqId, productFeatureId, > correspondingProductId, sourceReferenceId, sourcePercentage, > customerReferenceId, primaryGeoId, secondaryGeoId, exemptAmount, > taxAuthGeoId, taxAuthPartyId, overrideGlAccountId, includeInTax, > includeInShipping, createdDate, createdByUserLogin, oldAmountPerQuantity, > oldPercentage, lastUpdatedStamp, lastUpdatedTxStamp, createdStamp, > createdTxStamp > org.ofbiz.entity.GenericEntity.set(GenericEntity.java:365) > org.ofbiz.entity.GenericEntity.set(GenericEntity.java:345) > org.ofbiz.pos.PosTransaction.addDiscount(PosTransaction.java:400) > org.ofbiz.pos.event.MenuEvents.saleDiscount(MenuEvents.java:274) > ... 9 more > or the item level: > 3561402 (Thread-41) [ PosButton.java:136:ERROR] > ---- exception report > ---------------------------------------------------------- > Button invocation exception - menuItemDisc > Exception: org.ofbiz.pos.config.ButtonEventConfig$ButtonEventException > Message: null > ---- stack trace > --------------------------------------------------------------- > org.ofbiz.pos.config.ButtonEventConfig$ButtonEventException > org.ofbiz.pos.config.ButtonEventConfig.invoke(ButtonEventConfig.java:228) > org.ofbiz.pos.config.ButtonEventConfig.invokeButtonEvent(ButtonEventConfig.java:117) > > org.ofbiz.pos.component.PosButton$1.construct(PosButton.java:132) > net.xoetrope.xui.helper.SwingWorker$2.run(Unknown Source) > java.lang.Thread.run(Thread.java:534) > java.lang.reflect.InvocationTargetException > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > java.lang.reflect.Method.invoke(Method.java:324) > org.ofbiz.pos.config.ButtonEventConfig.invoke(ButtonEventConfig.java:220) > org.ofbiz.pos.config.ButtonEventConfig.invokeButtonEvent(ButtonEventConfig.java:117) > > org.ofbiz.pos.component.PosButton$1.construct(PosButton.java:132) > net.xoetrope.xui.helper.SwingWorker$2.run(Unknown Source) > java.lang.Thread.run(Thread.java:534) > Caused by: java.lang.IllegalArgumentException: [GenericEntity.set] > "percentage" is not a field of OrderAdjustment, must be one of: > orderAdjustmentId, orderAdjustmentTypeId, orderId, orderItemSeqId, > shipGroupSeqId, comments, description, amount, productPromoId, > productPromoRuleId, productPromoActionSeqId, productFeatureId, > correspondingProductId, sourceReferenceId, sourcePercentage, > customerReferenceId, primaryGeoId, secondaryGeoId, exemptAmount, > taxAuthGeoId, taxAuthPartyId, overrideGlAccountId, includeInTax, > includeInShipping, createdDate, createdByUserLogin, oldAmountPerQuantity, > oldPercentage, lastUpdatedStamp, lastUpdatedTxStamp, createdStamp, > createdTxStamp > org.ofbiz.entity.GenericEntity.set(GenericEntity.java:365) > org.ofbiz.entity.GenericEntity.set(GenericEntity.java:345) > org.ofbiz.pos.PosTransaction.addDiscount(PosTransaction.java:400) > org.ofbiz.pos.event.MenuEvents.itemDiscount(MenuEvents.java:313) > ... 9 more > > > All Comments Work Log Change History Sort Order: > Comment by Jacques Le Roux [19/Jan/06 02:27 PM] [ Permlink ] > I get the same problem. I'm sorry to have no time to look at it yet. > Jacques > Comment by Si Chen [19/Jan/06 02:49 PM] [ Permlink ] > Hey there - Just a wild guess here, but how about you update > src/org/ofbiz/pos/PosTransaction.java at line 400 and change > .set("percentage" ) to .set("sourcePercentage" ...) > Would that work for you? > Sorry - I'm just guessing from looking at your error message: > Caused by: java.lang.IllegalArgumentException: [GenericEntity.set] > "percentage" is not a field of OrderAdjustment, must be one of: > orderAdjustmentId, orderAdjustmentTypeId, orderId, orderItemSeqId, > shipGroupSeqId, comments, description, amount, productPromoId, > productPromoRuleId, productPromoActionSeqId, productFeatureId, > correspondingProductId, sourceReferenceId, sourcePercentage, > customerReferenceId, primaryGeoId, secondaryGeoId, exemptAmount, > taxAuthGeoId, taxAuthPartyId, overrideGlAccountId, includeInTax, > includeInShipping, createdDate, createdByUserLogin, oldAmountPerQuantity, > oldPercentage, lastUpdatedStamp, lastUpdatedTxStamp, createdStamp, > createdTxStamp > org.ofbiz.entity.GenericEntity.set(GenericEntity.java:365) > org.ofbiz.entity.GenericEntity.set(GenericEntity.java:345) > org.ofbiz.pos.PosTransaction.addDiscount(PosTransaction.java:400) > This actually tells you what the error is (percentage not being a field of > OrderAdjustment) and where it happens: > org.ofbiz.pos.PosTransaction.addDiscount(PosTransaction.java:400) > Unfortunately I don't know about your particular use case or how the POS > model works to know if that's the answer, but want to try it? > Comment by Jacques Le Roux [19/Jan/06 03:44 PM] [ Permlink ] > Good eyes Si. > Thanks it's work > Jacques > Comment by Si Chen [19/Jan/06 04:08 PM] [ Permlink ] > Jacques, > Can you confirm that the orders created are good? If so, do you want to send > me a patch file, or is it exactly the change I described? I'll put it in the > SVN. > Si > Comment by Jacques Le Roux [19/Jan/06 04:13 PM] [ Permlink ] > It works, but after I had a problem with the default tax autorithies values > which looks like this : > 77797 (Thread-43) [TaxAuthorityServices.java:283:WARN ] In TaxAuthority > Product Rate no records were found for condition:(productStoreId = '9100' AND > ((taxAut > hPartyId = '_NA_' AND taxAuthGeoId = '_NA_') OR (taxAuthPartyId = 'USA_IRS' > AND taxAuthGeoId = 'USA') OR (taxAuthPartyId = 'NY_DTF' AND taxAuthGeoId = > 'NY')) > AND (productCategoryId IS NULL OR productCategoryId IN ('TSTCSL', > 'CATALOG1_SEARCH', '101', '100')) AND (minItemPrice IS NULL OR minItemPrice > <= '25.989999999 > 999998436805981327779591083526611328125') AND (minPurchase IS NULL OR > minPurchase <= '25.989999999999998436805981327779591083526611328125')) > Is it possible to set somenthing by default to _NA_ which is used in POS I > guess ? > Comment by Jacques Le Roux [19/Jan/06 04:16 PM] [ Permlink ] > Ho, sorry it's too late and I'm to tired and in a hurry. I confused 2 > problems (TVA and %) so no it's not working but the error message is not > there anymore. > Going to bed :( > Jacques > Comment by Jacques Le Roux [19/Jan/06 04:18 PM] [ Permlink ] > Also it seems that something have to be done in POS code regarding double and > BigDecimal > 1091594 (Thread-102) [ GenericEntity.java:393:ERROR] In entity field set the > value passed in [java.math.BigDecimal] is not compatible with the Java type > of the field [Double] > I make a new issu for it > Jacques > Comment by Jacques Le Roux [19/Jan/06 04:21 PM] [ Permlink ] > Something to be said also about the message disappearing : I have set the log > to only warn and error messages. Si perhaps there is something more, too > tired... > Jacques > Comment by Jacques Le Roux [20/Jan/06 02:36 AM] [ Permlink ] > It seems that the modifications Si suggested > //adjustment.set("percentage", new Double(discount)); > adjustment.set("sourcePercentage", new Double(discount)); > is not sufficient. We get > 172860 (Thread-39) [ Log4jLoggerWriter.java:74 :INFO ] [POS @ pos-1 TX:10090] > - transaction created > 173860 (Thread-40) [ Log4jLoggerWriter.java:74 :INFO ] [POS @ pos-1 TX:10090] > - add item(GZ-1001/1.0) > 174188 (Thread-40) [ UtilXml.java:242:DEBUG] XML Read 0.235s: > file:/D:/workspace/ofbiz/applications/product/script/org/ofbiz/product/store/ProductS > > toreServices.xml > 174360 (Thread-40) [ ServiceDispatcher.java:447:DEBUG] [[Sync service > finished- total:0.453,since last(Begin):0.453]] - 'POSDispatcher / > isStoreInventoryAvai > lableOrNotRequired' > 174703 (Thread-40) [ ServiceDispatcher.java:447:DEBUG] [[Sync service > finished- total:0.343,since last(Begin):0.343]] - 'POSDispatcher / > calculateProductPric > e' > 175250 (Thread-40) [ GenericEntity.java:393:ERROR] In entity field set the > value passed in [java.math.BigDecimal] is not compatible with the Java type > of > the field [Double] > 175250 (Thread-40) [ GenericEntity.java:393:ERROR] In entity field set the > value passed in [java.math.BigDecimal] is not compatible with the Java type > of > the field [Double] > 175250 (Thread-40) [TaxAuthorityServices.java:364:INFO ] NOTE: A tax > calculation was done without a billToPartyId or taxAuthGeoId, so no tax > exemptions or tax > IDs considered; billToPartyId=[null] taxAuthGeoId=[_NA_] > 175266 (Thread-40) [ ServiceDispatcher.java:447:DEBUG] [[Sync service > finished- total:0.281,since last(Begin):0.281]] - 'POSDispatcher / calcTax' > 175266 (Thread-40) [ CheckOutHelper.java:675:INFO ] Added item adjustments to > ship group [0 / 0] - [[GenericEntity:OrderAdjustment][amount,5.095(java.math > .BigDecimal)][comments,TVA > 19,6%(java.lang.String)][orderAdjustmentTypeId,SALES_TAX(java.lang.String)][overrideGlAccountId,224000(java.lang.String)][primaryGe > > oId,_NA_(java.lang.String)][sourcePercentage,19.60000000000000142108547152020037174224853515625(java.math.BigDecimal)][taxAuthGeoId,_NA_(java.lang.String)][ta > > xAuthPartyId,_NA_(java.lang.String)]] > 181547 (Thread-43) [ Log4jLoggerWriter.java:74 :INFO ] [POS @ pos-1 TX:10090] > - add item adjustment > 181563 (Thread-43) [ GenericEntity.java:393:ERROR] In entity field set the > value passed in [java.math.BigDecimal] is not compatible with the Java type > of > the field [Double] > 181563 (Thread-43) [ GenericEntity.java:393:ERROR] In entity field set the > value passed in [java.math.BigDecimal] is not compatible with the Java type > of > the field [Double] > 181578 (Thread-43) [TaxAuthorityServices.java:364:INFO ] NOTE: A tax > calculation was done without a billToPartyId or taxAuthGeoId, so no tax > exemptions or tax > IDs considered; billToPartyId=[null] taxAuthGeoId=[_NA_] > 181578 (Thread-43) [ ServiceDispatcher.java:447:DEBUG] [[Sync service > finished- total:0.031,since last(Begin):0.031]] - 'POSDispatcher / calcTax' > 181578 (Thread-43) [ CheckOutHelper.java:675:INFO ] Added item adjustments to > ship group [0 / 0] - [[GenericEntity:OrderAdjustment][amount,5.095(java.math > .BigDecimal)][comments,TVA > 19,6%(java.lang.String)][orderAdjustmentTypeId,SALES_TAX(java.lang.String)][overrideGlAccountId,224000(java.lang.String)][primaryGe > > oId,_NA_(java.lang.String)][sourcePercentage,19.60000000000000142108547152020037174224853515625(java.math.BigDecimal)][taxAuthGeoId,_NA_(java.lang.String)][ta > > xAuthPartyId,_NA_(java.lang.String)]] > I tried to modify addDiscount method in PosTransaction.java using BigDecimal > public void addDiscount(String productId, double discount, boolean > percent) { > GenericValue adjustment = > session.getDelegator().makeValue("OrderAdjustment", null); > adjustment.set("orderAdjustmentTypeId", "DISCOUNT_ADJUSTMENT"); > if (percent) { > //adjustment.set("percentage", new Double(discount)); > adjustment.set("sourcePercentage", new Double(discount)); > } else { > adjustment.set("amount", new Double(discount)); > //adjustment.set("amount", new BigDecimal(discount)); > } > But it's not working. I think something has to be done in field amount of > OrderAdjustment Entity but I'm not sure. > Is it related to calcAndAddTax in CheckOutHelper.java ? > // pass in BigDecimal values instead of Double > List taxReturn = this.getTaxAdjustments(dispatcher, "calcTax", > serviceContext); > HTH > Jacques > Comment by Ray Barlow [20/Jan/06 09:46 AM] [ Permlink ] > I don't see anything about a BigDecimal error message on the test system I > just tried but I will try it on a cleaner version shortly as my DB may need a > fresh install. > As regards your suggestion Si it has stopped the visible error message in the > logs but it still won't apply the % discount to the item/order. I will double > check on clean system though. > Thanks. > Comment by Si Chen [20/Jan/06 06:03 PM] [ Permlink ] > Ray/Jacques - > Ok, so much for lucky guesses. Unfortunately I'm not familiar enough with > what you're talking about to know how to fix it right off, but here are some > questions that could help: > 1. Is % discount just for POS or is it in the catalog manager/ecommerce as > well? > 2. If it's just for POS, then is it trying to create an OrderAdjustment in > the PosTransaction.java? In which case, how is it different than what > ShoppingCartHelper or OrderServices is doing? By comparing the two, you > should be able to tell what is needed. > 3. If it's in catalog manager/ecommerce, then are those broken as well? If > so, open an issue for them and we'll take a peek. > Comment by Tony Harris [12/Feb/06 10:50 AM] [ Permlink ] > For information I am looking at this issue over the coming week. > Comment by Jacques Le Roux [11/Mar/06 02:26 AM] [ Permlink ] > I will work on this soon (beginning of april at least) > Tony had you time to work on it ? > Jacques > Comment by Marco Risaliti [12/Sep/06 08:35 AM] [ Permlink ] > Sorry Jacques, > can you look at this issue and see if it can be closed or move to the new > jira server. > Thanks in advance > Marco > Comment by Jacques Le Roux [12/Sep/06 08:51 AM] [ Permlink ] > Yes Marco, > I was just willing to do it. But have some tasks to complete before. Will see > that ASAP. > Comment by Marco Risaliti [14/Sep/06 04:37 AM] [ Permlink ] > Hi Jacques, > If you want I can move it for you ? > Thanks > Marco > Comment by Jacques Le Roux [14/Sep/06 09:48 AM] [ Permlink ] > I wanted to review this before moving to Apache, but actually I got no time > for that. > So yes thanks, Marco. I will review it later... > Comment by Marco Risaliti [14/Sep/06 02:02 PM] [ Permlink ] > May attention Jacques I'm starting to move it to avoid duplication of issue. > Thanks > Marco -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.