Add Enum in PrintMgmtDocumentType.HDTExtension
1.Add New class to set the new print type
/// <summary>
/// Extension class of BusinessDocumentUtils class
/// </summary>
[ExtensionOf(classStr(BusinessDocumentUtils))]
final static class HDT_BusinessDocumentUtils_Extension
{
public static container SupportedBusinessDocumentPrintManagementTypesLoc;
/// <summary>
/// CoC of isDocumentTypeSupported method
/// </summary>
/// <param name = "_typeId">_typeId</param>
/// <returns>docType</returns>
public static boolean isDocumentTypeSupported(PrintMgmtDocumentType _typeId)
{
boolean docType = next isDocumentTypeSupported(_typeId);
if (_typeId == PrintMgmtDocumentType::HDT_DeliveryNote)
docType = true;
return docType;
}
}
2.Add New Class
/// <summary>
/// Class to load print management settings
/// </summary>
[PrintMgmtDocumentTypeFactoryAttribute(PrintMgmtDocumentType::HDT_DeliveryNote)]
public class HDT_InventFormLetterReport extends FormLetterReport
{
/// <summary>
/// To override default print job settings
/// </summary>
/// <param name = "_printCopyOriginal">_printCopyOriginal</param>
/// <returns>container</returns>
protected container getDefaultPrintJobSettings(PrintSetupOriginalCopy _printCopyOriginal)
{
return new SRSPrintDestinationSettings().pack();
}
/// <summary>
/// to get print management document type
/// </summary>
/// <returns>PrintMgmtDocumentType</returns>
public PrintMgmtDocumentType getPrintMgmtDocumentType()
{
return PrintMgmtDocumentType::HDT_DeliveryNote;
}
/// <summary>
/// To get print management hierarchy type
/// </summary>
/// <returns>PrintMgmtHierarchyType</returns>
protected PrintMgmtHierarchyType getPrintMgmtHierarchyType()
{
return PrintMgmtHierarchyType::Invent;
}
/// <summary>
/// To get print management node type
/// </summary>
/// <returns>PrintMgmtNodeType</returns>
protected PrintMgmtNodeType getPrintMgmtNodeType()
{
return PrintMgmtNodeType::Invent;
}
}
3.Add New class Contract
[DataContractAttribute]
class HDT_InvTransShipContract extends SrsReportDataContract
{
InventTransferVoucherId voucherID;
Str documentTitle;
[DataMemberAttribute('@SYS12371')]
public InventTransferVoucherId parmVoucherId(InventTransferVoucherId _voucherID = voucherID)
{
voucherID = _voucherID;
return voucherID;
}
[DataMemberAttribute('DocumentTitle')]
public str parmDocumentTitle(str _documentTitle = documentTitle)
{
documentTitle = _documentTitle;
return documentTitle;
}
public boolean validate()
{
boolean ret = true;
if (!voucherID)
{
ret = checkFailed(strFmt("@SYS26332", new SysDictType(extendedTypeNum(InventTransferVoucherId)).label()));
}
return ret;
}
}
4.Add New class Controller
class HDT_InvTransShipController extends TradeDocumentReportController implements BatchRetryable
{
InventTransferJour inventTransferJour;
protected str documentTitle()
{
str documentTitle = (printCopyOriginal == PrintCopyOriginal::Copy) ? "Delivery note copy" : "Delivery note";
return documentTitle;
}
protected RecId getRecordId()
{
return inventTransferJour.RecId;
}
protected void setDataContractRecord(Common _common)
{
inventTransferJour = args.record();
}
public static void main(Args _args)
{
SrsReportRunController formLetterController = HDT_InvTransShipController::construct();
HDT_InvTransShipController controller;
controller = formLetterController;
controller.initArgs(_args, PrintMgmtDocType::construct(PrintMgmtDocumentType::HDT_DeliveryNote).getDefaultReportFormat());
formLetterController.startOperation();
}
public static HDT_InvTransShipController construct()
{
return new HDT_InvTransShipController();
}
protected void initFormLetterReport()
{
printCopyOriginal = this.parmArgs().parmEnum();
journalList = this.splitToRecordList();
formLetterReport = FormLetterReport::construct(PrintMgmtDocumentType::HDT_DeliveryNote);
formLetterReport.parmPrintType(printCopyOriginal);
if (printCopyOriginal == PrintCopyOriginal::OriginalPrint)
{
formLetterReport.parmUsePrintMgmtDestinations(true);
}
formLetterReport.parmSSRS(PrintMgmtSSRS::NonSSRS);
formLetterReport.parmUseUserDefinedDestinations(true);
super();
}
protected RecordSortedList splitToRecordList()
{
RecordSortedList recordList;
if (this.parmArgs().record())
{
recordList = FormLetter::createJournalListCopy(this.parmArgs().record());
}
else
{
recordList = this.parmArgs().object();
}
return recordList;
}
protected boolean getFirstJournal()
{
return journalList.first(inventTransferJour);
}
protected boolean getNextJournal()
{
return journalList.next(inventTransferJour);
}
protected void output()
{
formLetterReport.loadPrintSettings(inventTransferJour, null, currentUserLanguage());
this.parmReportContract().parmRdlContract().parmLanguageId(currentUserLanguage());
this.parmReportContract().parmRdlContract().parmLabelLanguageId(currentUserLanguage());
if(inventTransferJour)
{
HDT_InvTransShipContract invTransShipContract = new HDT_InvTransShipContract();
invTransShipContract.parmRdlContract(this.parmReportContract().parmRdlContract());
invTransShipContract.parmVoucherId(inventTransferJour.VoucherId);
invTransShipContract.parmDocumentTitle(this.documentTitle());
this.parmReportContract(invTransShipContract);
this.parmReportContract().parmRdpContract(invTransShipContract);
}
super();
}
protected boolean validate()
{
boolean ret;
ret = true;
return ret;
}
}
4.Add New class for PrintMgmtDelegatesHandler
[ExtensionOf(classStr(PrintMgmtDelegatesHandler))]
final class HDT_PrintMgmtDelegatesHandler_Extension
{
protected static PrintMgmtPrintDestinationPartyType getPartyType(PrintMgmtDocumentType _docType, Common _jour)
{
PrintMgmtPrintDestinationPartyType ret = next getPartyType(_docType, _jour);
if(ret == PrintMgmtPrintDestinationPartyType::Unknown && _docType == PrintMgmtDocumentType::HDT_PurchOrderConfirmedReport)
{
ret = PrintMgmtPrintDestinationPartyType::Vendor;
}
if(ret == PrintMgmtPrintDestinationPartyType::Unknown && _docType == PrintMgmtDocumentType::HDT_DeliveryNote)
{
ret = PrintMgmtPrintDestinationPartyType::Unknown;
}
return ret;
}
}
5.Add New Class for HDT_PrintMgmtDocType
public static class HDT_PrintMgmtDocType_Extension
{
[SubscribesTo(classStr(PrintMgmtDocType), delegateStr(PrintMgmtDocType, getDefaultReportFormatDelegate))]
public static void getDefaultReportFormatDelegate(PrintMgmtDocumentType _docType, EventHandlerResult _result)
{
switch(_docType)
{
case PrintMgmtDocumentType::HDT_DeliveryNote:
_result.result(ssrsReportStr(InventTransferShip, Report));
break;
}
}
[SubscribesTo(classstr(PrintMgmtDocType), delegatestr(PrintMgmtDocType, getPartyTypeDelegate))]
public static void getPartyTypeDelegateHandler(PrintMgmtDocumentType _docType, Common _jour, EventHandlerResult _result)
{
switch (_docType)
{
case PrintMgmtDocumentType::HDT_DeliveryNote:
_result.result(PrintMgmtPrintDestinationPartyType::Unknown);
break;
}
}
}
6. Add New class for PrintMgmtNode
[ExtensionOf(classStr(PrintMgmtNode_Invent))]
public final class HDT_PrintMgmtNode_Invent_Extension
{
public List getDocumentTypes()
{
List ret = next getDocumentTypes();
ret.addEnd(PrintMgmtDocumentType::HDT_DeliveryNote);
return ret;
}
}
7.Add New Class for WHS AddPrintMgmtReportFormat
public class HDT_WHSAddPrintMgmtReportFormat
{
/// <summary>
/// Add new report format in print management method
/// </summary>
/// <param name = "_type">PrintMgmtDocumentType</param>
/// <param name = "_name">PrintMgmtReportFormatName</param>
/// <param name = "_description">PrintMgmtReportFormatDescription</param>
/// <param name = "_countryRegionId">PrintMgmtReportFormatCountryRegionId</param>
/// <param name = "_system">PrintMgmtReportFormatSystem</param>
/// <param name = "_ssrs">PrintMgmtSSRS</param>
public static void addPrintMgmtReportFormat(
PrintMgmtDocumentType _type,
PrintMgmtReportFormatName _name,
PrintMgmtReportFormatDescription _description,
PrintMgmtReportFormatCountryRegionId _countryRegionId,
PrintMgmtReportFormatSystem _system = false,
PrintMgmtSSRS _ssrs = PrintMgmtSSRS::SSRS)
{
PrintMgmtReportFormat printMgmtReportFormat;
select firstonly printMgmtReportFormat
where printMgmtReportFormat.DocumentType == _type
&& printMgmtReportFormat.Description == _description
&& printMgmtReportFormat.CountryRegionId == _countryRegionId;
if (!printMgmtReportFormat)
{
// Add the new format
printMgmtReportFormat.clear();
printMgmtReportFormat.DocumentType = _type;
printMgmtReportFormat.Name = _name;
printMgmtReportFormat.Description = _description;
printMgmtReportFormat.CountryRegionId = _countryRegionId;
printMgmtReportFormat.System = _system;
printMgmtReportFormat.ssrs = _ssrs;
printMgmtReportFormat.insert();
}
}
}
7.Duplicated Menu items from standard added to form it will print like as standard
Output Menu items
HDT_ERTransfer
HDT_ERTransferCopy
HDT_ERTransferOriginal
8.To call the report on click button
[ExtensionOf(classStr(InventTransferPrintCommandShip))]
final class HDT_InventTransferPrintCommandShip_Extension
{
public void printout()
{
MenuFunction menuFunction;
Args args = new Args();
next printout();
if(this.parmInventTransferParmTable().HDT_UsePrintManagement)
{
InventTransferPrintDataProviderShip dataProviderShip = this.parmPrintDataProvider() as InventTransferPrintDataProviderShip;
menuFunction = new MenuFunction(menuitemOutputStr(HDT_ERTransfer), MenuItemType::Output);
args.record(dataProviderShip.parmInventTransferJour());
menuFunction.run(args);
}
}
}
No comments:
Post a Comment