Getting wrong values!
Hi,
In the following code I'm trying to read the pixels of a bufered image into an array then use these pixels in another process, what I have figured that after reading the pixels I've got two pixel values (-1, -16777216) whereas I'm reading a binary image and suppose to have 0 and 1!!
Where is the wrong in this code ?
// Read histogram image in image of type Image
Image Histimage = Toolkit.getDefaultToolkit().createImage(bi[0].getSource());
// First get the Width and Hieght of origenal histogram
int ImgW = Histimage.getWidth(this);
int ImgH = Histimage.getHeight(this);
pixelInput = new int[ImgW*ImgH];
PixelGrabber pg = new PixelGrabber(Histimage, 0, 0, ImgW, ImgH,pixelInput, 0, ImgW);
try {
pg.grabPixels();
catch(InterruptedException e)
System.err.println("Grabbing Interrupted");
e.printStackTrace();
" Print those values out in hex and then interpret
them as AARRGGBB (alpha, red, green, blue). One's
white, and the other's black.
Ok. But how to do that ?Take a look at Integer.toHexString(int i)
Kaj
Similar Messages
-
Getting wrong values in User Defined Fields
Hi Experts,
I am facing strange error while developing addon, my scenario is like below
1. Created .srf form which has 3 text box, 3rd text box does calculation(Subtraction) of other two.
2. For example 1st textbox has value 5000 and 2nd text box has 1000 but the value showing in 3rd textbox is 4999.
3. while debugging the code , values are coming properly in to variable. but after assigning it to the textbox values are not rite.
IMP NOTE:
Same code is working fine in one machine (windows server 2008r,64-bit) but not working in other machine(windows server 2008r,64-bit)
same problem has been faced in windows 8 system also.
It would be very helpfull if anybody tells what might be the problem.
ThanksHi Parvatha,
Thanks for reply also sorry for confusion., here i made some changes in code and getting same error
If pVal.EventType = SAPbouiCOM.BoEventTypes.et_LOST_FOCUS And pVal.ItemUID = "matItems" Then
oEdit1 = oForm.Items.Item("txtToWt").Specific
oMatrix = oForm.Items.Item("matItems").Specific
Dim sum As Double = 0.0
For k As Integer = 1 To oMatrix.VisualRowCount
oEdit = oMatrix.Columns.Item("colBndwt").Cells.Item(k).Specific
Dim qt As Double = oEdit.Value
sum = sum + qt // Here getting right value
oEdit1.Value = sum // Not showing right value
Next
End If
NOTE: I've checked same source in 2 different machines it is working fine (earlier code also). only i am getting error in specific machine in client place.
if any issue with operating system? or any settings?
thanks
M G -
Getting wrong values from modbus slave
Hi,
I'm trying to get data out of a lumel na5 digital meter. The device is connected via its RS485, through a RS232->RS485 converter to the RS232 port of the PC.
I've donwloaded the NI modbug library, and was able after some work to communicate with the device.
The problem is that the data I get out of it is wrong. I monitored the request and response data that the VI send, and it looks ok but the data is not correct.
Anybody has some similar experience?
Thanks in advance,
Eyal.Hi,
I do not have any experience with your device but, if you get data (even if it is wrong) from your device with a ModBus protocol you have your communication working !!
The wrong ModBus data is often caused by simply using the wrong register number(s). Start at 0 or 1, hexa and decimal mixup, invalid register numbers in the range, things like that. -
Getting wrong values for decimal value in Bex report
Hi,
I am getting some problem in Bexreport decimal values.
In ODS i am able to look the values for this key figure
(Total PO Release Val)= 140.692,00,the same value in Bex report looks like this $ 140,692.00.
Here one calculation is going with these above values
% Used = 'Total PO Release Val' / 'Target Value' * 100
as per ODS value calculation it is correct = 140.692/1000 * 100 =14.692
as per Bex it is coming like this = 140,692.00/1000 *100 = 142.692.
in Bex report Percentage valus is not considering value is taking as 140,692.00 rather than 140.692.I mean to say decemal values are ignoring while calculation in Bexreport.can you any please advice me how to comeout of this problem.Appreciate your help.
Regards
Ramesh<i> "(Total PO Release Val)= 140.692,00,the same value in Bex report looks like this $ 140,692.00."
</i>
How do you check the ODS value? The amount will only have two decimal places after it, so you can't have a value like 140.692,00. It seems to be an issue of user's decimal notation (where decimal is represented by comma, and thousand seperator by '.'). Go to user profile, change this setting (in default tab) to correct one (ie decimal being represented by '.') and login again and check it. The value that you see in ODS is 'one hundred forty thousand six hundred ninety two, the same that you get in Bex, only the representation is different). -
Hi..
I created a request in presentation servicews it includes " employ id,name,organization.cost center,annul salary,haouly salary, head count". for employ 13 cost centers available so 13 annul salaries for 13 organizations.each has annul saari 10400,hourly salary 10.previously when i run the request with headcount not including salaries headcount is 1 for 13 rows. when head count is not included in the requst and ran request it gives for 13 rows salaries are 10,400,10 respectively. when i add the head count to the previous request the salaries become 135200,130 respectively. actual head for each organization is 1.in the requst it show as 13. the headcount field in business layes uses 'other sum(headcount),date last(headcount). i need it to same values for salaries after addition of
headcount also.
Thank you.
Edited by: user10797474 on May 20, 2009 8:08 AMDid you already have a look in the log file to see the SQL which is sent to the DB?
This might be a modeling issue in your RPD. Check if you have set the correct dimensionlevels for your facts.
Regards
John
http://obiee101.blogspot.com/ -
Full Points sure: Wrong values populating in report (BEX)
Hi Gurus,
I got an Issue on CRM Report. Report is populating wrong values.
In the report, We have structure called Opportunity (in that structure fields are New opportunity, Close opportunity, Win opportunity and Open opportunity) in query and One key figure called Revenue.
On revenue we have one condition with variables. But, in that condition everything is fine.
The Condition Screen is like this:
Radio Button: Single characteristic is selected
"Opportunity Sales ID" selected in Characteristics.
Keyfigures:
Revenue New Opp TOP N TOP X OPP
Revenue Open Opp TOP N TOP X OPP
Revenue WINS TOP N TOP X OPP
Revenue Lost TOP N TOP X OPP
everything is right in this: If we select top 10 opportunities. we are getting wrong values
for ex: if we select top 10 Opportunities (in the selection screen) means REVENUES.
We are getting 12 values. 10 values are correct remaining 2 values are wrong..
There is no Update routine for revenue keyfield.
Can please suggest me on this What are possibilities for wrong values ...
FULL POINTS SURE FOR THIS
THANKS,
KNHi All,
Can anybody answer... this...
thanks,
KR -
Wrong value in java stored function
Hi All,
i have written a java stored function,
at the end of the code it insert record into the database
among other columns also a number(18,3) column,
when I debug it (out side of server) - works fine.
when I load it to database i get wrong values in column
(like instead of 76.546 i get 77.667) I can't figure out where it comes from.
I use big decimal in java code.
if i Hard code the value in java code it works fine!
am I missing something ?, calculations/ data type different out side then inside database? using oracle 10.2.0.2
Cheers
SaharHi
the code calculate some averages of amounts ( money) according to several
conditions,and parameters given to the function and stores the average into table in the database
the money columns are of data type 18,3 , both source and target tables have same structure.
thanks
Sahar -
Not getting correct values in ODS
BW gurus
when i do delta loads for ODS i am getting strange values into my ods.How ever if i do full loads on ods ,i am getting correct values(same values as RSA3).
1 .Any idea why i am getting wrong values if i do delta loads .
2.If i make this ods as full load(currently delta) ,there are already few reports on this ods ,Will there be any effect on those reports?Riccardo,Tony
Thanks for your quick reply.
I have in ods as follows
Asset fisper qty
1 006.2006 2
1 007.2006 3
Now i have added 2 more assets to period 6
in RSA3 is ok as follows
Asset fisper qty
1 006.2006 4
1 007.2006 3
In ods with delta load is not ok as follows
Asset fisper qty
1 006.2006 9
1 007.2006 3
In ods with full load is OK as follows
Asset fisper qty
1 006.2006 4
1 007.2006 3
any advice greatly appreciated -
Condition value of Tax gets wrongly added to Total value of Contract
Hi All,
I'm currently investigating an issue where there are 2 line items in an SAP Sales Contract. There is a human error in the second line where the billing end date is less than billing start date in the billing plan. Consequently, the second line has null Outgoing target value.
However, the header Total value in the Contract gets wrongly calculated as Basic condition value of 1st line + Condition value of tax condition type of line one due to this. When I modify the billing end date for the second line item to be a date greater than the billing start date, the above problem disappears and the total value of the contract does not include the tax component.
For eg.
Normal Error free Contract
Total Value at Header = 700.00 EUR
Material Outgoing Target val
Item 0010 MAT1 450.00 ( 450 + 50 (tax ) )
Item 0020 MAT2 150.00
Contract with billing plan error in second line
Total value at Header = 550.00 EUR
MAterial Outgoing target val
Item 0010 MAT1 450.00 ( 450 + 50 (tax ) )
Item 0020 MAT2 0.00
Any inputs would be most welcome.
Regards,
Venkatesh.Got the solution by making the condition type as manual.
Thanks.
Dhruba -
Wrong value getting updated into konv table.
Hi,
i have created 1 sales order through VA01 transaction.
when i checked this sales order value into VA02 It shows 14,700, but when i check into KONV table this value shows 147.00 .
please suggest a solution .
thanks
AbhayHello Abhay,
KONV is a table that deals with Condition types.
It's not a wrong value but only a different way used by SAP to store the value.
This rule is valid for all table where an amount, a percentage or unit dimension is stored.
Please find below two links for your reference.
For Eg - SAP will store 14.7 as 147 internally in SAP table.
http://scn.sap.com/thread/55183
http://scn.sap.com/thread/1208210
Regards,
Vikas -
How to get multiple values from the list
I've a list of an item which I queried it from the database. I also created a button that will takes a selected items from the list when it was clicked. I used javabean to get the data from database.
<% // clicked on Select District Button
Vector vselectedDistrict = new Vector();
Vector vdistrictID = new Vector();
String tmpSelectDistrict = "";
tmpSelectDistrict = request.getParameter("bSelectDistrict");
if(tmpSelectDistrict != null)
// get multiple values from the list
String[] selectedDistrict = request.getParameterValues("usrTDistrict");
vselectedDistrict.clear();
vdistrictID.clear();
if((selectedDistrict != null) && (selectedDistrict.length != 0))
for(int i=0;i<selectedDistrict.length;i++)
vselectedDistrict.addElement(selectedDistrict);
vdistrictID = dbaseInfo.getcurrentDistrictID(nstate,vselectedDistrict);
for(int i=0;i<vdistrictID.size();i++)
out.println("district = " + selectedDistrict[i]); out.println("district ID= " + vdistrictID.get(i).toString());
%>
// get vdistrict from the database here......
<select name="usrTDistrict" size="5" multiple>
<% for(int i = 0; i< vdistrict.size(); i++)
%>
<option value="<%=vdistrict.get(i).toString()%>"><%=vdistrict.get(i).toString()%></option>
<%
%>
</select>
<input type="submit" name="bSelectDistrict" value="Select District">
Lets say the item that i selected from the list is 'Xplace' and I clicked on the Select District button,
what I got is this error message:
org.apache.jasper.JasperException: Unable to convert string 'Xplace' to class java.util.Vector for attribute usrTDistrict: java.lang.IllegalArgumentException: Property Editor not registered with the PropertyEditorManager
So where is going wrong and what the message means?. Any help very much appreciated. ThanksThese are just guesses that might hopefully steer you in directions you haven't looked in yet.
I presume you used triangle brackets (< >) to avoid having the Jive Forum think it was the "italics" tag?
Are you certain this: dbaseInfo.getcurrentDistrictID(nstate,vselectedDistrict);
expects a Vector as its second parameter? And returns a Vector?
I don't believe you've shown how you use the javabean, or its code? Perhaps it should be rewritten to accept an array of strings instead of a Vector? -
Webi base on BW query based on Infoset comes back with wrong values
Hello:
I have a Webi report on an OLAP Universe, on Bex Query.
The bex query is based on 1 INFOSET.
When I run the webi report the values that comes back a totally wrong values.
The correct results are not brought back.
When I do a test with crystal reports to the infoset, I can see the correct values. (I'm aware crystal uses different drivers).
The test is BW query designer, and crystal brings back proper values from Infoset based BW query.
Webi on Infoset based BW Query comes back with wrong data.
query is simple.
Pull in 3 attributes, 3 key figures, where componentkey = "111"
I get 36 rows in Crystal and 36 rows in Bex Analyzer, 36 rows in BW query designer (web analyzer).
I get many rows in webi (almost like a CARTENSIAN product).
I search a round this forum but still did not see a conclusive answer to this problem.
But I see another thread that several others faced this same issue without a resolution.
My environment.
BOE XI 3.1 SP2
No fix packs
SAP IK 3.1 SP2
HPUX-IA64
Thanks in advance for any help.
DwayneWas this problem ever solved?
I am having a similar problem with an infoset based query.
I have created the BW infoset, and confirmed that the correct data is returned from the underlying infoproviders. A simple BW query on that infoset yields the same results.
Create the universe, and then the WEBI, and WEBI now shows hundreds of records where I expect 10. Data is being returned in WEBI that definitely shouldn't be there. It's almost like the restrictions applied in the characteristic restriction area of my BW query are being ignored, even if I include them in the WEBI query.
Cheers,
Andrew -
Get cell value in Planning Data form and using it in a business rule
Hi Everybody,
if i set the data type of an Account Member as text, is there a way to get the value inserted by the user in a dataform, turning it as dimensional member and using it in a business rule?
So, if the user insert the value "USA" in a cell, can i use any functions to tell essbase that "USA" is a dimensional member and then using it in a business rule, for example in a cross-dimension like Period1->FY12->USA?
I tried to use the function @Member and it doesn't work, but i'm wondering if there is a way that can let me get the value inserted and use it just like a dimensional member. What are the ways that can let user input value that can be used in a business rule? I think one is by using SmartList, is there any other ways? Maybe using variables?? As an alternative i tried to use Prompt Variable but there are too many members on which the rule must run.
Please help me, i wanna know if i can or not let the user input the member on which the rule must run...
Thank all guys
Bye
MaurizioThanks EW for your answer,
YesI could use SmartList even if i think it's very tough to handle. My experience on using SmartList in caclc script is not so good. I try to enter in details of my requirement:
I have 500 account members.
For each one, I have to calculate the monthly budget by sharing the amount among the months. The user wants to calculate it on the basis of the actual flow(over the months) of an unspecified account of the prior year. The unspecified account must be inserted in a data form.
So, i could use a Smart List but it colud be of 500 elements and then i should make a rule with as many IF as how many are the accounts. Or im wrong? The only way to use smart list dynamically in a business rule is by referring its values in a IF condition. Or i'm wrong.
I tried to use execution variable ma it seems don't work. In this case the user must pay attention to write the account correctly, otherwise as you say the rule doesn't work.
The value in PD0A020 is "PD0A000" (that is a dimensional member). The value in PD0A000 is "hello". In PD0A040 the rule returns "PD0A000" and not "hello" as i would. The function @Member appears to be not able to catch the dimensional member by the value in PD0A000.
{Example}="test"->"Input"->"Scenario_test"->"FY12"->"PD0A020";
Fix("test1","Input","Scenario_test","FY12")
"PD0A040"=@Member({Example});
endfix
So, my doubt is: is it possible for Essbase/Planning to use the value inserted in a data form and to turn it in a dimensional member? What are the practicable ways to let the user input/choose the member on which makes the rule run?
Thank you Ew, thank you guys
Maurizio -
How to use Ajax Get Multiple Values in Tabular form?
Hi All-
I am trying to use AJAX to get multiple values in tabular form by using Denes Kubicek's example in the following link -
http://apex.oracle.com/pls/otn/f?p=31517:239:9172467565606::NO:::
Basically, I want to use the drop down list to populate rest of the values on the form.
I have created the example(Ajax Get Multiple Values, application 54522) on Oracle site -
http://apex.oracle.com/pls/apex/f?p=4550:1:0:::::
Workspace: iConnect
login: demo
password: demo
I was able to duplicate his example on page 1 (home page).
However, I want to use system generate tabular form to finish this example, and was not able to populate the data correctly.
Page 2 (method 2) is the one that I am having trouble to populate the column values. When I checked application item values in Session, and the values seems to be populated correctly.
This is what I have done on this page:
1. Create an Application Process On Demand - Set_Multi_Items_Tabular2:
DECLARE
v_subject my_book_store.subject%TYPE;
v_price my_book_store.price%TYPE;
v_author my_book_store.author%TYPE;
v_qty NUMBER;
CURSOR cur_c
IS
SELECT subject, price, author, 1 qty
FROM my_book_store
WHERE book_id = :temporary_application_item2;
BEGIN
FOR c IN cur_c
LOOP
v_subject := c.subject;
v_price := c.price;
v_author := c.author;
v_qty := c.qty;
END LOOP;
OWA_UTIL.mime_header ('text/xml', FALSE);
HTP.p ('Cache-Control: no-cache');
HTP.p ('Pragma: no-cache');
OWA_UTIL.http_header_close;
HTP.prn ('<body>');
HTP.prn ('<desc>this xml genericly sets multiple items</desc>');
HTP.prn ('<item id="f04_' || :t_rownum || '">' || v_subject || '</item>');
HTP.prn ('<item id="f05_' || :t_rownum || '">' || v_price || '</item>');
HTP.prn ('<item id="f06_' || :t_rownum || '">' || v_author || '</item>');
HTP.prn ('<item id="f07_' || :t_rownum || '">' || v_qty || '</item>');
HTP.prn ('</body>');
END;
2. Create two application items - TEMPORARY_APPLICATION_ITEM2, T_ROWNUM2
3. Put the following in the Page Header:
<script language="JavaScript" type="text/javascript">
function f_set_multi_items_tabular2(pValue, pRow){
var get = new htmldb_Get(null,html_GetElement('pFlowId').value,
'APPLICATION_PROCESS=Set_Multi_Items_Tabular2',0);
if(pValue){
get.add('TEMPORARY_APPLICATION_ITEM2',pValue)
get.add('T_ROWNUM2',pRow)
}else{
get.add('TEMPORARY_APPLICATION_ITEM2','null')
gReturn = get.get('XML');
if(gReturn){
var l_Count = gReturn.getElementsByTagName("item").length;
for(var i = 0;i<l_Count;i++){
var l_Opt_Xml = gReturn.getElementsByTagName("item")[i];
var l_ID = l_Opt_Xml.getAttribute('id');
var l_El = html_GetElement(l_ID);
if(l_Opt_Xml.firstChild){
var l_Value = l_Opt_Xml.firstChild.nodeValue;
}else{
var l_Value = '';
if(l_El){
if(l_El.tagName == 'INPUT'){
l_El.value = l_Value;
}else if(l_El.tagName == 'SPAN' && l_El.className == 'grabber'){
l_El.parentNode.innerHTML = l_Value;
l_El.parentNode.id = l_ID;
}else{
l_El.innerHTML = l_Value;
get = null;
</script>
Add the follwing to the end of the above JavaScript:
<script language="JavaScript" type="text/javascript">
function setLOV(filter, list2)
var s = filter.id;
var item = s.substring(3,8);
var field2 = list2 + item;
f_set_multi_items_tabular2(filter, field2);
4. Tabular form query:
select
"BOOK_ID",
"BOOK",
"SUBJECT",
"PRICE",
"AUTHOR",
"QTY",
"BOOK_ID" BOOK_ID_DISPLAY
from "#OWNER#"."MY_BOOK_STORE"
5. In Book_ID_DISPLAY column attribute:
Add the following code to element attributes: onchange="javascript:f_set_multi_items_tabular2(this.value,'#ROWNUM#');"
Changed to -> onchange="javascript:setLOV(this,'f03');"
Now, T_ROWNUM2 returns value as f03_0001. But, TEMPORARY_APPLICATION_ITEM2 returns as [object HTMLSelectElement]...
Please help me to see how I can populate the data with this tabular form format. Thanks a lot in advanced!!!
Ling
Updated code in Red..Ling
Lets start with looking at what the javascript code is doing.
function f_set_multi_items_tabular(pValue, pRow){
/*This will initiate the url for the demand process to run*/
var get = new htmldb_Get(null,html_GetElement('pFlowId').value,
'APPLICATION_PROCESS=Set_Multi_Items_Tabular',0);
if(pValue){
/*If there is an value than submit item name with value*/
get.add('TEMPORARY_APPLICATION_ITEM',pValue)
get.add('T_ROWNUM',pRow)
}else{
/*Else set the item TEMPORARY_APPLICATION_ITEM to null*/
get.add('TEMPORARY_APPLICATION_ITEM','null')
/*Submit the url and te returned document is of type XML*/
gReturn = get.get('XML');
if(gReturn){
/*There is something returned*/
var l_Count = gReturn.getElementsByTagName("item").length;
/*For all elements of the tag item*/
for(var i = 0;i<l_Count;i++){
/*Get the item out of the XML*/
var l_Opt_Xml = gReturn.getElementsByTagName("item")[i];
/*Get the id of the item*/
var l_ID = l_Opt_Xml.getAttribute('id');
/*Get the element in the original page with the same id as
**the item we have in the XML produced by the ondemand process
var l_El = html_GetElement(l_ID);
/*Now get the value of the item form the XML*/
if(l_Opt_Xml.firstChild){
var l_Value = l_Opt_Xml.firstChild.nodeValue;
}else{
/*There is no value*/
var l_Value = '';
if(l_El){
/*There is an element with the same id as the item we are processing*/
if(l_El.tagName == 'INPUT'){
/*The element is an input item just set the value*/
l_El.value = l_Value;
}else if(l_El.tagName == 'SPAN' && l_El.className == 'grabber'){
/*If it is a span elment and has the class grabber
**Then set the innerHTML of the parent to the value
**and the id of the parent to the id
l_El.parentNode.innerHTML = l_Value;
l_El.parentNode.id = l_ID;
}else{
/*Else set the value as innerHTML*/
l_El.innerHTML = l_Value;
get = null;
Now where it went wrong in your initial post
The XML that was returned by your XML process would be something like
<body>
<desc>this xml genericly sets multiple items</desc>
<item id="f02_1">CSS Mastery</item>
<item id="f03_1">22</item>
<item id="f04_1">Andy Budd</item>
<item id="f05_1">1</item>
</body>
When you don't use apex_item to create your tabular form a item in the table will look like
<input id="f02_0001" type="text" value="CSS Mastery" maxlength="2000" size="16" name="f05" autocomplete="off">
Notice the id's f02_1 and f02_0001 don't match.
So to make it work the XML would have to look like
<body>
<desc>this xml genericly sets multiple items</desc>
<item id="f02_0001">CSS Mastery</item>
<item id="f03_0001">22</item>
<item id="f04_0001">Andy Budd</item>
<item id="f05_0001">1</item>
</body>
To do that simply use lpad in the ondemand process like
HTP.prn ('<item id="f02_' || lpad(:t_rownum,4,'0') || '">' || v_subject || '</item>');
HTP.prn ('<item id="f03_' || lpad(:t_rownum,4,'0') || '">' || v_price || '</item>');
HTP.prn ('<item id="f04_' || lpad(:t_rownum,4,'0') || '">' || v_author || '</item>');
HTP.prn ('<item id="f05_' || lpad(:t_rownum,4,'0') || '">' || v_qty || '</item>');
Keep in mind that the above is based on your original post and #ROWNUM# not being lpadded with zero's.
Nicolette -
NullPointerException - Cannot get the value from variable f_cashGiven
In SubCheckout.java (a POS), what I want is when Payment button (f_cashPayment) is pressed, the action "Cash" is performed, get the value from Cash Given (f_cashGiven), do the subtraction and post the value as Cash Return (f_cashReturn). The code is filled in actionPerformed. But I cannot get the value by using f_cashGiven.getValue() from VNumber class. It returns NULL. This should be quite straight forward, but I do not know what is wrong. Please help!
Enclosed please find the source code of SubCheckout.java and VNumber.java
This is the code of SubCheckout.java :
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
package org.compiere.pos;
import java.awt.*;
import java.awt.event.*;
import java.math.BigDecimal;
import javax.swing.border.*;
import org.compiere.grid.ed.*;
import org.compiere.swing.*;
import org.compiere.util.*;
* POS Checkout Sub Panel
* @author Jorg Janke
* @version $Id: SubCheckout.java,v 1.3 2005/03/11 20:28:22 jjanke Exp $
public class SubCheckout extends PosSubPanel implements ActionListener
* Constructor
* @param posPanel POS Panel
public SubCheckout (PosPanel posPanel)
super (posPanel);
} // PosSubCheckout
private CButton f_register = null;
private CButton f_summary = null;
private CButton f_process = null;
private CButton f_print = null;
private CLabel f_lcreditCardNumber = null;
private CTextField f_creditCardNumber = null;
private CLabel f_lcreditCardExp = null;
private CTextField f_creditCardExp = null;
private CLabel f_lcreditCardVV = null;
private CTextField f_creditCardVV = null;
private CButton f_cashPayment = null;
private CLabel f_lcashGiven = null;
private VNumber f_cashGiven = null;
private CLabel f_lcashReturn = null;
private VNumber f_cashReturn = null;
private CButton f_creditPayment = null;
/** Logger */
private static CLogger log = CLogger.getCLogger(SubCheckout.class);
* Initialize
public void init()
// Title
TitledBorder border = new TitledBorder(Msg.getMsg(Env.getCtx(), "Checkout"));
setBorder(border);
// Content
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = INSETS2;
// -- 0
gbc.gridx = 0;
f_register = createButtonAction("Register", null);
gbc.gridy = 0;
add (f_register, gbc);
f_summary = createButtonAction("Summary", null);
gbc.gridy = 1;
add (f_summary, gbc);
f_process = createButtonAction("Process", null);
gbc.gridy = 2;
add (f_process, gbc);
f_print = createButtonAction("Print", null);
gbc.gridy = 3;
add (f_print, gbc);
// -- 1 -- Cash
gbc.gridx = 1;
gbc.gridheight = 2;
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = .1;
CPanel cash = new CPanel(new GridBagLayout());
cash.setBorder(new TitledBorder(Msg.getMsg(Env.getCtx(), "Cash")));
gbc.gridy = 0;
add (cash, gbc);
GridBagConstraints gbc0 = new GridBagConstraints();
gbc0.insets = INSETS2;
gbc0.anchor = GridBagConstraints.WEST;
f_lcashGiven = new CLabel(Msg.getMsg(Env.getCtx(),"CashGiven"));
cash.add (f_lcashGiven, gbc0);
f_cashGiven = new VNumber("CashGiven", false, false, true, DisplayType.Amount,
Msg.translate(Env.getCtx(), "CashGiven"));
f_cashGiven.addActionListener(this);
f_cashGiven.setColumns(10, 25);
cash.add (f_cashGiven, gbc0);
f_cashGiven.setValue(Env.ZERO);
f_lcashReturn = new CLabel(Msg.getMsg(Env.getCtx(),"CashReturn"));
cash.add (f_lcashReturn, gbc0);
f_cashReturn = new VNumber("CashReturn", false, true, false, DisplayType.Amount,
"CashReturn");
f_cashReturn.setColumns(10, 25);
cash.add (f_cashReturn, gbc0);
f_cashReturn.setValue(Env.ZERO);
f_cashPayment = createButtonAction("Payment", null);
f_cashPayment.setActionCommand("Cash");
gbc0.anchor = GridBagConstraints.EAST;
gbc0.weightx = 0.1;
cash.add (f_cashPayment, gbc0);
// -- 1 -- Creditcard
CPanel creditcard = new CPanel(new GridBagLayout());
creditcard.setBorder(new TitledBorder(Msg.translate(Env.getCtx(), "CreditCardType")));
gbc.gridy = 2;
add (creditcard, gbc);
GridBagConstraints gbc1 = new GridBagConstraints();
gbc1.insets = INSETS2;
gbc1.anchor = GridBagConstraints.WEST;
gbc1.gridx = 0;
gbc1.gridy = 0;
f_lcreditCardNumber = new CLabel(Msg.translate(Env.getCtx(), "CreditCardNumber"));
creditcard.add (f_lcreditCardNumber, gbc1);
gbc1.gridy = 1;
f_creditCardNumber = new CTextField(18);
creditcard.add (f_creditCardNumber, gbc1);
gbc1.gridx = 1;
gbc1.gridy = 0;
f_lcreditCardExp = new CLabel(Msg.translate(Env.getCtx(),"CreditCardExp"));
creditcard.add (f_lcreditCardExp, gbc1);
gbc1.gridy = 1;
f_creditCardExp = new CTextField(5);
creditcard.add (f_creditCardExp, gbc1);
gbc1.gridx = 2;
gbc1.gridy = 0;
f_lcreditCardVV = new CLabel(Msg.translate(Env.getCtx(), "CreditCardVV"));
creditcard.add (f_lcreditCardVV, gbc1);
gbc1.gridy = 1;
f_creditCardVV = new CTextField(5);
creditcard.add (f_creditCardVV, gbc1);
gbc1.gridx = 3;
gbc1.gridy = 0;
gbc1.gridheight = 2;
f_creditPayment = createButtonAction("Payment", null);
f_creditPayment.setActionCommand("CreditCard");
gbc1.anchor = GridBagConstraints.EAST;
gbc1.weightx = 0.1;
creditcard.add (f_creditPayment, gbc1);
} // init
* Get Panel Position
public GridBagConstraints getGridBagConstraints()
GridBagConstraints gbc = super.getGridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 3;
return gbc;
} // getGridBagConstraints
* Dispose - Free Resources
public void dispose()
super.dispose();
} // dispose
* Action Listener
* @param e event
public void actionPerformed (ActionEvent e)
String action = e.getActionCommand();
if (action == null || action.length() == 0)
return;
log.info( "PosSubCheckout - actionPerformed: " + action);
if (e.getSource() == f_cashGiven) {
f_cashGiven.setValue(f_cashGiven.getValue());
System.out.println("f_cashGiven"+f_cashGiven.getDisplay());
// Register
// Summary
// Print
if (action.equals("Cash")) {
BigDecimal CashGiven, GrandTotal, CashReturn;
System.out.println("Cash given is "+f_cashGiven.getDisplay());
CashGiven = (BigDecimal)f_cashGiven.getValue();
GrandTotal = (BigDecimal)p_posPanel.f_curLine.getOrder().getGrandTotal();
CashReturn = CashGiven.subtract(GrandTotal);
f_cashReturn.setValue(CashReturn);
// Cash (Payment)
// CreditCard (Payment)
} // actionPerformed
} // PosSubCheckoutThis is the code of VNumber.java :
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
package org.compiere.grid.ed;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.math.*;
import java.text.*;
import java.util.logging.*;
import javax.swing.*;
import javax.swing.text.*;
import org.compiere.apps.*;
import org.compiere.model.*;
import org.compiere.swing.*;
import org.compiere.util.*;
* Number Control
* @author Jorg Janke
* @version $Id: VNumber.java,v 1.41 2005/09/03 01:57:16 jjanke Exp $
public final class VNumber extends JComponent
implements VEditor, ActionListener, KeyListener, FocusListener
/** Number of Columns (12) */
public final static int SIZE = 12;
* IDE Bean Constructor
public VNumber()
this("Number", false, false, true, DisplayType.Number, "Number");
} // VNumber
* Create right aligned Number field.
* no popup, if WindowNo == 0 (for IDs)
* @param columnName column name
* @param mandatory mandatory
* @param isReadOnly read only
* @param isUpdateable updateable
* @param displayType display type
* @param title title
public VNumber(String columnName, boolean mandatory, boolean isReadOnly, boolean isUpdateable,
int displayType, String title)
super();
super.setName(columnName);
m_columnName = columnName;
m_title = title;
setDisplayType(displayType);
LookAndFeel.installBorder(this, "TextField.border");
this.setLayout(new BorderLayout());
// this.setPreferredSize(m_text.getPreferredSize()); // causes r/o to be the same length
// int height = m_text.getPreferredSize().height;
// setMinimumSize(new Dimension (30,height));
// *** Text ***
m_text.setBorder(null);
m_text.setHorizontalAlignment(JTextField.TRAILING);
m_text.addKeyListener(this);
m_text.addFocusListener(this);
// Background
setMandatory(mandatory);
this.add(m_text, BorderLayout.CENTER);
// *** Button ***
m_button.setIcon(Env.getImageIcon("Calculator10.gif"));
m_button.setMargin(new Insets(0, 0, 0, 0));
m_button.setFocusable(false);
m_button.addActionListener(this);
this.add (m_button, BorderLayout.EAST);
// Prefereed Size
this.setPreferredSize(this.getPreferredSize()); // causes r/o to be the same length
// Size
setColumns(SIZE, CComboBox.FIELD_HIGHT-4);
// ReadWrite
if (isReadOnly || !isUpdateable)
setReadWrite(false);
else
setReadWrite(true);
} // VNumber
* Dispose
public void dispose()
m_text = null;
m_button = null;
m_mField = null;
} // dispose
* Set Document
* @param doc document
protected void setDocument(Document doc)
m_text.setDocument(doc);
} // getDocument
private String m_columnName;
protected int m_displayType; // Currency / UoM via Context
private DecimalFormat m_format;
private String m_title;
private boolean m_setting;
private String m_oldText;
private String m_initialText;
private boolean m_rangeSet = false;
private Double m_minValue;
private Double m_maxValue;
private boolean m_modified = false;
/** The Field */
private CTextField m_text = new CTextField(SIZE); // Standard
/** The Button */
private CButton m_button = new CButton();
private MField m_mField = null;
/** Logger */
private static CLogger log = CLogger.getCLogger(VNumber.class);
* Set no of Columns
* @param columns columns
public void setColumns (int columns, int height)
m_text.setPreferredSize(null);
m_text.setColumns(columns);
Dimension size = m_text.getPreferredSize();
if (height > size.height) // default 16
size.height = height;
if (CComboBox.FIELD_HIGHT-4 > size.height)
size.height = VLookup.FIELD_HIGHT-4;
this.setPreferredSize(size); // causes r/o to be the same length
this.setMinimumSize(new Dimension (columns*10, size.height));
m_button.setPreferredSize(new Dimension(size.height, size.height));
} // setColumns
* Set Range with min & max
* @param minValue min value
* @param maxValue max value
* @return true, if accepted
public boolean setRange(Double minValue, Double maxValue)
m_rangeSet = true;
m_minValue = minValue;
m_maxValue = maxValue;
return m_rangeSet;
} // setRange
* Set Range with min & max = parse US style number w/o Gouping
* @param minValue min value
* @param maxValue max value
* @return true if accepted
public boolean setRange(String minValue, String maxValue)
if (minValue == null || maxValue == null)
return false;
try
m_minValue = Double.valueOf(minValue);
m_maxValue = Double.valueOf(maxValue);
catch (NumberFormatException nfe)
return false;
m_rangeSet = true;
return m_rangeSet;
} // setRange
* Set and check DisplayType
* @param displayType display type
public void setDisplayType (int displayType)
m_displayType = displayType;
if (!DisplayType.isNumeric(displayType))
m_displayType = DisplayType.Number;
m_format = DisplayType.getNumberFormat(displayType);
m_text.setDocument (new MDocNumber(displayType, m_format, m_text, m_title));
} // setDisplayType
* Set ReadWrite
* @param value value
public void setReadWrite (boolean value)
if (m_text.isReadWrite() != value)
m_text.setReadWrite(value);
if (m_button.isReadWrite() != value)
m_button.setReadWrite(value);
// Don't show button if not ReadWrite
if (m_button.isVisible() != value)
m_button.setVisible(value);
} // setReadWrite
* IsReadWrite
* @return true if rw
public boolean isReadWrite()
return m_text.isReadWrite();
} // isReadWrite
* Set Mandatory (and back bolor)
* @param mandatory mandatory
public void setMandatory (boolean mandatory)
m_text.setMandatory(mandatory);
} // setMandatory
* Is it mandatory
* @return true if mandatory
public boolean isMandatory()
return m_text.isMandatory();
} // isMandatory
* Set Background
* @param color color
public void setBackground(Color color)
m_text.setBackground(color);
} // setBackground
* Set Background
* @param error error
public void setBackground (boolean error)
m_text.setBackground(error);
} // setBackground
* Set Foreground
* @param fg foreground
public void setForeground(Color fg)
m_text.setForeground(fg);
} // setForeground
* Set Editor to value
* @param value value
public void setValue(Object value)
log.finest("Value=" + value);
if (value == null)
m_oldText = "";
else
m_oldText = m_format.format(value);
// only set when not updated here
if (m_setting)
return;
m_text.setText (m_oldText);
m_initialText = m_oldText;
m_modified = false;
} // setValue
* Property Change Listener
* @param evt event
public void propertyChange (PropertyChangeEvent evt)
if (evt.getPropertyName().equals(org.compiere.model.MField.PROPERTY))
setValue(evt.getNewValue());
} // propertyChange
* Return Editor value
* @return value value (big decimal or integer)
public Object getValue()
if (m_text == null || m_text.getText() == null || m_text.getText().length() == 0)
return null;
String value = m_text.getText();
// return 0 if text deleted
if (value == null || value.length() == 0)
if (!m_modified)
return null;
if (m_displayType == DisplayType.Integer)
return new Integer(0);
return Env.ZERO;
if (value.equals(".") || value.equals(",") || value.equals("-"))
value = "0";
try
Number number = m_format.parse(value);
value = number.toString(); // converts it to US w/o thousands
BigDecimal bd = new BigDecimal(value);
if (m_displayType == DisplayType.Integer)
return new Integer(bd.intValue());
if (bd.signum() == 0)
return bd;
return bd.setScale(m_format.getMaximumFractionDigits(), BigDecimal.ROUND_HALF_UP);
catch (Exception e)
log.log(Level.SEVERE, "Value=" + value, e);
if (m_displayType == DisplayType.Integer)
return new Integer(0);
return Env.ZERO;
} // getValue
* Return Display Value
* @return value
public String getDisplay()
return m_text.getText();
} // getDisplay
* Get Title
* @return title
public String getTitle()
return m_title;
} // getTitle
* Plus - add one.
* Also sets Value
* @return new value
public Object plus()
Object value = getValue();
if (value == null)
if (m_displayType == DisplayType.Integer)
value = new Integer(0);
else
value = Env.ZERO;
// Add
if (value instanceof BigDecimal)
value = ((BigDecimal)value).add(Env.ONE);
else
value = new Integer(((Integer)value).intValue() + 1);
setValue(value);
return value;
} // plus
* Minus - subtract one, but not below minimum.
* Also sets Value
* @param minimum minimum
* @return new value
public Object minus (int minimum)
Object value = getValue();
if (value == null)
if (m_displayType == DisplayType.Integer)
value = new Integer(minimum);
else
value = new BigDecimal(minimum);
setValue(value);
return value;
// Subtract
if (value instanceof BigDecimal)
BigDecimal bd = ((BigDecimal)value).subtract(Env.ONE);
BigDecimal min = new BigDecimal(minimum);
if (bd.compareTo(min) < 0)
value = min;
else
value = bd;
else
int i = ((Integer)value).intValue();
i--;
if (i < minimum)
i = minimum;
value = new Integer(i);
setValue(value);
return value;
} // minus
* Action Listener
* @param e event
public void actionPerformed (ActionEvent e)
log.config(e.getActionCommand());
if (ValuePreference.NAME.equals(e.getActionCommand()))
if (MRole.getDefault().isShowPreference())
ValuePreference.start (m_mField, getValue());
return;
if (e.getSource() == m_button)
m_button.setEnabled(false);
String str = startCalculator(this, m_text.getText(), m_format, m_displayType, m_title);
m_text.setText(str);
m_button.setEnabled(true);
try
fireVetoableChange (m_columnName, m_oldText, getValue());
catch (PropertyVetoException pve) {}
m_text.requestFocus();
} // actionPerformed
* Key Listener Interface
* @param e event
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) {}
* Key Listener.
* - Escape - Restore old Text
* - firstChange - signal change
* @param e event
public void keyReleased(KeyEvent e)
log.finest("Key=" + e.getKeyCode() + " - " + e.getKeyChar()
+ " -> " + m_text.getText());
// ESC
if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
m_text.setText(m_initialText);
m_modified = true;
m_setting = true;
try
if (e.getKeyCode() == KeyEvent.VK_ENTER) // 10
fireVetoableChange (m_columnName, m_oldText, getValue());
fireActionPerformed();
else // indicate change
fireVetoableChange (m_columnName, m_oldText, null);
catch (PropertyVetoException pve) {}
m_setting = false;
} // keyReleased
* Focus Gained
* @param e event
public void focusGained (FocusEvent e)
if (m_text != null)
m_text.selectAll();
} // focusGained
* Data Binding to MTable (via GridController.vetoableChange).
* @param e event
public void focusLost (FocusEvent e)
// log.finest(e.toString());
// APanel - Escape
if (e.getOppositeComponent() instanceof AGlassPane)
m_text.setText(m_initialText);
return;
try
fireVetoableChange (m_columnName, m_initialText, getValue());
fireActionPerformed();
catch (PropertyVetoException pve) {}
} // focusLost
* Invalid Entry - Start Calculator
* @param jc parent
* @param value value
* @param format format
* @param displayType display type
* @param title title
* @return value
public static String startCalculator(Container jc, String value,
DecimalFormat format, int displayType, String title)
log.config("Value=" + value);
BigDecimal startValue = new BigDecimal(0.0);
try
if (value != null && value.length() > 0)
Number number = format.parse(value);
startValue = new BigDecimal (number.toString());
catch (ParseException pe)
log.info("InvalidEntry - " + pe.getMessage());
// Find frame
Frame frame = Env.getFrame(jc);
// Actual Call
Calculator calc = new Calculator(frame, title,
displayType, format, startValue);
AEnv.showCenterWindow(frame, calc);
BigDecimal result = calc.getNumber();
log.config( "Result=" + result);
calc = null;
if (result != null)
return format.format(result);
else
return value; // original value
} // startCalculator
* Set Field/WindowNo for ValuePreference
* @param mField field
public void setField (MField mField)
m_mField = mField;
if (m_mField != null
&& MRole.getDefault().isShowPreference())
ValuePreference.addMenu (this, popupMenu);
} // setField
* Remove Action Listner
* @param l Action Listener
public void removeActionListener(ActionListener l)
listenerList.remove(ActionListener.class, l);
} // removeActionListener
* Add Action Listner
* @param l Action Listener
public void addActionListener(ActionListener l)
listenerList.add(ActionListener.class, l);
} // addActionListener
* Fire Action Event to listeners
protected void fireActionPerformed()
int modifiers = 0;
AWTEvent currentEvent = EventQueue.getCurrentEvent();
if (currentEvent instanceof InputEvent)
modifiers = ((InputEvent)currentEvent).getModifiers();
else if (currentEvent instanceof ActionEvent)
modifiers = ((ActionEvent)currentEvent).getModifiers();
ActionEvent ae = new ActionEvent (this, ActionEvent.ACTION_PERFORMED,
"VNumber", EventQueue.getMostRecentEventTime(), modifiers);
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying those that are interested in this event
for (int i = listeners.length-2; i>=0; i-=2)
if (listeners==ActionListener.class)
((ActionListener)listeners[i+1]).actionPerformed(ae);
} // fireActionPerformed
} // VNumberIf getValue() returns null, you need to trace the execution of the code and figure out which sequence of code is leading to the return of null. This method looks complex - a lot of if statements. If you do not have a debugger, put System.out.println statements inside the method to figure out what's going on.
Maybe you are looking for
-
I have an iTunes account where I have downloaded Digital movies & I am able to see the list on the desktop of the original downloads. When I log on another device with my login I do not see my list to access them. Why can't I access from another devi
-
BUG: Layers that are turned off show up in published pages
Layers that have visibility turned off in the timeline still show up in the published page. Also, these layers didn't have keyframes, which means they stayed on the entire time once they were instantiated. This makes it NOT appear within the program,
-
Hi, is available any tool to search for a text in a layout and event handlers of html pages of a BSP application ? Thanks Marian
-
Old version of quicktime won't uninstall
Just bought a new nano and everytime I go to install iTunes and Quicktime I get a message that it cant remove an older version of the Quicktime. I have tried most of the fixes that are suggested on the website but nothing has worked. I have searched
-
Trouble installing Fabric Manager 5.0.7 on 2008R2
Hello all, We are about to upgrade our older MDS-9124s to MDS-9148s and I wanted to install the new Fabric Manager. I am trying to install version 5.0.7. I am having a couple issues but am not sure if they are all related. First if I try to select th