Ejemplo n.º 1
0
menuSales::menuSales(GUIClient *pParent) :
  QObject(pParent)
{
  setObjectName("soModule");
  parent = pParent;

  toolBar = new QToolBar(tr("Sales Tools"));
  toolBar->setObjectName("Sales Tools");
  toolBar->setIconSize(QSize(32, 32));
  parent->addToolBar(toolBar);

  mainMenu = new QMenu(parent);
  quotesMenu = new QMenu(parent);
  ordersMenu = new QMenu(parent);
  billingMenu = new QMenu(parent);
  billingInvoicesMenu = new QMenu(parent);
  billingCreditMemosMenu= new QMenu(parent);
  billingFormsMenu= new QMenu(parent);
  returnsMenu= new QMenu(parent);
  lookupMenu = new QMenu(parent);
  lookupQuoteMenu = new QMenu(parent);
  lookupSoMenu = new QMenu(parent);
  formsMenu = new QMenu(parent);
  reportsMenu = new QMenu(parent);
  analysisMenu = new QMenu(parent);
  prospectMenu = new QMenu(parent);
  customerMenu = new QMenu(parent);
  pricingReportsMenu = new QMenu(parent);
  pricingMenu = new QMenu(parent);
  pricingUpdateMenu = new QMenu(parent);
  utilitiesMenu = new QMenu(parent);

  mainMenu->setObjectName("menu.sales");
  quotesMenu->setObjectName("menu.sales.quotes");
  ordersMenu->setObjectName("menu.sales.orders");
  billingMenu->setObjectName("menu.sales.billing");
  billingInvoicesMenu->setObjectName("menu.sales.billinginvoices");
  billingCreditMemosMenu->setObjectName("menu.sales.billingcreditmemos");
  billingFormsMenu->setObjectName("menu.sales.billingforms");
  returnsMenu->setObjectName("menu.sales.returns");
  lookupMenu->setObjectName("menu.sales.lookup");
  lookupQuoteMenu->setObjectName("menu.sales.lookupquote");
  lookupSoMenu->setObjectName("menu.sales.lookupso");
  formsMenu->setObjectName("menu.sales.forms");
  reportsMenu->setObjectName("menu.sales.reports");
  analysisMenu->setObjectName("menu.sales.analysis");
  prospectMenu->setObjectName("menu.sales.prospect");
  customerMenu->setObjectName("menu.sales.customer");
  pricingReportsMenu->setObjectName("menu.sales.pricingreports");
  pricingMenu->setObjectName("menu.sales.pricing");
  pricingUpdateMenu->setObjectName("menu.sales.pricingupdate");
  utilitiesMenu->setObjectName("menu.sales.utilities");

  actionProperties acts[] = {
    // Sales | Quotes
    { "menu",	tr("&Quote"),	(char*)quotesMenu,	mainMenu,	"true",	NULL, NULL, true, NULL },
    { "so.newQuote", tr("&New..."),	SLOT(sNewQuote()), quotesMenu, "MaintainQuotes",	NULL, NULL, true, NULL },
    { "so.listQuotes", tr("&List..."),	SLOT(sQuotes()), quotesMenu, "MaintainQuotes ViewQuotes",	NULL, NULL, true, NULL },
    
    // Sales | Sales Order
    { "menu",	tr("&Sales Order"),	(char*)ordersMenu,	mainMenu,	"true",	NULL, NULL, true, NULL },
    { "so.newSalesOrder", 	     tr("&New..."),		SLOT(sNewSalesOrder()),   ordersMenu, "MaintainSalesOrders", NULL, NULL,	 true, NULL },
    { "so.listOpenSalesOrders",      tr("&List Open..."),	SLOT(sOpenSalesOrders()), ordersMenu, "MaintainSalesOrders ViewSalesOrders",	QPixmap(":/images/listOpenSalesOrders.png"), toolBar,  true, tr("List Open Sales Orders") },

    // Sales | Billing
    { "menu",	tr("&Billing"),     (char*)billingMenu,		mainMenu,	"true",	NULL, NULL, true, NULL },
    
    // Sales | Billing | Invoice
    { "menu",	tr("&Invoice"),   (char*)billingInvoicesMenu,	billingMenu,	"true",	NULL, NULL, true, NULL },
    { "so.uninvoicedShipments",		     tr("&Uninvoiced Shipments..."),			SLOT(sUninvoicedShipments()), 		billingInvoicesMenu, "SelectBilling",	 QPixmap(":/images/uninvoicedShipments"), toolBar, true, tr("Uninvoiced Shipments") },
    { "so.selectAllShippedOrdersForBilling", tr("Approve &All Shipped Orders for Billing..."),	SLOT(sSelectShippedOrdersForBilling()), billingInvoicesMenu, "SelectBilling",	NULL, NULL, true, NULL },
    { "so.selectOrderForBilling",	     tr("Approve &Order for Billing..."),			SLOT(sSelectOrderForBilling()),		billingInvoicesMenu, "SelectBilling",	NULL, NULL, true, NULL },
    { "separator",	NULL,	NULL,	billingInvoicesMenu,	"true",		NULL, NULL, true, NULL },
    { "so.dspBillingSelections",	     tr("Billing &Approvals..."),	SLOT(sDspBillingSelections()), billingInvoicesMenu, "SelectBilling", QPixmap(":/images/billingSelections"), toolBar, true, tr("Billing Approvals") },
    { "so.createInvoices",	     tr("&Create Invoices..."),	SLOT(sCreateInvoices()), billingInvoicesMenu, "SelectBilling",	NULL, NULL, true, NULL },
    { "separator",	NULL,	NULL,	billingInvoicesMenu,	"true",		NULL, NULL, true, NULL },
    { "so.listUnpostedInvoices",	     tr("&List Unposted Invoices..."),	SLOT(sUnpostedInvoices()), billingInvoicesMenu, "SelectBilling",	NULL, NULL,  true, NULL },
    { "so.postInvoices",		     tr("Post &Invoices..."),		SLOT(sPostInvoices()), billingInvoicesMenu, "PostMiscInvoices",	NULL, NULL, true, NULL },

    // Sales | Billing | Return
    { "menu",	tr("&Return"), (char*)billingCreditMemosMenu,	billingMenu,	"true",	NULL, NULL, true, NULL },
    { "so.newCreditMemo",		     tr("&New..."),		SLOT(sNewCreditMemo()), billingCreditMemosMenu, "MaintainCreditMemos",	NULL, NULL, true, NULL },
    { "so.listUnpostedCreditMemos",	     tr("&List Unposted..."),	SLOT(sUnpostedCreditMemos()), billingCreditMemosMenu, "MaintainCreditMemos ViewCreditMemos",	NULL, NULL, true, NULL },
    { "so.creditMemoEditList",		     tr("&Edit List..."),	SLOT(sCreditMemoEditList()), billingCreditMemosMenu, "MaintainCreditMemos ViewCreditMemos",	NULL, NULL, true, NULL },
    { "separator",	NULL,	NULL,	billingCreditMemosMenu,	"true",		NULL, NULL, true, NULL },
    { "so.postCreditMemos",		     tr("&Post..."),	SLOT(sPostCreditMemos()), billingCreditMemosMenu, "PostARDocuments",	NULL, NULL, true, NULL },

    { "separator",	NULL,	NULL,	billingMenu,	"true",		NULL, NULL, true, NULL },
    
    // Sales | Billing | Forms
    { "menu",	tr("&Forms"), (char*)billingFormsMenu,	billingMenu,	"true",	NULL, NULL, true, NULL },
    { "so.printInvoices",		     tr("&Print Invoices..."),		SLOT(sPrintInvoices()), billingFormsMenu, "PrintInvoices",	NULL, NULL, true, NULL },
    { "so.reprintInvoices",		     tr("&Re-Print Invoices..."),	SLOT(sReprintInvoices()), billingFormsMenu, "PrintInvoices",	NULL, NULL, true, NULL },
    { "separator",	NULL,	NULL,	billingFormsMenu,	"true",		NULL, NULL, true , NULL },
    { "so.printCreditMemos",		     tr("Print &Returns..."),	SLOT(sPrintCreditMemos()), billingFormsMenu, "PrintCreditMemos",	NULL, NULL, true, NULL },
    { "so.reprintCreditMemos",		     tr("Re-Print &Returns..."),	SLOT(sReprintCreditMemos()), billingFormsMenu, "PrintCreditMemos",	NULL, NULL, true, NULL },

    // Sales | Returns
    { "menu",	tr("&Return"),	(char*)returnsMenu,	mainMenu, "true",	NULL, NULL,  _metrics->boolean("EnableReturnAuth"), NULL },
    { "so.newReturn", tr("&New..."),	SLOT(sNewReturn()), returnsMenu, "MaintainReturns",	NULL, NULL, true, NULL },
    { "so.openReturns", tr("&List Open..."),	SLOT(sOpenReturns()), returnsMenu, "MaintainReturns ViewReturns",	NULL, NULL, true, NULL },
    { "separator",	NULL,	NULL,	returnsMenu,	"true",		NULL, NULL, true , NULL },
    { "so.returnsWorkbench", tr("&Workbench..."),	SLOT(sReturnsWorkbench()), returnsMenu, "MaintainReturns ViewReturns",	NULL, NULL, true, NULL },

    { "separator",	NULL,	NULL,	mainMenu,	"true",		NULL, NULL, true, NULL },
    
    // Sales | Lookup
    { "menu",	tr("&Lookup"),           (char*)lookupMenu,	mainMenu,	"true",	NULL, NULL, true, NULL },
    
    // Sales | Lookup | Quote Lookup
    { "menu",	tr("&Quote"),           (char*)lookupQuoteMenu,	lookupMenu,	"true",	NULL, NULL, true, NULL },
    { "so.dspQuoteLookupByCustomer", tr("by &Customer..."),	SLOT(sDspQuoteLookupByCustomer()), lookupQuoteMenu, "ViewQuotes",	NULL, NULL, true, NULL },
    { "so.dspQuoteOrderLookupByItem", tr("by &Item..."),	SLOT(sDspQuoteLookupByItem()), lookupQuoteMenu, "ViewQuotes",	NULL, NULL, true, NULL },
    
    // Sales | Lookup | Sales Order Lookup
    { "menu",	tr("&Sales Order"),           (char*)lookupSoMenu,	lookupMenu,	"true",	NULL, NULL, true, NULL },
    { "so.dspSalesOrderLookupByCustomerType", tr("by Customer &Type..."),	SLOT(sDspOrderLookupByCustomerType()), lookupSoMenu, "ViewSalesOrders",	NULL, NULL, true, NULL },
    { "so.dspSalesOrderLookupByCustomer", tr("by &Customer..."),	SLOT(sDspOrderLookupByCustomer()), lookupSoMenu, "ViewSalesOrders",	NULL, NULL, true, NULL },
    { "so.dspSalesOrderLookupByCustomerPO", tr("by Customer &PO..."),	SLOT(sDspOrderLookupByCustomerPO()), lookupSoMenu, "ViewSalesOrders",	NULL, NULL, true, NULL },
    { "so.dspSalesOrderLookupByItem", tr("by &Item..."),	SLOT(sDspOrderLookupByItem()), lookupSoMenu, "ViewSalesOrders",	NULL, NULL, true, NULL },
    
    { "separator",	NULL,	NULL,	lookupMenu,	"true",		NULL, NULL, true, NULL }, 
    { "so.dspSalesOrderStatus", tr("Sales Order S&tatus..."),	SLOT(sDspSalesOrderStatus()), lookupMenu, "ViewSalesOrders",	NULL, NULL, true, NULL },   
  
    // Sales | Forms
    { "menu",	tr("&Forms"),           (char*)formsMenu,	mainMenu,	"true",	NULL, NULL, true, NULL },
    { "so.printSalesOrderForm", tr("Print Sales &Order Form..."),	SLOT(sPrintSalesOrderForm()), formsMenu, "MaintainSalesOrders ViewSalesOrders",	NULL, NULL, true, NULL },
    { "so.printReturnAuthForm", tr("Print &Return Auth. Form..."),	SLOT(sPrintReturnAuthForm()), formsMenu, "MaintainReturns",	NULL, NULL, _metrics->boolean("EnableReturnAuth"), NULL },
    { "separator",	NULL,	NULL,	formsMenu,	"true",		NULL, NULL, true , NULL }, 
    { "so.packingListBatch", tr("Packing &List Batch..."),	SLOT(sPackingListBatch()), formsMenu, "MaintainPackingListBatch ViewPackingListBatch",	NULL, NULL, true, NULL },
    { "so.printPackingList", tr("&Print Packing List..."),	SLOT(sPrintPackingList()), formsMenu, "PrintPackingLists",	NULL, NULL, true, NULL },


    // Sales | Reports
    { "menu",	tr("&Reports"),           (char*)reportsMenu,	mainMenu,	"true",	NULL, NULL, true, NULL },
    { "so.dspSummarizedBacklogByWarehouse", tr("Su&mmarized Backlog..."),	SLOT(sDspSummarizedBacklogByWarehouse()), reportsMenu, "ViewSalesOrders",	QPixmap(":/images/dspSummarizedBacklogByWhse.png"), toolBar,  true, tr("Summarized Backlog") },

    // Sales | Reports | Backlog
    { "so.dspBacklog", tr("&Backlog..."),	SLOT(sDspBacklog()), reportsMenu, "ViewSalesOrders",	NULL, NULL, true, NULL },
    { "so.dspPartiallyShippedOrders", tr("&Partially Shipped Orders..."),	SLOT(sDspPartiallyShippedOrders()), reportsMenu, "ViewSalesOrders",	NULL, NULL, true, NULL },
    { "so.dspReservations", tr("Reservations by Item..."),	SLOT(sDspReservations()), reportsMenu, "ViewInventoryAvailability",	NULL, NULL, _metrics->boolean("EnableSOReservations"), NULL },    
    { "separator",	NULL,	NULL,	reportsMenu,	"true",		NULL, NULL, true, NULL },   
    
    // Sales | Reports | Inventory Availability
    { "so.dspInventoryAvailability", tr("Inventory &Availability..."),	SLOT(sDspInventoryAvailability()), reportsMenu, "ViewInventoryAvailability",	NULL, NULL, true, NULL },
    { "so.dspInventoryAvailabilityBySalesOrder", tr("Availability by &Sales Order..."),	SLOT(sDspInventoryAvailabilityBySalesOrder()), reportsMenu, "ViewInventoryAvailability",	NULL, NULL, true, NULL },
    { "so.dspInventoryAvailabilityByCustomerType", tr("Availability by &Customer Type..."),	SLOT(sDspInventoryAvailabilityByCustomerType()), reportsMenu, "ViewInventoryAvailability",	NULL, NULL, true, NULL },

    { "separator",	NULL,	NULL,	reportsMenu,	"true",		NULL, NULL, true, NULL },
    { "so.dspEarnedCommissions", tr("&Earned Commissions..."),	SLOT(sDspEarnedCommissions()), reportsMenu, "ViewCommissions",	NULL, NULL, true, NULL },
    { "so.dspBriefEarnedCommissions", tr("B&rief Earned Commissions..."),	SLOT(sDspBriefEarnedCommissions()), reportsMenu, "ViewCommissions",	NULL, NULL, true, NULL },
    { "so.dspTaxHistory", tr("Tax History..."),	SLOT(sDspTaxHistory()), reportsMenu, "ViewTaxReconciliations",	NULL, NULL, true, NULL },

    { "separator",	NULL,	NULL,	reportsMenu,	"true",		NULL, NULL, true, NULL },
    
    // Sales | Analysis
    { "menu",	tr("&Analysis"),           (char*)analysisMenu,	mainMenu,	"true",	NULL, NULL, true, NULL },
    { "sa.dspBookings", tr("&Bookings..."), SLOT(sDspBookings()), analysisMenu, "ViewSalesOrders", NULL, NULL, true , NULL },
    { "sa.dspTimePhasedBookings", tr("T&ime Phased Bookings..."), SLOT(sDspTimePhasedBookings()), analysisMenu, "ViewSalesOrders", NULL, NULL, true , NULL },
    { "separator",	NULL,	NULL,	analysisMenu,	"true",		NULL, NULL, true, NULL },
    { "sa.dspSalesHistory", tr("Sales &History..."), SLOT(sDspSalesHistory()), analysisMenu, "ViewSalesHistory", NULL, NULL, true , NULL },
    { "sa.dspBriefSalesHistory", tr("Brie&f Sales History..."), SLOT(sDspBriefSalesHistory()), analysisMenu, "ViewSalesHistory", NULL, NULL, true , NULL },
    { "sa.dspSummarizedSalesHistory", tr("Summari&zed Sales History..."), SLOT(sDspSummarizedSales()), analysisMenu, "ViewSalesHistory", NULL, NULL, true , NULL },
    { "sa.dspTimePhasedSalesHistory", tr("Time &Phased Sales History..."), SLOT(sDspTimePhasedSales()), analysisMenu, "ViewSalesHistory", NULL, NULL, true , NULL },

    { "separator",	NULL,	NULL,	mainMenu,	"true",		NULL, NULL, true, NULL },

    // Sales | Prospect
    { "menu",	tr("&Prospect"),       (char*)prospectMenu,	mainMenu,	"true",	NULL, NULL, true, NULL },
    { "so.enterNewProspect", tr("&New..."),	SLOT(sNewProspect()), prospectMenu, "MaintainProspectMasters",	NULL, NULL, true, NULL },
    { "so.prospects", tr("&List..."),	SLOT(sProspects()), prospectMenu, "MaintainProspectMasters ViewProspectMasters",	NULL, NULL, true, NULL },

    // Sales | Customer
    { "menu",	tr("&Customer"),       (char*)customerMenu,	mainMenu,	"true",	NULL, NULL, true, NULL },
    { "so.enterNewCustomer", tr("&New..."),	SLOT(sNewCustomer()), customerMenu, "MaintainCustomerMasters",	NULL, NULL, true, NULL },
    { "so.customers", tr("&List..."),	SLOT(sCustomers()), customerMenu, "MaintainCustomerMasters ViewCustomerMasters",	NULL, NULL, true, NULL },
    { "separator",	NULL,	NULL,	customerMenu,	"true",		NULL, NULL, true, NULL },
    { "so.customerWorkbench", tr("&Workbench..."),	SLOT(sCustomerWorkbench()), customerMenu, "MaintainCustomerMasters ViewCustomerMasters",	QPixmap(":/images/customerInformationWorkbench.png"), toolBar,  true, tr("Customer Workbench") }, 
    { "separator",	NULL,	NULL,	customerMenu,	"true",		NULL, NULL, true, NULL },
    { "so.customerGroups", tr("&Groups..."),	SLOT(sCustomerGroups()), customerMenu, "MaintainCustomerGroups ViewCustomerGroups",	NULL, NULL, true, NULL },
   
    // Sales | Pricing
    { "menu",	tr("Pricing"),       (char*)pricingMenu,	mainMenu,	"true",	NULL, NULL, true, NULL },
    { "so.itemListPrice", tr("Item &List Price..."),	SLOT(sItemListPrice()), pricingMenu, "MaintainListPrices ViewListPrices",	NULL, NULL, true, NULL },
    { "so.updateListPricesByProductCategory", tr("&Update List Prices..."),	SLOT(sUpdateListPricesByProductCategory()), pricingMenu, "MaintainListPrices",	NULL, NULL, true, NULL },
    { "separator",	NULL,	NULL,	pricingMenu,	"true",		NULL, NULL, true, NULL },
    { "so.pricingSchedules", tr("Pricing &Schedules..."),	SLOT(sPricingSchedules()), pricingMenu, "MaintainListPrices ViewListPrices",	NULL, NULL, true, NULL },
    { "so.updatePricingSchedules", tr("Update Pricing Schedules..."),	SLOT(sUpdatePrices()), pricingMenu, "UpdatePricingSchedules",	NULL, NULL, true, NULL },
    { "so.pricingScheduleAssignments", tr("Pricing Schedule Assi&gnments..."),	SLOT(sPricingScheduleAssignments()), pricingMenu, "AssignPricingSchedules",	NULL, NULL, true, NULL },
    { "so.sales", tr("S&ales..."),	SLOT(sSales()), pricingMenu, "CreateSales",	NULL, NULL, true, NULL },
    { "separator",	NULL,	NULL,	pricingMenu,	"true",		NULL, NULL, true, NULL },

    // Sales | Pricing | Reports
    { "menu",	tr("&Reports"),	(char*)pricingReportsMenu,	pricingMenu,	"true",	NULL, NULL, true, NULL },
    { "so.dspPricesByCustomerType", tr("Item Prices by Customer &Type..."),	SLOT(sDspPricesByCustomerType()), pricingReportsMenu, "ViewCustomerPrices", NULL, NULL,	 true, NULL },
    { "so.dspPricesByCustomer", tr("Item Prices by &Customer..."),	SLOT(sDspPricesByCustomer()), pricingReportsMenu, "ViewCustomerPrices", NULL, NULL,	 true, NULL },
    { "so.dspPricesByItem", tr("Item Prices by &Item..."),	SLOT(sDspPricesByItem()), pricingReportsMenu, "ViewCustomerPrices", NULL, NULL,	 true, NULL },
    { "separator",	NULL,	NULL,	pricingReportsMenu,	"true",		NULL, NULL, true, NULL },
    { "so.dspFreightPricesByCustomerType", tr("Freight Prices by Customer &Type..."),	SLOT(sDspFreightPricesByCustomerType()), pricingReportsMenu, "ViewCustomerPrices", NULL, NULL,	 true, NULL },
    { "so.dspFreightPricesByCustomer", tr("Freight Prices by &Customer..."),	SLOT(sDspFreightPricesByCustomer()), pricingReportsMenu, "ViewCustomerPrices", NULL, NULL,	 true, NULL },
    
    { "separator",	NULL,	NULL,	mainMenu,	"true",		NULL, NULL, true, NULL },

    { "menu",	tr("&Utilities"),         (char*)utilitiesMenu,	mainMenu,	"true",	NULL, NULL, true, NULL },
    { "so.reassignCustomerTypeByCustomerType", tr("&Reassign Customer Type by Customer Type..."),	SLOT(sReassignCustomerTypeByCustomerType()), utilitiesMenu, "MaintainCustomerMasters",	NULL, NULL, true, NULL },
    { "so.updateCreditStatusByCustomer", tr("&Update Credit Status by Customer..."),	SLOT(sUpdateCreditStatusByCustomer()), utilitiesMenu, "MaintainCustomerMasters UpdateCustomerCreditStatus",	NULL, NULL, true, NULL },
    { "separator",	NULL,	NULL,	utilitiesMenu,	"true",		NULL, NULL, true, NULL },
    { "so.purgeInvoices",		     tr("Purge &Invoices..."),		SLOT(sPurgeInvoices()), utilitiesMenu, "PurgeInvoices",	NULL, NULL, true, NULL },
    { "so.purgeCreditMemos",		     tr("Purge &Returns..."),	SLOT(sPurgeCreditMemos()), utilitiesMenu, "PurgeCreditMemos",	NULL, NULL, true, NULL },
    { "separator",	NULL,	NULL,	utilitiesMenu,	"true",		NULL, NULL, _metrics->boolean("EnableSOReservations"), NULL },
    { "so.allocateReservations", tr("Allocate Reser&vations..."), SLOT(sAllocateReservations()), utilitiesMenu, "MaintainReservations", NULL, NULL, _metrics->boolean("EnableSOReservations") , NULL },
    { "separator",	NULL,	NULL,	utilitiesMenu,	"true",		NULL, NULL, true, NULL },
    { "sa.archieveSalesHistory", tr("&Archive Sales History..."), SLOT(sArchiveSalesHistory()), utilitiesMenu, "ArchiveSalesHistory", NULL, NULL, true , NULL },
    { "sa.restoreSalesHistory", tr("Restore &Sales History..."), SLOT(sRestoreSalesHistory()), utilitiesMenu, "RestoreSalesHistory", NULL, NULL, true , NULL },

    { "so.setup",	tr("&Setup..."),	SLOT(sSetup()),	mainMenu,	NULL,	NULL,	NULL,	true, NULL	},

  };

  addActionsToMenu(acts, sizeof(acts) / sizeof(acts[0]));

  parent->populateCustomMenu(mainMenu, "Sales");
  QAction * m = parent->menuBar()->addMenu(mainMenu);
  if(m)
    m->setText(tr("S&ales"));
}
Ejemplo n.º 2
0
moduleSA::moduleSA(OpenMFGGUIClient *pParent) :
    QObject(pParent, "")
{
    parent = pParent;

//  Displays
    displaysMenu = new QMenu();

    parent->actions.append( new Action( parent, "sa.dspSalesHistoryByCustomer", tr("Sales History by Customer..."),
                                        this, SLOT(sDspSalesHistoryByCustomer()),
                                        displaysMenu, _privleges->check("ViewSalesHistory") ) );

    parent->actions.append( new Action( parent, "sa.dspSalesHistoryByBillToName", tr("Sales History by Bill-To Name..."),
                                        this, SLOT(sDspSalesHistoryByBilltoName()),
                                        displaysMenu, _privleges->check("ViewSalesHistory") ) );

    parent->actions.append( new Action( parent, "sa.dspSalesHistoryByShipTo", tr("Sales History by Ship-To..."),
                                        this, SLOT(sDspSalesHistoryByShipTo()),
                                        displaysMenu, _privleges->check("ViewSalesHistory") ) );

    parent->actions.append( new Action( parent, "sa.dspSalesHistoryByItem", tr("Sales History by Item..."),
                                        this, SLOT(sDspSalesHistoryByItem()),
                                        displaysMenu, _privleges->check("ViewSalesHistory") ) );

    parent->actions.append( new Action( parent, "sa.dspSalesHistoryBySalesRep", tr("Sales History by Sales Rep..."),
                                        this, SLOT(sDspSalesHistoryBySalesRep()),
                                        displaysMenu, _privleges->check("ViewSalesHistory") ) );

    parent->actions.append( new Action( parent, "sa.dspSalesHistoryByProductCategory", tr("Sales History by Product Category..."),
                                        this, SLOT(sDspSalesHistoryByProductCategory()),
                                        displaysMenu, _privleges->check("ViewSalesHistory") ) );

    parent->actions.append( new Action( parent, "sa.dspSalesHistoryByCustomerType", tr("Sales History by Customer Type..."),
                                        this, SLOT(sDspSalesHistoryByCustomerType()),
                                        displaysMenu, _privleges->check("ViewSalesHistory") ) );

    parent->actions.append( new Action( parent, "sa.dspSalesHistoryByCustomerGroup", tr("Sales History by Customer Group..."),
                                        this, SLOT(sDspSalesHistoryByCustomerGroup()),
                                        displaysMenu, _privleges->check("ViewSalesHistory") ) );

    displaysMenu->insertSeparator();

    parent->actions.append( new Action( parent, "sa.dspBriefSalesHistoryByCustomer", tr("Brief Sales History by Customer..."),
                                        this, SLOT(sDspBriefSalesHistoryByCustomer()),
                                        displaysMenu, _privleges->check("ViewSalesHistory") ) );

    parent->actions.append( new Action( parent, "sa.dspBriefSalesHistoryByCustomerType", tr("Brief Sales History by Customer Type..."),
                                        this, SLOT(sDspBriefSalesHistoryByCustomerType()),
                                        displaysMenu, _privleges->check("ViewSalesHistory") ) );

    parent->actions.append( new Action( parent, "sa.dspBriefSalesHistoryBySalesRep", tr("Brief Sales History by Sales Rep..."),
                                        this, SLOT(sDspBriefSalesHistoryBySalesRep()),
                                        displaysMenu, _privleges->check("ViewSalesHistory") ) );

    displaysMenu->insertSeparator();

    parent->actions.append( new Action( parent, "sa.dspBookingsByCustomer", tr("Bookings by Customer..."),
                                        this, SLOT(sDspBookingsByCustomer()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspBookingsByCustomerGroup", tr("Bookings by Customer Group..."),
                                        this, SLOT(sDspBookingsByCustomerGroup()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspBookingsByShipTo", tr("Bookings by Ship-To..."),
                                        this, SLOT(sDspBookingsByShipTo()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspBookingsByItem", tr("Bookings by Item..."),
                                        this, SLOT(sDspBookingsByItem()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspBookingsByProductCategory", tr("Bookings by Product Category..."),
                                        this, SLOT(sDspBookingsByProductCategory()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspBookingsBySalesRep", tr("Bookings by Sales Rep..."),
                                        this, SLOT(sDspBookingsBySalesRep()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    displaysMenu->insertSeparator();

    parent->actions.append( new Action( parent, "sa.dspSummarizedSalesHistoryByCustomer", tr("Summarized Sales History by Customer..."),
                                        this, SLOT(sDspSummarizedSalesByCustomer()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspSummarizedSalesHistoryByCustomerType", tr("Summarized Sales History by Customer Type..."),
                                        this, SLOT(sDspSummarizedSalesByCustomerType()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspSummarizedSalesHistoryByCustomerByItem", tr("Summarized Sales History by Customer by Item..."),
                                        this, SLOT(sDspSummarizedSalesByCustomerByItem()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspSummarizedSalesHistoryByCustomerTypeByItem", tr("Summarized Sales History by Customer Type by Item..."),
                                        this, SLOT(sDspSummarizedSalesByCustomerTypeByItem()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspSummarizedSalesHistoryByItem", tr("Summarized Sales History by Item..."),
                                        this, SLOT(sDspSummarizedSalesByItem()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspSummarizedSalesHistoryBySalesRep", tr("Summarized Sales History by Sales Rep..."),
                                        this, SLOT(sDspSummarizedSalesBySalesRep()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspSummarizedSalesHistoryByShippingZoneByItem", tr("Summarized Sales History by Shipping Zone by Item..."),
                                        this, SLOT(sDspSummarizedSalesHistoryByShippingZone()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    displaysMenu->insertSeparator();

    parent->actions.append( new Action( parent, "sa.dspTimePhasedBookingsByItem", tr("Time-Phased Bookings by Item..."),
                                        this, SLOT(sDspTimePhasedBookingsByItem()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspTimePhasedBookingsByProductCategory", tr("Time-Phased Bookings by Product Category..."),
                                        this, SLOT(sDspTimePhasedBookingsByProductCategory()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspTimePhasedBookingsByCustomer", tr("Time-Phased Bookings by Customer..."),
                                        this, SLOT(sDspTimePhasedBookingsByCustomer()),
                                        displaysMenu, _privleges->check("ViewSalesOrders") ) );

    parent->actions.append( new Action( parent, "sa.dspTimePhasedSalesHistoryByItem", tr("Time-Phased Sales History by Item..."),
                                        this, SLOT(sDspTimePhasedSalesByItem()),
                                        displaysMenu, (_privleges->check("ViewSalesHistory") && _privleges->check("ViewCustomerPrices")) ) );

    parent->actions.append( new Action( parent, "sa.dspTimePhasedSalesHistoryByProductCategory", tr("Time-Phased Sales History by Product Category..."),
                                        this, SLOT(sDspTimePhasedSalesByProductCategory()),
                                        displaysMenu, (_privleges->check("ViewSalesHistory") && _privleges->check("ViewCustomerPrices")) ) );

    parent->actions.append( new Action( parent, "sa.dspTimePhasedSalesHistoryByCustomer", tr("Time-Phased Sales History by Customer..."),
                                        this, SLOT(sDspTimePhasedSalesByCustomer()),
                                        displaysMenu, (_privleges->check("ViewSalesHistory") && _privleges->check("ViewCustomerPrices")) ) );

    parent->actions.append( new Action( parent, "sa.dspTimePhasedSalesHistoryByCustomerGroup", tr("Time-Phased Sales History by Customer Group..."),
                                        this, SLOT(sDspTimePhasedSalesByCustomerGroup()),
                                        displaysMenu, (_privleges->check("ViewSalesHistory") && _privleges->check("ViewCustomerPrices")) ) );

    parent->actions.append( new Action( parent, "sa.dspTimePhasedSalesHistoryByCustomerByItem", tr("Time-Phased Sales History by Customer by Item..."),
                                        this, SLOT(sDspTimePhasedSalesByCustomerByItem()),
                                        displaysMenu, (_privleges->check("ViewSalesHistory") && _privleges->check("ViewCustomerPrices")) ) );

//  Reports
    reportsMenu = new QMenu();

    parent->actions.append( new Action( parent, "sa.rptPrintSASpecialCalendarForm", tr("Print S/A Special Calendar Form..."),
                                        this, SLOT(sPrintSASpecialCalendarForm()),
                                        reportsMenu, _privleges->check("ViewSalesHistory") ) );

//  Utilities
    utilitiesMenu = new QMenu();

    parent->actions.append( new Action( parent, "sa.archieveSalesHistory", tr("Archive Sales History..."),
                                        this, SLOT(sArchiveSalesHistory()),
                                        utilitiesMenu, _privleges->check("ArchiveSalesHistory") ) );

    parent->actions.append( new Action( parent, "sa.restoreSalesHistory", tr("Restore Sales History..."),
                                        this, SLOT(sRestoreSalesHistory()),
                                        utilitiesMenu, _privleges->check("RestoreSalesHistory") ) );


    mainMenu = new QMenu();
    mainMenu->insertItem(tr("Displays"), displaysMenu);
    mainMenu->insertItem(tr("Reports"), reportsMenu);
    mainMenu->insertItem(tr("Utilities"), utilitiesMenu);
    parent->populateCustomMenu(mainMenu, "S/A");
    parent->menuBar()->insertItem(tr("&S/A"), mainMenu);
}