We are using the following code to access the underlying order in a ProForm active document:
Code: Select all
var windowManager = _sp.GetService<IWindowManager>();
var order = windowManager.ActiveDocument?.GetProperty("Order") as IOrder;
Code: Select all
var windowManager = _sp.GetService<IWindowManager>();
var order = windowManager.ActiveDocument?.GetProperty("Order") as IOrder;
Code: Select all
// Get order guid.
Guid orderGuid = order.Identifier.Guid;
// Get light-weight ledger info object from manager.
ILedgersManager ledMgr = ss.GetService<ILedgersManager>();
ILedgerInfo ledgerInfo = ledMgr.GetLedgerForOrder(orderGuid);
// If you need heavy-weight legder then do this next.
IOrderLedger ledger = (IOrderLedger)lm.GetLedger(ledgerInfo);
Code: Select all
// From inside a shell package OnInitialize method
// This code will be hit on the initial load and when opening/changing tabs
var manager = GetService<IWindowManager>();
manager.ActiveDocumentChanged += (sender, e) => // Standard event args
{
var order = _windowManager.ActiveDocument.GetProperty("Order") as IOrder;
if (order != null)
MessageBox.Show("The selected tab is an order!");
var ledger = _windowManager.ActiveDocument.GetProperty("Ledger") as ILedger; // this does not work
if (ledger != null)
MessageBox.Show("The selected tab is a ledger!");
};
Code: Select all
IWindowManager wm = GetService<IWindowManager>();
IWindowFrame window = wm.ActiveWindow;
if (window != null)
{
var prop = window.GetProperty("LedgerId");
if (prop != null)
{
Guid ledgerGuid = (Guid)prop;
string ledgerName = (string)window.GetProperty("LedgerName");
}
}