Tuesday, January 2, 2018

How to delete pending print commands?

Step 1: Open Notepad
Step 2: Copy and paste the following scripts

net stop spooler
del %systemroot%\system32\spool\printers\*.shd
del %systemroot%\system32\spool\printers\*.spl
net start spooler


Step 3: Save the notepad as 'DeletePrintJobs.cmd' in your desktop location

Step 4: Right click the file ' Run as Administrator'
The print spooler service will be stopped after executing the script

'Tada'


Attention: If this method does not work the first time, or if you cannot print anything after you use this method, restart your computer, and then try again.

Thursday, June 22, 2017

Quantitative  Risk Assessment vs Qualitative Risk Assessment

Market cannibalization - Market cannibalization is the negative impact of a company's new product on the sales performance of its existing and related products. It refers to a situation where a new product "eats" up the sales and demand of an existing product, potentially reducing overall sales, even if sales of the new product are increasing.

After a detailed study of the market, if the risk assessment team of a mobile company turns up with a high probability of market cannibalization for their recent product due to the upcoming product, it is an example of Qualitative Risk Assessment.

After the Qualitative Risk Assessment, if the team drills down deep and comes up with a percentage stating that 25 % of our in stock mobiles are at risk due to the launch of the upcoming product. This is an example of Quantitative  Risk Assessment.

Risk Analysis using Delphi Technique

Risk Categories,
Photo credits: Fonna Seidu

Risk response
Photo credits: Fonna Seidu



Delphi technique is a structured communication technique

  • Project manager will identify the Delphi team
  • Delphi team might be located in different geographical regions

Class Practice
  1. Individuals identify the risk in a project
  2. Use a sticky note to enter one risk per head
  3. Risk Analyst will categorize the risks
  4. Based on the new enlightened view of the risks, use another sticky and come up with a risk response

    Categorised Risks

    Risk Response based on categorized Risks
Benefits


  • Identify Blindspot in a project
  • Avoids group thinking
  • Inputs from subject matter experts from different geographical areas
  • Avoids in-person meetings 
Demerits

  • Delphi technique consumes a lot of time


Wednesday, July 20, 2016

Product Backlog and Sprint Backlog

The Product Backlog is essentially a list of all currently known User Stories and Features for a project, prioritized according to business value. Throughout product development, User Stories and Features are added and removed from this list, which is typically maintained by the Product Owner.

The items on the Product Backlog are often estimated by the development team(s) in Story Points or Ideal Time, which is a size estimate, relative to the other items on the list. As User Stories and Features get closer to development, they are typically refined and broken down into smaller User Stories or tasks.

A Sprint is a time-boxed development cycle, which typically lasts anywhere from 2-4 weeks. During Sprint Planning, the development team, together with the Product Owner, selects a few of the size-estimated User Stories and Features, which are to be implemented in the upcoming Sprint. The subset of User Stories and Features they select for implementation is the Sprint Backlog.

At the end of the Sprint, all the User Stories and Features from the current Sprint Backlog should be completed. The development team and the Product Owner now completes another Sprint Planning session, where they define a new Sprint Backlog for the next Sprint, and so on.

They repeat this process until all the User Stories and Features in the Product Backlog have been completed, or until the Product Owner decides that the product is "done" (typically when they have reached the desired level of functionality or when the time is up).

When you done with all the stories in a product backlog, you will have a product in your hand. While completion of all stories in a sprint backlog may give you a feature of the product.

Wednesday, November 25, 2015

Peoplecode Event Execution Order

This is the order in which Peoplecode events are fired.

  1. SEARCHINIT
  2. SEARCHSAVE
  3. ROWSELECT
  4. PREBUILD
  5. FIELDDEFAULT
  6. FIELD FORMULA
  7. ROWINIT
  8. POSTBUILD
  9. PAGEACTIVATE
  10. FIELDEDIT
  11. FIELDCHANGE
  12. POP_UP
  13. ROWINSERT
  14. ROWDELETE
  15. SAVEEDIT
  16. SAVEPRECHANGE
  17.  WORKFLOW
  18. SAVEPOSTCHANGE


Friday, November 20, 2015

SQL error.stmt #:652 Error position: 25 Return:936 - ORA - 00936-missing Expression-PeopleSoft

In SQL developer if you get this error then its due to an incorrect query.





Consider the scenario where field A you want to prompt from a record ,Table A.
In the record,Table A if the primary key ,search and list key is not clicked then you will get this error in PIA as shown below




Monday, November 16, 2015

What is Garnishment?

Garnishment is an American legal order for collecting a monetary judgment on behalf of a plaintiff from a defendant. The money can come directly from the defendant (the garnishee) or—at a court's discretion—from a third party. Jurisdiction law may allow for collection—without a judgment or other court order—in the case of collecting for taxes.
Wages
A wage garnishment is any legal or equitable procedure through which some portion of a person's earnings is required to be withheld by an employer for the payment of a debt. Most garnishments are made by court order. Other types of legal or equitable procedures for garnishment include IRS or state tax collection agency levies for unpaid taxes and federal agency administrative garnishments for non-tax debts owed the federal government.
Wage garnishments do not include voluntary wage assignments—that is, situations in which employees voluntarily agree that their employers may turn over some specified amount of their earnings to a creditor or creditors.
Wage garnishment, the most common type of garnishment, is the process of deducting money from an employee's monetary compensation (including salary), sometimes as a result of a court order. Wage garnishments continue until the entire debt is paid or arrangements are made to pay off the debt.[2] Garnishments can be taken for any type of debt but common examples of debt that result in garnishments include:

  •   Child support
  •   Defaulted student loans
  •   Taxes
  •   Unpaid Court costs
When served on an employer, garnishments are taken as part of the payroll process. When processing payroll, sometimes there is not enough money in the employee's net pay to satisfy all of the garnishments. For example, in a case with federal tax, local tax, and credit card garnishments, the first garnishment taken would be the federal tax garnishments, then local tax garnishments, and, finally, garnishments for the credit card. Employers receive a notice telling them to withhold a certain amount of their employee's wages for payment and cannot refuse to garnish wages. Employers must correctly calculate the amount to withhold, and must make the deductions until the garnishment expires.[4]
Wage garnishment can negatively affect credit, reputation, and the ability to receive a loan or open a bank account.
At present four U.S. states—Pennsylvania, North Carolina, South Carolina, and Texas—do not allow wage garnishment at all except for tax-related debt, child support, federally guaranteed student loans, and court-ordered fines or restitution. The federal garnishment limit (with some exceptions like child support and student loans) on a weekly basis is the lower of (A) 25% of one's disposable earnings (what's left after mandatory tax deductions), or (B) the total amount by which one's weekly wage exceeds thirty times the federal hourly minimum wage. Several other states observe maximum thresholds that are lower than the maxima provided by federal law. States may also prohibit garnishment altogether in certain circumstances. For example, in Florida the wages of a person who provides more than half the support for a child or other dependent are exempt from garnishment altogether (though this is subject to waiver). Loans and negotiations with creditors can also help debtors to avoid wage garnishment.
In Minnesota, there are five limits on wage garnishment; Creditors cannot garnish wages for social security benefits, retirement benefits, welfare payments, workers' compensation benefits, or income associated with disability or unemployment insurance.
In many states when the person is an employee or appointee of a governmental unit the writ is called a Writ of Sequestration. These are processed by the courts in the same manner as garnishments and are subject to the same wage exemptions.
In the United States, firing an employee to avoid handling a levy may be a criminal offense. Federal law provides for a fine of up to $1,000 and imprisonment for up to one year on an employer who willfully fires an employee in connection with a garnishment of the employee's earnings.



Tuesday, November 3, 2015

Peoplecode event and Functions

Event / Abbr
Function
Searchlnit
·         SearchInit PeopleCode is performed before the search page is displayed.
·         User SearchInit to control processing before a user enters values in the search page.
·         Place SearchInit PeopleCode on search key fields or alternate search key fields on a search record or component search record.
·         Do not place errors or warnings in SearchInit

Search Save
·         SearchSave PeopleCode is executed for all search key fields on a search, add, or data-entry dialog box after a user clicks Search. This enables you to control processing after search key values are entered, but before the search based on these keys is executed. A typical use of this feature is to provide cross-field edits for selecting a minimum set of key information. This event is also used to force a user to enter a value in at least one field, even if it’s a partial value, to help narrow a search for tables with many rows.
·         SearchSave is not initiated when values are selected from the search list. To validate data entered in the search page, use the Component PreBuild event.
·         You can use Error and Warning statements in SearchSave PeopleCode to send the user back to the search page if the user entry does not pass validations implemented in the PeopleCode.
·         Do not use the %Menu system variable in this event. You may get unexpected results.
RowSelect
·         The RowSelect event is initiated at the beginning of the component build process in any of the update action modes (Update, Update/Display All, Correction). RowSelect PeopleCode is used to filter out rows of data as they are being read into the component buffer. This event also occurs after a ScrollSelect or related function is executed.
·         A DiscardRow function in RowSelect PeopleCode causes the Component Processor to skip the current row of data and continue to process other rows. A StopFetching statement causes the Component Processor to accept the current row of data, and then stop reading additional rows. If both statements are executed, the program skips the current row of data, and then stops reading additional rows.
·         PeopleSoft applications rarely use RowSelect, because it’s inefficient to filter out rows of data after they’ve already been selected. Instead, screen out rows of data using search record views and effective-dated tables, which filter out the rows before they’re selected. You could also use a ScrollSelect or related function to programmatically select rows of data into the component buffer.
·         In RowSelect PeopleCode, you can refer to record fields only on the record that is currently being processed. This event, and all its associated PeopleCode, does not initiate if run from a component interface.
·         In previous versions of PeopleTools, the Warning and Error statements were used instead of DiscardRow and StopFetching. Warning and Error statements still work as before in RowSelect, but their use is discouraged.
·         RowSelect PeopleCode can be associated with record fields and component records.

PreBuild
·         The PreBuild event fires before the rest of the component build events. It is only associated with components.
·         The PreBuild event is also used to validate data entered in the search dialog, after a prompt list is displayed.
·          It is used to hide or unhide pages
Field Default
·         For FieldDefault to trigger, there are two conditions that need to be satisfied:
One is obviously having some PeopleCode written in this event.
Second one is that, the page field should have no value even after applying default values (if any) specified in the record field properties. A point to note is that, the page field is consider blank if a zero is specified as default for a numeric field or a null is
specified.
·         Default values set using FieldDefault does not mark the row as changed and such rows are not written back to the database during save.
·         Another point to note is that the you can’t issue an Error or a Warning from within this event. This would cause a runtime error.
·         FieldDefault PeopleCode can be associated with record fields and component record fields.
Field Formula
·         FieldFormula is mainly used to record definitions to store shared functions. It can be used for other functionality too but RowInit and FieldChange are preferred methods.
·         The FieldFormula event is not currently used (for setting values, hiding fields etc). Because FieldFormula PeopleCode initiates in many different contexts and triggers PeopleCode on every field on every row in the component buffer, it can seriously degrade application performance.
·         As a matter of convention, FieldFormula is now often used in FUNCLIB_ (function library) record definitions to store shared functions. However, you can store shared functions in any PeopleCode event.
·         FieldFormula PeopleCode is only associated with record fields.
·         If a field value is changed, whether through PeopleCode or by a user, the IsChanged property for the row is set to True. The exception to this is when a change is done in the FieldDefault or FieldFormula events. If a value is set in FieldDefault or FieldFormula, the row is not marked as changed.

Rowlnit
The RowInit event is initiated the first time that the Component Processor encounters a row of data. This occurs during component build processing and row insert processing. It also occurs after a Select or SelectAll Rowset method, or a ScrollSelect or related function, is executed.
Code Example in RowInit
If %Page = Page.PAGE_NAME Then
      RECORD_WRK.CALC_FIELD = RECORD1.FIELD1 * RECORD2.FIELD2;

End-If;
·         Do not use Error or Warning statements in RowInit PeopleCode, these cause a runtime error.
·         RowInit is often written together with FieldChange event.
In the above example, the value of RECORD_WRK.CALC_FIELD is shown as the product of RECORD1.FIELD1 and RECORD1.FIELD2. Generally, similar code is written in FIELDCHANGE event of RECORD1.FIELD1 and RECORD1.FIELD2 so that value of RECORD_WRK.CALC_FIELD is updated whenever the field value changes.
·         RowInit is not field-specific.
That is, It triggers PeopleCode on all fields and on all rows in the component buffer. In the above example, the above code can be written in ROWINIT of either of FIELD1 or FIELD2 not both. Although you can write code like this in PAGE ACTIVATE which we will discuss later.
·         RowInit PeopleCode can be associated with record fields and component records.

PostBuild
The PostBuild event fires only after all the other component build events have been fired. This event is often used to hide or unhide pages. It’s also used to set component variables.
·         Generally used to Hide/Unhide Pages
·         Used to set Global & Component Variables
·         This is associated with component.
·         Used to Calculate values and set display characteristics of an object.
Although both prebuild and post build are generally used for same functionality, as explained before prebuild fires before the component events and post build fires after the component event. Prebuild does have access to component buffer but Post build does.

Activate
The Activate event is initiated each time that a page is activated, including when a page is first displayed by a user, or if a user presses Tab between different pages in a component.
·         Every Page has it’s own Activate Event
·         This event is not supported for subpages.
·         Effectively eliminates need to write Page Specific RowInit code. For Example, If Page1, hide some field, Page Hide other field etc.
·         This event is valid only for pages that are defined as standard or secondary.

FieldEdit
Use FieldEdit PeopleCode to validate the contents of a field, supplementing standard system edits. If the data does not pass the validation, the PeopleCode program should display a message using the Error statement, which redisplays the page, displaying an error message and turning the field red.
·         Performs after the field value has been changed and the new value of the field satisfies the standard system edits (Eg. Prompt Table Edit).
·         Used to validate Content of the field.
·         Only fires on specific field or row that has has Changed.
·         Associated with Record Fields and Component Record Fields.

FieldChange
The FieldChange event is triggered when is field is changed. Use FieldChange PeopleCode to recalculate page field values, change the appearance of page controls, or perform other processing that results from a field change other than data validation. To validate the contents of the field, use the FieldEdit event.
Code Example in FieldChange
If %Page = Page.PAGE_NAME Then
      RECORD_WRK.CALC_FIELD = RECORD1.FIELD1 * RECORD2.FIELD2;

End-If;
·         Used to perform additional processing that is based on the new value of changed field.
·         FieldChange PeopleCode can be associated with record fields and component record fields.
·         FieldChange and RowInit peoplecode are often paired together.
·         Donot use this event for validations, use FieldEdit instead.




Rowlnsert
When a user adds a row of data to a scrollarea or grid, the Component Processor generates a RowInsert event.
·         Rowinit is also executed when a row is inserted, so write specific code for the inserts. If the RowInit and RowInsert code is same, the code will run twice.
·         The RowInsert event triggers PeopleCode on any field on the inserted row of data.
·         Do not use a warning or error in RowInsert.
·         RowInsert does not trigger PeopleCode on derived/work fields.
·         RowInsert PeopleCode can be associated with record fields and component records.

Row Delete
The RowDelete event is initiated whenever a user attempts to delete a row of data from a page scroll area. Use RowDelete PeopleCode to prevent the deletion of a row (using an Error or Warning statement) or to perform any other processing contingent on row deletion.For example, you could have a page field called Total on scroll area level zero whose value is the sum of all the Extension page fields on scroll area level one. If the user deleted a row on scroll area level one, you could use RowDelete PeopleCode to recalculate the value of the Total field.
·         The RowDelete event triggers PeopleCode on any field on the row of data that is being flagged as deleted.
·         RowDelete does not trigger PeopleCode on derived/work fields.
·         RowDelete PeopleCode can be associated with record fields and component records.
·         When the last row of a scroll area is deleted, a new, dummy row is automatically added. As part of the RowInsert event, RowInit PeopleCode is run on this dummy row. If a field is changed by RowInit (even if it’s left blank), the row is no longer new, and therefore is not reused by any of the ScrollSelect functions or the Select method. In this case, you may want to move your initialization code from the RowInit event to FieldDefault.

SaveEdit
The SaveEdit event is intiated whenever a user attempts to save the component. You can use SaveEdit PeopleCode to validate the consistency of data in component fields. Whenever a validation involves more than one component field, you should use SaveEdit PeopleCode.
·         The component processor applies SaveEdit peoplecode to all non-deleted rows of data in the buffers & all pages in component
·         SaveEdit is better suited than FieldEdit if the validation refrences more than one field or row of data.
·         An Error statement in SaveEdit PeopleCode displays a message and redisplays the component without saving data. A Warning statement enables the user to click OK and save the data, or to click Cancel and return to the component without saving.
·         Use the SetCursorPos function to set the cursor position to a specific page field following a warning or error in SaveEdit, to show the user the field (or at least one of the fields) that is causing the problem. Make sure to call SetCursorPos before the error or warning, because these may terminate the PeopleCode program.
·         Associated with record fields and Components.
When an error message is issued in PeopleSoft(Component Processor) from the SAVEEDIT event, the cursor will not be directed to the corresponding field (value) for which the message is thrown. And the field also doesnot turn into red color as is the behaviour with the error messages issued from the FIELDEDIT event. Use SetCursorPos as shown above to set the cursor position. Here is example below written in SAVEEDIT.
IF NONE(RECORD1.FIELD1) THEN
  RECORD1.FIELD1.Setcursorpos(%Page);

  REM To Display field in Red Color
  RECORD1.FIELD1.Style = "PSERROR";

  Error ("The Field is Required"); 
END-IF;
SavePreChange
The SavePreChange event is initiated after SaveEdit completes without errors.
·         SavePreChange PeopleCode provides one final opportunity to manipulate data before the system updates the database; for instance, you could use SavePreChange PeopleCode to set sequential high-level keys
·         If SavePreChange runs successfully, a Workflow event is generated, and then the Component Processor issues appropriate Insert, Update, or Delete SQL statements.
·         An Error statement in SaveEdit PeopleCode displays a message and redisplays the component without saving data. A Warning statement enables the user to click OK and save the data, or to click Cancel and return to the component without saving.
·         Used to change display characteristics and validations
·         SavePreChange PeopleCode can be associated with record fields, components, and component records.

Workflow
·         To trigger a business event from a page, you add a PeopleCode program to the workflow event in the record definition for one of the tables to which the page writes. For example, to trigger events from the Course Request page, add Workflow PeopleCode to the TRAINING record definition; TRAINING is the record definition with which the Course Request page fields are associated.
·         If you’re triggering business events from a page that includes scrolls, add the Workflow PeopleCode to the record definition at the appropriate scroll level. If, for example, you add it to the record definition that is associated with a level one scroll area, the PeopleCode runs once for each row at that level. A Workflow PeopleCode program can reference record fields from record definitions at the same scroll level or at a lower scroll level. These rules also apply to the SaveEdit PeopleCode for Virtual Approver.
·         Workflow PeopleCode runs after the user saves the page group and before it updates the database with the saved data. More specifically, it runs after SavePreChange PeopleCode and before SavePostChange PeopleCode. Because SavePostChange PeopleCode runs after Workflow PeopleCode, it does not run if the Workflow PeopleCode fails to finish.
·         Workflow PeopleCode programs typically review the data in the saved record, then decide which business event to trigger, if any. They all include at least one use of the PeopleCode function that triggers events, or Virtual_Router, a PeopleCode library function that is associated with Virtual Approver, which uses TriggerBusinessEvent internally. The Virtual_Router PeopleCode library function is located in the FieldFormula event of the APPR_VA0_WRK.FUNCLIB_02 record field.
·         You can add the Workflow PeopleCode to any field in the record definition. For clarity, you can add it to a field that the program itself references. For example, you might add the Workflow PeopleCode that triggers an approval process to the Approval Status field.

SavePostChange
After the Component Processor updates the database, it initiates the SavePostChange event. You can use SavePostChange PeopleCode to update tables not in your component using the SQLExec built-in function.
·         Performs after SavePreChange and Workflow have completed successfully. SavePostChange is not executed if workflow fails or component is not saved due to any error.
·         Donot use Error and Warnings in this event
·         The system issues a SQL Commit statement after SavePostChange PeopleCode completes successfully.
·         Other than updating tables that are not in your component, it is also used to send an email , say for approval.
·         SavePostChange PeopleCode can be associated with record fields, components, and component records.
PrePopup
·         The PrePopup event is initiated just before the display of a pop-up menu.
·         You can use PrePopup PeopleCode to control the appearance of the pop-up menu.
·         This event, and all its associated PeopleCode, does not initiate if run from a component interface.

ItemSelected

·         PeopleTools menus are one of two types, either pop-up or standard, both of which are standalone definitions in the project hierarchy. However, you can only associate PeopleCode with menu items in pop-up menus.
·         The menu item event set consists of a single event, the ItemSelected Event. This event fires whenever an user selects a menu item from a pop-up menu.
·         Do not confuse menu item PeopleCode with PeopleCode functions related to the appearance of menu items, such as CheckMenuItem.
Defining PeopleCode Pop-Up Menu Items
To define a PeopleCode pop-up menu item:
·         In the open pop-up menu definition, double-click the menu item to access its properties.
If you are creating a new menu item, double-click the empty rectangle at the bottom of the pop-up menu.
The Menu Item Properties dialog box appears.
·         If this is a new menu item, enter a name and a label for the item.
·         Select PeopleCode from the Type group box.
·         Click OK to close the Menu Item Properties dialog box.

Accessing Menu Item PeopleCode

To access pop-up menu item PeopleCode:
1.    Open the pop-up menu definition.
2.    Right-click the menu item and select View PeopleCode.
The PeopleCode Editor appears, displaying the associated program for that menu item, if any