cd fusionapps/fin/components/payables/ap/invoices/ispInvoices/model/ ade co fusionapps/fin/components/payables/ap/invoices/ispInvoices/model/FinApInvIspInvoicesModel.jpr
gedit jpr
ade co -nc fusionapps/fin/components/payables/ap/invoices/ispInvoices/uiModel/FinApInvIspInvoicesUiModel.jpr
To avoid errors when UI is opened
copy hcm jar to project
ade co -nc fusionapps/fin/components/payables/ap/invoices/transactions/model/FinApInvTransactionsModel.jpr
Should have abstract roles like Employee, or Manager
MyTeam -> Manage Users
Role Types
Job Role -> Roles performed at a job function
Abstract Roles -> for common functions like employee role
Duty Role -> Individual duty functions like Invoice creation, payment creation
Data Roles vs Data access
When a Ledger is created, Data Access Set is created with same name
Role Provisioning
Employee Role assigned when
Person type is Employee & HR assignment status is Active
Manager Role assigned when
Person type is Employee, HR assignment status is Active & Manager with reports
Payables Security
Function Security
Edit Access
Accounts Payable Manager
Accounts Payable Specialist
Accounts Payable Supervisor
View Only access
Financial Application Administrator
Cost Accountant
Project Accountant
Data Security
Secure access based on BU
Invoices & Payments
Security Console
This task is made available by adding role IT_SECURITY_MANAGER role
Roles Management
User Management
Practicals
Setup & Maintenance -> Manager Users ->
Data Security
Setup & Maintenance-> Manage Data Access Set and Access for Users
select * from per_users where username like ‘AP%CUS%’;
select * from fusion.fnd_object_instance_sets where INSTANCE_SET_NAME like ‘FNDDOCUMENTCATEGORIESPOZ55%’;
select * from fusion.fnd_object_instance_sets where INSTANCE_SET_NAME like ‘FNDDOCUMENTCATEGORIESPOQ15%’;
select * from fnd_grants where instance_set_id in ( 300100110431046, 300100110431049) --and ROLE_NAME in ( select role_name from fusion.FND_SESSION_ROLE_SETS where SESSION_ROLE_SET_KEY like ‘dQkIylMsQMB5KTs8rSmeEQ==’ ) ;
select * from FND_SESSIONS where user_guid like ‘C7A5D1052374BB05E050F80A98291B75’ order by last_connect desc ; -- C7A68D683CB2235FE0539929F80AAE3E
select * from fusion.FND_SESSION_ROLE_SETS where SESSION_ROLE_SET_KEY like ‘dQkIylMsQMB5KTs8rSmeEQ==’ ;
----
select /*3-25921486741*/ Distinct bu_id, bu.BU_NAME, u.username, role.ROLE_NAME, role.START_DATE_ACTIVE, role.END_DATE_ACTIVE, role.ACTIVE_FLAG from fusion.hz_parties h, fusion.per_users u, fusion.per_all_people_f f, fusion.FUN_ALL_BUSINESS_UNITS_V bu, fusion.FUN_USER_ROLE_DATA_ASGNMNTS role where 1=1 and h.user_guid = u.user_guid and u.person_id = f.person_id and sysdate between f.effective_start_date and f.effective_end_date and role.org_id = bu.bu_id and u.USER_GUID = role.USER_GUID and u.username='WH6066' --and role.ACTIVE_FLAG='Y' and bu_id=300000031108373
Software development methodology centered around helping teams get more stuff done by self-organizing
It means constant change & evolve every day.
Ways to organize work in Agile methodology is Agile board. There are 2 key ways to organize thecontent Scrum & Kanban.
Scrum
has sprints
Sprint meeting
start by discussing last sprint - what went well, what didn't go , what can we do better.
discuss and agree on work to be completed next sprint
Kanban
NO sprints
For ongoing projects
No sprint meetings
Standup meeting - A quick meeting where each member explains what was accomplished yesterday and the work they intended to do today. Any road blocks/issues that arose are discussed.
User Story
Help the developer get in the mind of end user for that functionality
As a <Type of user> I want <some goal> so that <some reason>
As a web developer I want to be able to add users to jira so that my coworkers can report bugs.
As a cashier, I want to have the total calculated for me so that I can give the correct change back to the customer
Epic
An epic is a big project that’s too big for a single sprint. It’s broken down into multiple user stories. When those are done, the epic is complete.
Issues & Projects
Issues are heart of what you track in Jira. They are like blank post its with different colours. Eg: stories, epic , bugs are different type of issues in Jira. One can create custom issue type as well.
Issues hold fields that contain the data
All issues live inside project. Projects are containers for issues.
Column selection multiple -> Freeze & Wrap features can be used
Features OFF -> To disable certain features
REST
How to invoke Exposed REST service
Validator
Custom Validation at EO level
EO-> Business Rules-> Attribute level or entity level -> new validator -> method -> error message in failure handling tab
java impl -> write the code in generated method -> the method should return true or false.
Converter
Store data in database in specific format but user should see it and enter it in different format.
Create a java class implementing javax.faces.convert.Converter
The interface has 2 methods getAsObject & getAsString. First one is to set the value & second one for getting
public Object getAsObject(FacesContext facesContext, UIComponent uIComponent, String str){ if (str.length!=10) { FacesMessage message = new FacesMessage("incorrect length"); message.setSeverity(FacesMessage.SEVERITY_ERROR); throw new ConverterException(message); } return "+91"+substr(str,1,11); }
public Object getAsString(FacesContext facesContext, UIComponent uIComponent, Object obj){ String value = String.valueOf(obj); return "0"+substr(str,2,12); }
Register the class with faces-config -> Converters
How to apply converter to UI field
Input text item -> insert converter -> select the registered converter
BLOB - Uploading/downloading in ADF applications
Drag af:InputFile to toolbar
af:InputFile -> Value Change Listner -> add bean method -> uploadImage public void uploadImage(ValueChangeEvent valueChangeEvent){ UploadFile file = (UploadFile) valueChangeEvent.getNewValue() BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingEntry(); DCIteratorBinding iter = () bindings.get("iteratorname"); iter.getCurrentRow.setattribute("empimage", new BlobDomainForInputStream(file.getInputStream));
private BlobDomain newBlobDomainForInputStream(InputStream in){ BlobDomain b = new BlobDomain(); OutputStream o = b.getBinaryOutputStream(); writeInputStreamtoOutputStream(i,o); }
private void writeInputStreamtoOutputStream(InputStream i, OutputStream o){i.close(); byte[] buffer = new byte[8192]; int bytesRead = 0; while ((byteRead=in.read(buffer,0,8192))!=-1) { out.write(buffer,0,byteRead); }
UI Components
Panel box
Add content with a label/title
Has toolbar facet
It has DisclosureListner property for programatic control
Key properties
maximize property to show/hide the maximize icon
showDisclosure Property
Disclosed property
Panel Group layout
Layout property to select Vertical vs Horizontal
Valign property
Listners
LOV
ValueChangeListner
LaunchPopupListner -> before popup is launched
ReturnPopupListner ->
TableSelection
SelectionListner
Popup
PopupFetchListner -> just before popup opens
PopupCancelListner ->
Classic Session Based Authentication:
Client authenticates with server using user/passwd for the first time
Server creates a session and returns token
Client stores the token in cookie and sends the token in all subsequent requests.
REST APIs
REST is stateless - Server doesn't save any data that persists across requests.
Session based authentication doesn't work
Basic Auth(Credentials are sent in header for every request)
Client authenticates with server using user/passwd in every request.
Username & password is sent as part of request header in specific format
username:password and Base64 encode
Authorization: Basic <encoded string>
On server side-> system does base64 decoding
Encode string is not secure. Hence, send it over https protocol
Encoding is to make string HTTP compatible
Advantages
Simple, stateless & supported by all browsers
Disadvantages
Requires https
subject to replay attacks
logout is tricky(browser caching)
Digest access authentication
Encrypts and sends a secret
Asymmetric cryptography
public-private key cryptography
OAuth
It is meant for Authorization
It is meant for service to authorize another service