Say you want to create a new module called Pre Purchase, and for simplicity, we will create just 1 new Number sequence.
Here’s what to do:-
1. //Creating Base Enum
Create a Base Enum and then Right click and Create a New Element which will be used as Reference for the New Module yet to create
// Create a New Menu Item
Menu Items > Display > Create a form and then drag and drop it here
//Adding a Menu
Menus> NewMenu>Drag and Drop Form MenuItem here
//Adding Menu to Main Menu
Menus>MainMenu> Right click and Select Menu Reference Drag and Drop the Menu in this Main Menu
2. Create a new EDT say PurchaseRequisitionId which will be used in the module
3. Create new class NumberSeqReference_PrePurchase that extends NumberSeqReference
Add 3 methods to that class
public class NumberSeqReference_PrePurchase extends NumberSeqReference
{
}
———————————————————————
protected void loadModule()
{
NumberSequenceReference numRef;
NumberSequenceReference numRef;
;
/* Setup PurchaseRequisitionId */
numRef.dataTypeId = typeid2extendedtypeid (typeid (PwC_PurchaseRequisitionId));//Your EDT Here
numRef.referenceHelp = literalStr(“Unique key for Purchase Requisition identification. The key is used when creating new Purchase Requisitions.”); // Use Labels here
numRef.wizardContinuous = true;
numRef.wizardManual = NoYes::No;
numRef.wizardAllowChangeDown = NoYes::No;
numRef.wizardAllowChangeUp = NoYes::No;
numRef.sortField = 1;
this.create(numRef);
}
numRef.referenceHelp = literalStr(“Unique key for Purchase Requisition identification. The key is used when creating new Purchase Requisitions.”); // Use Labels here
numRef.wizardContinuous = true;
numRef.wizardManual = NoYes::No;
numRef.wizardAllowChangeDown = NoYes::No;
numRef.wizardAllowChangeUp = NoYes::No;
numRef.sortField = 1;
this.create(numRef);
}
———————————————————————
static NumberSeqModule numberSeqModule()
{
return NumberSeqModule::PrePurchase;
}
return NumberSeqModule::PrePurchase;
}
4. Modify the NumberSeqReference Class for the following methods
Classes > NumberSeqReference >moduleList
Add the following code
// PrePurchase Begin
moduleList += NumberSeqReference_PrePurchase::numberSeqModule();
// PrePurchase End
———————————————————————
Classes> NumberSeqReference >construct
Add the following code
// Pre Purchase addition begin
case (NumberSeqReference_PrePurchase::numberSeqModule()):
return new NumberSeqReference_PrePurchase(_module);
// Pre Purchase addition end
———————————————————————
5. Create a parameters table and form
You should create a parameters table and form for your new module. The easiest way is generally to duplicate an existing Parameters table and modify it as required.
The important elements on the new parameter table are the numberSeqModule() and numberSeqReference() methods.
client server static NumberSeqModule numberSeqModule()
{
//Your Class name Here
return NumberSeqReference_ PrePurchase::numberSeqModule();
}
---------------------------------------------------------------------
client server static NumberSeqReference numberSeqReference()
{
//Your Parameters Table name here
return NumberSeqReference::construct(NSParameters::numberSeqModule());
}
//Optional
In the parameters form, you must ensure that the code in the numberSeqPreInit(), numberSeqPostInit() and NumberSequenceType.executeQuery() methods correctly reflect your new number sequence elements.
//Optional ends
6. Calling a number sequence Add this code into this TableParameters //where numRefSomeMethodID is your new method name
static client server NumberSequenceReference numRefSomeMethodID()
{
return NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(Your EDT)));
}
{
return NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(Your EDT)));
}
7. Add this methods to the form where you want Number sequences
//form ClassDeclaration
public class FormRun extends ObjectRun
{
{
NumberSeqFormHandler numberSeqFormHandler;
}
//Method Formhandler
NumberSeqFormHandler numberSeqFormHandler()
{
if(!numberSeqFormHandler)
{
numberSeqFormHandler=
NumberSeqFormHandler::newForm(YourTableParameters::numRefSomeMethodID().NumberSequence,
element,
{
numberSeqFormHandler=
NumberSeqFormHandler::newForm(YourTableParameters::numRefSomeMethodID().NumberSequence,
element,
YourTable_DS, //Your Table Datasource
fieldnum(YourTable,YourField));
fieldnum(YourTable,YourField));
}
return numberSeqFormHandler;
}
return numberSeqFormHandler;
}
8. Add Create, Write and Delete methods to the Data source in the Form:
void create(boolean append = false)
{
;
element.numberSeqFormHandler().formMethodDataSourceCreatePre();
super(append);
element.numberSeqFormHandler().formMethodDataSourceCreate();
}
Write:
void write()
{
ttsbegin;
element.numberSeqFormHandler().formMethodDataSourceWrite();
super();
ttscommit;
}
Delete:
void delete()
{
ttsbegin;
element.numberSeqFormHandler().formMethodDataSourceDelete();
super();
ttscommit;
}
9. Create a new Number Sequence in BASIC module and Run Wizard
Basic -> Setup -> NumberSequences -> Number Sequences Create New Number Sequence code and assign the format. Click "Wizard" Button
No comments:
Post a Comment