Its always not that straightforward. I tend to use webservices as it provides consistent results and you do not have to "reverse engineer" . Moreover things should work as advertised (documented) !
On Tue, Apr 17, 2018 at 9:17 PM, Mike <mz4whee...@gmail.com> wrote: > Why not just write your own custom xmlrpc server (perl/python/java) that > accepts just the P/N and new price, searches for the current record, and > performs a SQL call to update the DB. > > On Tue, Apr 17, 2018 at 8:12 AM, Rajesh Mallah <mallah.raj...@gmail.com> > wrote: > > > ERRATA: I meant "There is no parameter" in lieu of "There is parameter" > > > > On Tue, Apr 17, 2018 at 8:09 PM, Rajesh Mallah <mallah.raj...@gmail.com> > > wrote: > > > > > > > > Hi Rishi , > > > > > > I am using XML RPC with OFBiz so my capabilities are limited to > > > what the interface provides. There is parameter that allows me > > > to specify the data format/pattern . > > > > > > At this moment i have solved my problem temporarily by appending > > > .001 after the second part in HH:MM:SS and i am only using > > > createProductPrice instead of updateProductPrice . As creating new > > > prices allows to have a history/audit of prices. I feel > > updateProductPrice > > > is really overwriting the values and trail is lost. > > > > > > regds > > > mallah. > > > > > > > > > > > > > > > On Tue, Apr 17, 2018 at 6:49 PM, Rishi Solanki < > rishisolan...@gmail.com> > > > wrote: > > > > > >> Idea of utility class is, use the format you would like and pass the > > >> value. > > >> It will convert into timestamp used in the table. In case you could > not > > >> get > > >> the desired format in the utility class then the class uses the > > >> java.text.SimpleDateFormat class to resolve its purpose. > > >> > > >> Please take a look at toTimestamp() method variations and format you > are > > >> receiving in the xml. Once you have the format with you, it can be > > easily > > >> converted into timestamp. Also if utility class does not support then > go > > >> to > > >> core class for same i.e java.text.SimpleDateFormat and look for the > > >> supporting format. > > >> > > >> HTH! > > >> > > >> > > >> Rishi Solanki > > >> Sr Manager, Enterprise Software Development > > >> HotWax Systems Pvt. Ltd. > > >> Direct: +91-9893287847 > > >> http://www.hotwaxsystems.com > > >> www.hotwax.co > > >> > > >> On Tue, Apr 17, 2018 at 3:02 PM, Rajesh Mallah < > mallah.raj...@gmail.com > > > > > >> wrote: > > >> > > >> > Further Info: > > >> > > > >> > <member> > > >> > <name>fromDate</name> > > >> > <value> > > >> > <string><![CDATA[2018-04-17 14:59:34.001 > > +0530]]></string> > > >> > </value> > > >> > </member> > > >> > > > >> > In XML results in > > >> > > > >> > from_date | 2018-04-17 14:59:34.001+05:30 > > >> > > > >> > in DB. looks like the parser is kind enough to consider TZ > > >> > spec without colons. > > >> > > > >> > > > >> > regds > > >> > mallah. > > >> > > > >> > > > >> > On Tue, Apr 17, 2018 at 2:42 PM, Rajesh Mallah < > > mallah.raj...@gmail.com > > >> > > > >> > wrote: > > >> > > > >> > > > > >> > > Its PostgreSQL > > >> > > regds > > >> > > > > >> > > > > >> > > below is a sample data : > > >> > > > > >> > > SQL> select * from ofbiz.product_price where > > >> > > product_id='PROD_SW52D5H3EN' order by created_date desc limit 1; > > >> > > > > >> > > -[ RECORD 1 ]---------------+------------------------------ > > >> > > product_id | PROD_SW52D5H3EN > > >> > > product_price_type_id | DEFAULT_PRICE > > >> > > product_price_purpose_id | PURCHASE > > >> > > currency_uom_id | INR > > >> > > product_store_group_id | _NA_ > > >> > > from_date | 2018-04-17 12:49:20+05:30 <---- > > This > > >> has > > >> > > been put by me. > > >> > > thru_date | > > >> > > price | 121.000 > > >> > > term_uom_id | WT_kg > > >> > > custom_price_calc_service | > > >> > > price_without_tax | > > >> > > price_with_tax | > > >> > > tax_amount | > > >> > > tax_percentage | > > >> > > tax_auth_party_id | > > >> > > tax_auth_geo_id | > > >> > > tax_in_price | Y > > >> > > created_date | 2018-04-17 12:49:20.416+05:30 > > >> > > created_by_user_login | admin > > >> > > last_modified_date | 2018-04-17 12:49:20.416+05:30 > > >> > > last_modified_by_user_login | admin > > >> > > last_updated_stamp | 2018-04-17 12:49:20.416+05:30 <---- > > >> > > Generated by defaults. > > >> > > last_updated_tx_stamp | 2018-04-17 12:49:20.357+05:30 > > >> > > created_stamp | 2018-04-17 12:49:20.416+05:30 > > >> > > created_tx_stamp | 2018-04-17 12:49:20.357+05:30 > > >> > > > > >> > > > > >> > > On Tue, Apr 17, 2018 at 2:39 PM, Deepak Dixit > > >> > <deepak.dixit@hotwaxsystems. > > >> > > com> wrote: > > >> > > > > >> > >> Hi Rajesh, > > >> > >> > > >> > >> Could you please share which database you are using? > > >> > >> > > >> > >> > > >> > >> Thanks & Regards > > >> > >> -- > > >> > >> Deepak Dixit > > >> > >> www.hotwax.co > > >> > >> > > >> > >> On Tue, Apr 17, 2018 at 2:36 PM, Rajesh Mallah < > > >> mallah.raj...@gmail.com > > >> > > > > >> > >> wrote: > > >> > >> > > >> > >> > Hi , > > >> > >> > > > >> > >> > > > >> > >> > it was in conversion/DateTimeConverters.java that was > appending > > >> '.0' > > >> > to > > >> > >> > the > > >> > >> > end of > > >> > >> > string if the string did not contain any decimals. So i have > now > > >> > >> started > > >> > >> > sending > > >> > >> > the fractional seconds. And things are better (if not perfect). > > >> > >> > > > >> > >> > > > >> > >> > > > >> > >> > public java.sql.Timestamp convert(String obj, Locale locale, > > >> TimeZone > > >> > >> > timeZone, String formatString) throws ConversionException { > > >> > >> > String str = obj.trim(); > > >> > >> > if (str.length() == 0) { > > >> > >> > return null; > > >> > >> > } > > >> > >> > DateFormat df = null; > > >> > >> > if (UtilValidate.isEmpty(formatString)) { > > >> > >> > // These hacks are a bad idea, but they are > > >> included > > >> > >> > // for backward compatibility. > > >> > >> > if (str.length() > 0 && !str.contains(":")) { > > >> > >> > str = str + " 00:00:00.00"; > > >> > >> > } > > >> > >> > // hack to mimic Timestamp.valueOf() method > > >> > >> > if (str.length() > 0 && !str.contains(".")) { > > >> > >> > str = str + ".0"; > > >> > >> > } else { > > >> > >> > // DateFormat has a funny way of parsing > > >> > >> milliseconds: > > >> > >> > // 00:00:00.2 parses to 00:00:00.002 > > >> > >> > // so we'll add zeros to the end to get > > >> > 00:00:00.200 > > >> > >> > String[] timeSplit = str.split("[.]"); > > >> > >> > if (timeSplit.length > 1 && > > >> timeSplit[1].length() > > >> > < > > >> > >> 3) > > >> > >> > { > > >> > >> > str = str + > "000".substring(timeSplit[1]. > > >> > >> > length()); > > >> > >> > } > > >> > >> > } > > >> > >> > df = > > >> > >> > UtilDateTime.toDateTimeFormat(UtilDateTime. > getDateTimeFormat(), > > >> > >> timeZone, > > >> > >> > locale); > > >> > >> > } else { > > >> > >> > df = UtilDateTime.toDateTimeFormat( > formatString, > > >> > >> timeZone, > > >> > >> > locale); > > >> > >> > } > > >> > >> > try { > > >> > >> > return new java.sql.Timestamp(df.parse( > > >> > str).getTime()); > > >> > >> > } catch (ParseException e) { > > >> > >> > > > >> > >> > > > >> > >> > On Tue, Apr 17, 2018 at 2:19 PM, Rajesh Mallah < > > >> > mallah.raj...@gmail.com > > >> > >> > > > >> > >> > wrote: > > >> > >> > > > >> > >> > > Thanks Rishi. > > >> > >> > > > > >> > >> > > On Tue, Apr 17, 2018 at 2:08 PM, Rishi Solanki < > > >> > >> rishisolan...@gmail.com> > > >> > >> > > wrote: > > >> > >> > > > > >> > >> > >> UtilDateTime is the utility class, add the time format > support > > >> you > > >> > >> want > > >> > >> > >> and > > >> > >> > >> use it. Most format supported by this utility class OFBiz > > have. > > >> > >> > >> > > >> > >> > >> Rishi Solanki > > >> > >> > >> Sr Manager, Enterprise Software Development > > >> > >> > >> HotWax Systems Pvt. Ltd. > > >> > >> > >> Direct: +91-9893287847 > > >> > >> > >> http://www.hotwaxsystems.com > > >> > >> > >> www.hotwax.co > > >> > >> > >> > > >> > >> > >> On Tue, Apr 17, 2018 at 12:27 PM, Rajesh Mallah < > > >> > >> > mallah.raj...@gmail.com> > > >> > >> > >> wrote: > > >> > >> > >> > > >> > >> > >> > Now I am passing "2018-04-17 12:09:17+05:30" as fromDate > , > > >> > >> > >> > Which is the value picked up from the DB column. > > >> > >> > >> > > > >> > >> > >> > Even at XML level the string is preserved , but at some > > stage > > >> > after > > >> > >> > >> > hitting tomcat it becomes: "2018-04-17 12:09:17+05:30.0" > > >> > >> > >> > > > >> > >> > >> > which is not parseable. > > >> > >> > >> > > > >> > >> > >> > |W| [ModelService.makeValid] : Type conversion of field > > >> > >> [fromDate] to > > >> > >> > >> type > > >> > >> > >> > [java.sql.Timestamp] failed f > > >> > >> > >> > or value "2018-04-17 12:09:17+05:30": > > >> > >> > >> > org.apache.ofbiz.base.util.GeneralException: > > >> > >> > java.text.ParseException: > > >> > >> > >> > Unparseable date: "2018-04-17 12:09:17+05:30.0" > > >> > >> > (java.text.ParseExceptio > > >> > >> > >> > n: Unparseable date: "2018-04-17 12:09:17+05:30.0") > > >> > >> > >> > > > >> > >> > >> > > > >> > >> > >> > <!--- snippet from the XML-RPC --> > > >> > >> > >> > > > >> > >> > >> > <member> > > >> > >> > >> > <name>fromDate</name> > > >> > >> > >> > <value> > > >> > >> > >> > <string><![CDATA[2018-04-17 > > >> > >> 12:09:17+05:30]]></string> > > >> > >> > >> > </value> > > >> > >> > >> > </member> > > >> > >> > >> > > > >> > >> > >> > <!-- end of snippet --> > > >> > >> > >> > > > >> > >> > >> > > > >> > >> > >> > > > >> > >> > >> > > > >> > >> > >> > regds > > >> > >> > >> > mallah. > > >> > >> > >> > > > >> > >> > >> > > > >> > >> > >> > On Tue, Apr 17, 2018 at 11:08 AM, Rajesh Mallah < > > >> > >> > >> mallah.raj...@gmail.com> > > >> > >> > >> > wrote: > > >> > >> > >> > > > >> > >> > >> > > Hello Mr Deepak , > > >> > >> > >> > > > > >> > >> > >> > > Thanks for the response . The record does exists but i > > guess > > >> > >> > >> > > i am not specifying the params good enough to hit the > > record > > >> > >> > >> > > by pkey. > > >> > >> > >> > > > > >> > >> > >> > > I wish there were a "product_price_id" in ProductPrice > > >> entity. > > >> > >> :-) > > >> > >> > >> > > > > >> > >> > >> > > regds > > >> > >> > >> > > mallah. > > >> > >> > >> > > > > >> > >> > >> > > > > >> > >> > >> > > > > >> > >> > >> > > > > >> > >> > >> > > > > >> > >> > >> > > On Tue, Apr 17, 2018 at 9:58 AM, Deepak Dixit < > > >> > >> > deepak.di...@hotwax.co > > >> > >> > >> > > > >> > >> > >> > > wrote: > > >> > >> > >> > > > > >> > >> > >> > >> Hi Rajesh, > > >> > >> > >> > >> > > >> > >> > >> > >> If you want to create product price you should use > > >> > >> > createProductPrice > > >> > >> > >> > >> service, > > >> > >> > >> > >> https://demo-stable.ofbiz.apac > > >> he.org/webtools/control/Servic > > >> > >> > >> > >> eList?sel_service_name=createProductPrice > > >> > >> > >> > >> > > >> > >> > >> > >> If productPrice record already exists you should use > > >> > >> > >> updateProductPrice, > > >> > >> > >> > >> > > >> > >> > >> > >> Thanks & Regards > > >> > >> > >> > >> -- > > >> > >> > >> > >> Deepak Dixit > > >> > >> > >> > >> Director of Product Engineering > > >> > >> > >> > >> HotWax Commerce <https://hotwax.co/> > > >> > >> > >> > >> > > >> > >> > >> > >> On Mon, Apr 16, 2018 at 11:42 PM, Rajesh Mallah < > > >> > >> > >> > mallah.raj...@gmail.com> > > >> > >> > >> > >> wrote: > > >> > >> > >> > >> > > >> > >> > >> > >> > Hi , > > >> > >> > >> > >> > > > >> > >> > >> > >> > I am calling > > >> > >> > >> > >> > > > >> > >> > >> > >> > https://demo-stable.ofbiz. > apache.org/webtools/control/ > > >> > >> > >> > >> > ServiceList?sel_service_name=updateProductPrice > > >> > >> > >> > >> > > > >> > >> > >> > >> > with ARGS > > >> > >> > >> > >> > > > >> > >> > >> > >> > { > > >> > >> > >> > >> > currencyUomId "INR", > > >> > >> > >> > >> > fromDate "2018-04-16 17:39:52", > > >> > >> > >> > >> > price 150, > > >> > >> > >> > >> > productId "PROD_SW52D5H3EN", > > >> > >> > >> > >> > productPricePurposeId "PURCHASE", > > >> > >> > >> > >> > productPriceTypeId "DEFAULT_PRICE", > > >> > >> > >> > >> > productStoreGroupId "_NA_", > > >> > >> > >> > >> > taxInPrice "Y", > > >> > >> > >> > >> > termUomId "WT_kg" > > >> > >> > >> > >> > } > > >> > >> > >> > >> > > > >> > >> > >> > >> > > > >> > >> > >> > >> > I am getting error: > > >> > >> > >> > >> > > > >> > >> > >> > >> > > > >> > >> > >> > >> > faultString:Error running the simple-method: Entity > > value > > >> > not > > >> > >> > found > > >> > >> > >> > with > > >> > >> > >> > >> > name: lookedUpValue Method = updateProductPrice, > File = > > >> > >> > >> > >> > file:/opt/ofbiz/apache-ofbiz-1 > > >> 6.11.04/applications/product/ > > >> > >> > >> > >> > minilang/product/price/PriceServices.xml, > > >> > >> > >> > >> > Element = <set-nonpk-fields>, Line 69null > > >> > >> > >> > >> > > > >> > >> > >> > >> > > > >> > >> > >> > >> > the minilang def is reproduced here for convinience: > > >> > >> > >> > >> > > > >> > >> > >> > >> > <simple-method method-name="updateProductPrice" > > >> > >> > >> > >> short-description="Update > > >> > >> > >> > >> > an ProductPrice"> > > >> > >> > >> > >> > <set field="callingMethodName" > > >> > >> > value="updateProductPrice"/> > > >> > >> > >> > >> > <set field="checkAction" value="UPDATE"/> > > >> > >> > >> > >> > <call-simple-method method-name=" > > >> > >> > >> > checkProductRelatedPermission" > > >> > >> > >> > >> > xml-resource="component://product/minilang/product/ > > >> > >> > >> > >> > product/ProductServices.xml"/> > > >> > >> > >> > >> > <check-permission > > permission="CATALOG_PRICE_MAIN > > >> T"> > > >> > >> > >> > >> > <fail-property resource="ProductUiLabels" > > >> > >> > >> > >> > property="ProductPriceMaintPermissionError"/> > > >> > >> > >> > >> > </check-permission> > > >> > >> > >> > >> > <check-errors/> > > >> > >> > >> > >> > > > >> > >> > >> > >> > <call-simple-method method-name=" > > >> > >> > >> > inlineHandlePriceWithTaxInclud > > >> > >> > >> > >> > ed"/> > > >> > >> > >> > >> > > > >> > >> > >> > >> > <entity-one entity-name="ProductPrice" > > >> > >> > >> > >> > value-field="lookedUpValue"/> > > >> > >> > >> > >> > > > >> > >> > >> > >> > <!-- grab the old price value before setting > > >> nonpk > > >> > >> > >> parameter > > >> > >> > >> > >> fields > > >> > >> > >> > >> > --> > > >> > >> > >> > >> > <field-to-result field="lookedUpValue.price" > > >> > >> > >> > >> > result-name="oldPrice"/> > > >> > >> > >> > >> > > > >> > >> > >> > >> > <set-nonpk-fields map="parameters" > > >> > >> > >> > value-field="lookedUpValue"/> > > >> > >> > >> > >> > > > >> > >> > >> > >> > <now-timestamp field="nowTimestamp"/> > > >> > >> > >> > >> > <set field="lookedUpValue.lastModifiedDate" > > >> > >> > >> > >> > from-field="nowTimestamp"/> > > >> > >> > >> > >> > <set field="lookedUpValue.lastModif > > >> iedByUserLogin" > > >> > >> > >> > >> > from-field="userLogin.userLoginId"/> > > >> > >> > >> > >> > > > >> > >> > >> > >> > <store-value value-field="lookedUpValue"/> > > >> > >> > >> > >> > </simple-method> > > >> > >> > >> > >> > > > >> > >> > >> > >> > The productID does exists in Entity ProductPrice > > >> > >> > >> > >> > Where am I going wrong ? > > >> > >> > >> > >> > > > >> > >> > >> > >> > thanks & regds > > >> > >> > >> > >> > Rajesh Mallah. > > >> > >> > >> > >> > > > >> > >> > >> > >> > > >> > >> > >> > > > > >> > >> > >> > > > > >> > >> > >> > > > >> > >> > >> > > >> > >> > > > > >> > >> > > > > >> > >> > > > >> > >> > > >> > > > > >> > > > > >> > > > >> > > > > > > > > >