Thanks FooShyn,
I just changed a bit the title and added a link from the dev section
https://cwiki.apache.org/confluence/display/OFBIZ/FAQ+-+Tips+-+Tricks+-+Cookbook+-+HowTo#FAQ-Tips-Tricks-Cookbook-HowTo-Developmenttips
Jacques
From: "Foo Shyn Chung" <[email protected]>
Hi Jacques,
I'd added a line at the bottom of the page as i don't know how the
structure of the wiki is. The title is : Note on using entity or
view-entity from other components
Please help inspect whether i wrote anything wrong.
Thanx
FooShyn
On Mon, Apr 9, 2012 at 6:40 PM, Jacques Le Roux <
[email protected]> wrote:
Maybe you could add a short description at https://cwiki.apache.org/**
confluence/display/OFBIZ/FAQ+-**+Tips+-+Tricks+-+Cookbook+-+**HowTo<https://cwiki.apache.org/confluence/display/OFBIZ/FAQ+-+Tips+-+Tricks+-+Cookbook+-+HowTo>
I think it's worth it
Jacques
From: "Foo Shyn Chung" <[email protected]>
I'd managed to solve the problem. It seems that the entitymodel.xml loads
according to the sequence of the component to be loaded as well.
For example, in my case, the view-entity ViewOfficerPaymentInfo is being
declared in the Payment entitymodel.xml while the ViewOfficerSalesReport
was declared in the Customer module.
Since i didn't explicitly stated the sequence to load the component in the
hot-deploy folder, the Customer component was loaded first before Payment,
and hence the view-entity definition in the Payment module wasn't
available
in the Customer module.
After i added the component-load.xml and explicitly stating the sequence,
everything started to work like a charm.
Hope this can help whoever that's facing the same problem.
Thanx
FooShyn
On Sun, Apr 8, 2012 at 12:01 PM, Foo Shyn Chung <[email protected]>
wrote:
The problem is my SQL need to have left join on two tables, which are
essentially a header and detail tables and they need to have a inner join
to make it meaningful.
I found that there are a few existing view-entity in Example and in
product that are doing what i'm looking to do, but strange thing is my
view-entity wouldn't pick up the internal view-entity aliases...
Thanx
FooShyn
On Sat, Apr 7, 2012 at 6:56 PM, Jacques Le Roux <
[email protected]> wrote:
I did not into any details at all, but I'd suggest you to rather create
another view-entity which would combine what you need from the 2 others.
(ie using directly real entities you used in both others)
Jacques
From: "Foo Shyn Chung" <[email protected]>
Further on the issue, i tried moving the selection from using the
entity-condition in xml to a groovy script and using
delegator.findList.
However the problem seems like persisting.
Is this a bug in OFBiz? or simple the way i declare my view-entity is
wrong?
Thanx
FooShyn
On Thu, Apr 5, 2012 at 5:30 PM, Foo Shyn Chung <[email protected]>
wrote:
Hi all,
I'm having issue trying to select a view entity field from within
another
view entity.
I have to view entity currently, first one looks like this:
<view-entity entity-name="****ViewOfficerPaymentInfo"
package-name="com.trideas.ams.****payment" title="OfficerPayment
joins
OfficerPaymentCommission">
<member-entity entity-alias="OP" entity-name="OfficerPayment"/>
<member-entity entity-alias="PC"
entity-name="****OfficerPaymentCommission"/>
<alias entity-alias="OP" name="paymentId" />
<alias entity-alias="OP" name="officerId"/>
<view-link entity-alias="OP" rel-entity-alias="PC">
<key-map field-name="paymentId"/>
</view-link>
</view-entity>
The second one:
<view-entity entity-name="****ViewOfficerSalesReport"
package-name="com.trideas.ams.****customer" title="Customer tables
joined with
outer joins the Payment table for Officer Sales report">
<member-entity entity-alias="PI" entity-name="**
CustomerPersonalInfo"/>
<member-entity entity-alias="FD"
entity-name="****CustomerFinancingDetails"/>
<member-entity entity-alias="VP"
entity-name="****ViewOfficerPaymentInfo"/>
<alias entity-alias="PI" name="customerId" field="customerId" />
<alias entity-alias="PI" name="customerName" field="name" />
<alias entity-alias="FD" name="officerId"
field="marketingOfficerId"
/>
<alias entity-alias="VP" name="opBankId" field="opBankId"/>
<alias entity-alias="VP" name="opAccNo" field="opAccNo"/>
<alias entity-alias="VP" name="opPaymentDate"
field="opPaymentDate"
/>
<alias entity-alias="VP" name="opChequeNo" field="opChequeNo" />
<alias entity-alias="FD" name="loanApproved" field="loanApproved"
/>
<alias entity-alias="FD" name="approvedDate" field="approvedDate"
/>
<alias entity-alias="PI" name="createdDate" field="createdDate" />
<view-link entity-alias="PI" rel-entity-alias="FD">
<key-map field-name="customerId"/>
</view-link>
<view-link entity-alias="FD" rel-entity-alias="VP"
rel-optional="true">
<key-map field-name="customerId" rel-field-name="customerId"/>
<key-map field-name="****marketingOfficerId"
rel-field-name="officerId"/>
</view-link>
</view-entity>
When i try to use a entity-condition to select the entity, i found
that
i
can't select the opBankId and whatever else field from the VP view.
There's
a warning message in the log that says:
"The field name (or key) [opBankId] is not valid for entity
[ViewOfficerSalesReport], printing IllegalArgumentException instead of
throwing it because Map interface specification does not allow
throwing
that exception."
I did a logging and found that the SQL itself is correct bar that the
fields from the view is not selected:-
SELECT PI.CUSTOMER_ID, PI.NAME, FD.MARKETING_OFFICER_ID,
FD.LOAN_APPROVED, FD.APPROVED_DATE, PI.CREATED_DATE
FROM ((public.CUSTOMER_PERSONAL_****INFO PI
INNER JOIN public.CUSTOMER_FINANCING_****DETAILS FD ON
PI.CUSTOMER_ID =
FD.CUSTOMER_ID)
LEFT OUTER JOIN (
SELECT OP.PAYMENT_ID AS OP_PAYMENT_ID, OP.OFFICER_ID AS OP_OFFICER_ID,
OP.PAYMENT_DATE AS OP_PAYMENT_DATE, OP.BANK_ID AS OP_BANK_ID,
OP.ACC_NO
AS
OP_ACC_NO, OP.CHEQUE_NO AS OP_CHEQUE_NO,
PC.CUSTOMER_ID AS PC_CUSTOMER_ID FROM public.OFFICER_PAYMENT OP INNER
JOIN
public.OFFICER_PAYMENT_****COMMISSION PC ON OP.PAYMENT_ID =
PC.PAYMENT_ID) VP
ON FD.CUSTOMER_ID = VP.PC_CUSTOMER_ID AND FD.MARKETING_OFFICER_ID =
VP.OP_OFFICER_ID)
WHERE ((PI.NAME LIKE '%'))
ORDER BY FD.APPROVED_DATE DESC
The reason i'm putting the VP field with the prefix 'op' is because
i'm
trying to let it select the fields, but it doesn't work.
Anyone have any idea how this should work? Is there something i should
add
to the alias so that it will select those fields?
Thanx
FooShyn