[ 
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.

Reply via email to