Constraint Scheduling for Assemblies & Jobs
We are pleased to announce Ostendo supports full constraint scheduling down to time of the day, across both machines and employees, and for Assemblies and Job Orders. So what do we mean by Constraint Scheduling; in simple terms we allow for scheduling resources within either a production / engineering environment or for a jobbing / service environment that optimises the use of those resources to best meet the required dates for the orders with the system. When scheduling we take into account constraint resources, load balance across multiple resources, varying working patterns, continuous operations, efficiencies and process step overlaps.
Let’s look at what options are available when creating a schedule:
If you selected the option to Create a new schedule you are presented with a screen titled ‘Constraint Scheduling Orders’ which displays all the orders that met the criteria from the previous definition screen. From this screen you are able to adjust the following sorts of information that will then be used when generating the schedule:
Once you have made any changes to the orders and have clicked on the ‘Continue’ button, you’ll be presented with a ‘Please Wait’ dialog that stay on the screen while the main process of scheduling occurs (the time taken to schedule is very much dependant on the number of orders, number of resources, how many resources are constrained, and how far out the horizon is set). After the schedule process has completed you’ll be presented with the main Constraint Scheduling Board.
Within the Scheduling Board you’re presented with the following main panels:
Setup & Initialisation Screens
There are a number of new screens and some modified existing screens enabling the settings for scheduling to be defined. In essence we use the Labour Codes as Resource Codes and allow for working times and overrides to be defined at that level. We also provide for the ability to define whether a particular labour code is scheduled, and also whether that code is automatically replaced with another code when scheduling (this may be required in jobbing where multiple labour codes are used for pricing/costing purposes, but they all represent a specific scheduling resource). These labour codes can also be defined as a group of like machines/people, in other words there maybe say a packing department which has 10 staff, it wouldn’t make sense to schedule for every person, so a code can be defined as representing more than 1 resource (in this case 10).
Finite / In-Finite Capacity (Constrained Resources)
Most importantly when scheduling we have built in the concept of constraint or finite scheduling. You can define against each labour code whether it is a constraint (Finite Capacity) or not (In-Finite Capacity). Based on that setting the work will be scheduled around that constraint – it is recommended that you keep the number of constraints to a minimum – remember that this setting restricts the overall loading on that resource per time period, whereas, all the physical time constraints apply to all resources – to explain let’s look at the following examples:
a) Machine A (Finite Capacity): When scheduling the work to run on/through that machine, if on a specific day there was 8 hours available, that machine would be loaded horizontally until that 8 hours was consumed; then loading would continue to the next available day(s).
b) Machine B (In-Finite Capacity): When scheduling the work to run on/through that machine, if on a specific day there was 8 hours available, that machine would be loaded horizontally for each activity and then with each new activity, the machine would be loaded in parallel (not taking into account any other loading from other orders). Although, if there was 3 hour activity and the start of the day was 8:00am then the finish time would be 11:00am (so basically, in-finite capacity means that we are still constrained to the normal time period, but we don’t consider other work happening in that same period).
Alternates & Load Balancing
Another important factor to take into account when scheduling is whether we have alternate resources that can be used to undertake the same work (i.e. you have 10 CNC machines in your factory that can perform basically the same work, maybe at varying speeds). We provide the ability to define alternates for that labour code, and with each alternate, a speed factor is also entered. At the same time, you are able to define whether or not those alternates are load balanced – in other words, let’s say you have 2 bottling lines in a beverage plant – one of the lines has just been updated and runs 2 times faster than the other. Let’s also assume that you have defined the updated line as the default code against all bills of material; now if we didn’t define the second line as an alternate, and that its load balanced, all work would be scheduled on the updated line only. To allow for balancing of the work across those lines (you can define as many load balanced alternates as you like), you define the second line as an alternate to the first with a speed factor of 50%. This will ensure that when scheduling the work on the first line, the routine will continuously balance the work taking into account the difference in speed to optimise the throughput, therefore minimising process time.
Continuous verses Non-Continuous
There are some operations that require continuous running – typically in the process industries or where setup time is large. We have added the ability against the labour code to flag it as a Continuous Operation. This will ensure that when scheduling the activity, it will only be loaded if there’s enough time to complete it continuously. This doesn’t mean that you have to have a 24 hour operation, but means that once that activity has been scheduled, no other work will be started on that resource until it completes. Even if the labour code has not been flagged as continuous, you still have the ability to define a minimum gap required for slotting in work.
Efficiency’s & Number of Resources
When defining a labour code, as mentioned previously there is the ability to specify how many resources there are linked to this code. In other words you may wish to define a labour code for a group of machines or a number of people, if so, you can enter the number of resources for that code therefore factoring the capacity available for any given period. In conjunction with this you may wish to alter the efficiency % for that labour code (either decreasing or increasing the output); this could apply to where a resource or group of resources are not performing to their standard rates and it might be necessary to adjust the efficiency, rather than adjusting all the bills of material or job templates.
Working Times, Holidays & Overrides
There are 4 levels of working times available per labour code, these are as follows:
Resource Loading Board
This screen provides the big picture view of the loading/utilisation for all resources or departments, for a 30 day or 30 week period. You have the choice of either displaying the Firm schedule or the latest Planned schedule.
Graphical Plant View
We have added another new screen to graphically display the layout of a factory/plant displaying the loading, capacity and utilisation for resources and departments. This enables the person at a quick glance to view exactly what planned to go through the operation in a way only possible via a picture. Let’s look at a sample of what’s possible (Please Note: The actual layout is purely up to your own imagination, the Ostendo Graphical Designer is used to draw representation).
You’ll notice in the screen shot there is a panel located at the top of the screen allowing for the selection of the ‘Firm’ or ‘Planned’ schedule, a specific date or a week, and a checkbox to allow edit mode (controlled by user security).
The idea is that the layout of the resources and/or departments you wish to monitor (multiple schemes/slides can be defined for where more detail is required than can be put on one screen), can be drawn, and then associated with the actual labour code or department code while back in the Graphical Plant View screen. Help on how to do this is built into the sample file (graphicalplantview.dat) found in the base Ostendo directory.
Once you have assigned the text objects (labels) to a specific resource or department, while in ‘Edit Mode’, you can turn off edit mode and the labels will be populated with the following:
The loading and capacity information presented will depend also on the date / week start you’ve selected in the top panel (Note: You will need to have created the schedule before this information is available).
Another nice feature is the fact that you are able to drill down on a specific resource / department by simply clicking on the associated label, this present a screen similar to the following:
The linking of the graphical file (like the touch screen files) is stored in the ‘Requirements-Requirement Rules’ screen.
General and Technical
Drag & Drop Items in various screens (BOM’s, Inventory Adjustments, Orders screens)
We have added the ability to drag & drop Items into the following screens:
The Drag & Drop Items screen can be launched via the Related Menu (Toolbar) and is set to stay on top, ensuring is always available for use. The screen works very much like the windows explorer environment, where you are able to multi-select using your ‘ctrl’ and ‘shift’ keys and then drag the items selected and drop them onto the appropriate screen.
System Short Cut keys
We have added the ability define short cut keys against users (System Configuration-System Shortcuts). These short cut keys (using control-#) can be linked either to screens or to scripts (i.e. ctrl-t might call up the Timesheets screen)
Due Date Indicators
We have added some new fields to highlight (via colour coding) the required date status of orders, invoices and call tickets in the system. The idea is that when viewing the screens, there is an instant visual indicator as to whether the order, payment or ticket is either due tomorrow, due today or overdue. The screens are:
The colour coding is as follows:
Filter Screen Conditions
We have added a new style of filtering screen contents, one that enables pre-defined conditions to be assigned to buttons, given a caption and then linked to a screen. The conditions can allow for anything fr om grouping items on the new Drag & Drop screen based on say fixed categories, or for displaying quotes that are due with a dynamic number of days.
The conditions are defined in a new screen called ‘File-Customisation Configuration-Filter Screen Conditions’ and are dynamically added to the assigned screen as follows:
We have added a module called ‘Queue Services’, this module is designed to run events (like emailing reports, running the accounting link, executing scripts, etc...) on a fixed or regular basis. The idea is that you can define in the ‘Queue schedule’, the event you wish to run, when and how often, and, so long as the Queue Service is running on the server, those events are executed.
The actual service is started on the server via passing command line parameters to the Ostendo executable (like the Web Service) i.e. "C:\Program Files\Ostendo\Ostendo.exe" STARTUPID:DEMO QUEUESERVICE Username=Admin Password=Password.
The Output Types (types of events you can run) are:
Using Events with Queue Services
There are numerous times when changes in the database require further action (i.e. email the Customer when a Sales Delivery has been shipped, email the Sales Manager if an order is greater than a certain value or margin, email the Project Manager if the job/project is going off track, etc...). To accommodate this there is a table called ‘OUTPUTQUEUE’ which can written too (via say a Database Trigger) when that event occurs, and the Queue Service will then action the request.
User Defined Pricing Rules
Understanding that there will be times where the pricing and discounting rules required are so specific that the standard options available will not be adequate; we have provided empty stored procedures that if populated, will be used within Ostendo when calculating prices and discounts. So what this basically means is that pretty much any line pricing, discounting or order pricing rules can be created, that will either supersede or compliment the standard pricing rules. The three stored procedures are:
Budgets (See also Job Budgets)
We have added the ability to create Budgets for Sales & Purchases, and then compare those against history or other budgets via the new Budget Comparisons screen. A new Budget can be created from 1 of 3 methods:
The third option to generate from history has the following options:
Once the budget has been created you are able to modify the contents within the lines grid (the budget styles selected for that budget will determine the lookups available). There are 2 useful columns in the lines grid called ‘Annual Spread Amount’ and ‘Spread Factor’, these allow the entry of an annual amount and a selection of a spread factor (General-Settings-Spread Factors). If values are entered into these columns, and then the record’s saved; the annual amount will automatically be spread over the 12 month period, based on the ratios held against the spread factor definition.
We have added a new screen for comparing Budgets to Actual History, or Budgets to other Budgets. This screen provides the user with the option of then generating a Pivot, Analysis or Chart view of the comparison.
Job Budgets (see also Budgets)
We have added the ability to create Budgets for Jobs (distinct from Sales & Purchase Budgets), and then compare those against history via the new Job Budget Comparisons screen. Setting up a Job Budget is different than setting up a Sales or Purchase Budget; you link the budget to a specific Job and the period of the budget is 36 months (start month being derived from the Order Date of the Job).
There are 2 style dropdowns available for a Job Budget, in effect they are the levels you are budgeting for. In other words you may wish to create a budget for say Tasks and only Labour, or simply an overall Job revenue budget, therefore providing for multiple ways of analysing the job performance. Revenue and Profit budgets can only be created for the Job as a whole, where as Qty and Cost budgets can be for any level.
Job Budget Comparisons (see also Budget Comparisons)
We have added a new screen for comparing Job Budgets to Actual History. This screen provides the user with the option of then generating a Pivot, Analysis or Chart view of the comparison.
Graphical Web Dashboards
We have added a new module for creating web Dashboards. The idea is that you setup a Dashboard (File-Dashboard Configuration) and then assign that Dashboard(s) to an employee (we use the POS password for logging into the Dashboards). A Dashboard is basically a collection of gauges, charts & grids that provide the user with a graphical snapshot of how the particular part of the business is performing (Key Performance Indicators). To illustrate how these are setup we have included a couple of samples in this update (more help will follow).
To actually run the Dashboard you will require web services, or you can test them in the script editor (there is a new feature that will enable running the web services script in the local browser – without having to have web services running). You will also need to download the new script template that enables the Dashboard to run; to do this, add a new Web Services script in the Script Editor and then click on the ‘Download Online Template’, from which you will be able to select the ‘Dashboard’ template (you will also be prompted to download another dependant script called ‘dashdata’ – just accept that). Once you have installed that script, you’re ready to try it. Go to the ‘Script’ tab and click on ‘Run (local)’. You should be presented with a login screen for employees (remember the password can be defined as a POS password in the Employee screen and you will need to assign the dashboards to each employee). Once logged in you should see something like the following:
Web Inquiries (see also Dashboards)
We have developed a web services script that enables simple inquiry screens to be run from any web browser (like the Web Dashboards). The idea here is that you may wish to provide online information to employees remotely (i.e. Open Orders, Outstanding Invoices, Job Information, Stock Availability etc...). The actual inquiry screen is built in the standard ‘Report & View Developer’ and is then assigned to employees (File-Reporting Configuration-Web Inquires).
Like the web Dashboards you will require web services running, or you can test them in the script editor (there is a new feature that will enable a web services script to run in a local browser – without having to have web services running). You will also need to download the new script template that enables the Web Inquiry to run; to do this, add a new Web Services script in the Script Editor and then click on the ‘Download Online Template’, from which you will be able to select the ‘Inquiry’ template (you will also be prompted to download another dependant script called ‘inquirydata’ – just accept that). Once you have installed that script, you’re ready to try it. Go to the ‘Script’ tab and click on ‘Run (local)’ and you should be presented with a login screen for employees (remember the password can be defined as a POS password in the Employee screen and you will need to assign the dashboards to each employee). Once logged in you should see something like the following:
Specific Form Messages
We have added a new screen to allow the entry of messages that can be linked to specific forms and given an effective start and end date. The forms this applies to are:
This can be useful for periods like the Christmas break, where maybe the hours of trade are different or where contact details have changed.
Change Report Conditions and Refresh Report Contents
We have added the ability while in the Report Preview screen to pull up the report conditions, change them and then refresh the report contents, without having to exit the report and re-run it.
Sales, Jobs, Assemblies & Purchasing
Order Matrices for Sales & Purchases
We have added the ability to create Matrices for using in both Sales & Purchase orders. This functionality is commonly required in the apparel industry, but can be used for a variety of other environments. The concept is that you define a Matrix Style and linked to that style are 2 or 3 dimensions (i.e. Colour, Size, Fit), and then the individual Item or Descriptor codes are linked to a combination of those dimensions (the new Item Drag & Drop functionality works in this screen). A point to note is that we using individual product codes to represent each combination, not a single product with inventory tracked characteristics (such as: Colour, Size, Batch, Grade etc...). Images & properties can also be linked to that Matrix Style, and appear when in the order screens.
Using Matrices in order screens
In both the Sales and Job Order Line tabs you will see a new Batch Entry panel option called ‘Matrices’ – this, when clicked on presents the ‘Batch Entry – Matrices’ screen where you can add and select a Matrix style. Once the style has been selected you will notice a 2/3 dimensional grid displays at the bottom of the screen, where valid combination cells are editable (invalid combinations are filled with ‘----‘, and are read-only). The other thing you’ll notice is that there is a ‘Properties’ tab that displays any properties and images pre-defined for that style.
Any Items/Descriptors that are linked to a Matrix Style will be automatically added to that the style within the order even if they are entered directly into the order lines (in other words it doesn’t matter that you add or modify lines within or outside of the Matrix entry – both are updated).
Order Touch screens (See also POS Touch Screens)
We have added the ability to create user defined Touch Pads that can be then linked to any of the order screens (Sales, Jobs, Purchases, and Assemblies). Although initially designed for POS, the idea of having a user defined graphical panel within order screens provided for the following useful features:
The linking of these touch pads to order screens can be done firstly in the appropriate Rules screens (i.e. Purchase Rules for the Purchase Order screen), and then, if you wish to have user specific touch pads, then in System Configuration-Touch Pads.
Many to one for assets to Jobs
We have added the ability to link Customer Assets directly to the Job Task (as long as the Job Style = ‘Customer’, if ‘Customer Asset’ then only one asset can be linked).
Auto Apply Deposits for Sales & Jobs
We have added the ability to automatically apply deposits entered against a Sales or Job Order at the time of printing the invoice. This feature existed previously only for One Step Invoices (in Sales Orders). There is also a new Sales Rule called ‘Auto Apply Order Deposits when printing Invoices’ which, if set, will default the auto apply deposit flag against all orders (this can deactivated at an order level).
Pay Now for Batch Invoices
We have allowed the ‘Pay Now’ option to be used in the Batch Invoicing screen (previously only in Direct Invoices). This basically allows a payment to be entered into the invoice screen, which then automatically applies to that invoice and prints to that effect on the invoice itself.
Allow Delivery Invoice before shipping
We have added a new Sales Rule called ‘Allow Delivery Invoice before Shipping’. This rule, if set, allows invoices to be generated in the Sales Delivery screen before the delivery has been flagged as shipped. The idea of this is to allow invoices to be sent for approval (maybe even paid for) before the goods are delivered.
Use Delivery Number as Invoice number
We have added a new Sales Rule called ‘Use Delivery No as Invoice for Deliver Invoice’. This rule, if set, will use the Sales Delivery number as the Invoice number (with a suffix of -## catering for multiple invoices for a delivery – in case of crediting).
How to Update Costs for Closed Jobs & Assembly Orders
We added a new a new rule in Purchase Rules called ‘How to Update Costs for Closed Jobs/Assy Order’. This rule defines how the system deals with extra costs posted to a closed Job or Assembly (i.e. a supplier invoice comes in 1 month after the originating Job has been closed). There are 3 options:
Job Lines – Grid Entry & Tax Inclusive Unit Prices
We have enabled the ability to modify the Order Qty, Order Unit Price, Tax Inclusive Unit Price, and the Line Number within the lines grid (for faster line maintenance). The most significant change is that fact that you can now enter the tax inclusive unit price and the tax exclusive unit price is back calculated (previous only POS allowed for entry of tax inclusive prices). A point to note is that there are now multiple methods of creating lines:
Sales Lines – Grid Entry & Tax Inclusive Unit Prices
We have enabled the ability to modify the Order Qty, Order Unit Price, Tax Inclusive Unit Price, and the Line Number within the lines grid (for faster line maintenance). The most significant change is that fact that you can now enter the tax inclusive unit price and the tax exclusive unit price is back calculated (previous only POS allowed for entry of tax inclusive prices). A point to note that is that there are now multiple methods of creating lines:
Assembly Rules – Auto Update Current Step
We have added a new rule called ‘Auto Update Current Step on Issues’. By setting this when any issues any entered for an order, the step associated with that issue is checked against the ‘Current Step’ held in the Assembly header, and if it is a later step (based on sequence number) it automatically updates the current Assembly step. This in conjunction with the ‘Analysis – Assembly Progress’ and the Desktop views (remember if there is only 1 view it is automatically maximised, and you also have a automated refresh timer) provides for real time feedback on progress of assembly orders through the factory.
Job Rules – Auto Update Current Task
We have added a new rule called ‘Auto Update Current Task on Issues’. By setting this when any issues any entered for an order, the task associated with that issue is checked against the ‘Current Task’ held in the Job header, and if it is a later task (based on sequence number) it automatically updates that current task for the Job. This in conjunction with the ‘Analysis – Job Progress’ and the Desktop views (remember if there is only 1 view it is automatically maximised, and you also have a automated refresh timer) provides for real time feedback on progress of job orders.
Job and Sales Order, Batch Invoicing, Job Calendar Speed improvements
We have improved the speed for volume Job orders and Sales orders where there are 100’s to 1,000’s of lines. As a consequence, Batch Invoicing for multiple Jobs & Sales Orders has also improved, along with significant Job Calendar performance improvements.
Assembly Order – Top Level Order & Source Information
We have added some additional fields to the Assembly Order allowing for full traceability back up to the originating source of the top level parent order. In other words if we have a multiple level BOM structure and wish to group all assembly orders that relate to say a top level Sales Order, this feature enables that.
Bills of Material – Line Grid Editing
We have added the ability to edit the following fields from within BOM lines grid (for speed of maintenance):
Configured Bills of Material – Line Grid Editing
We have added the ability to edit the following fields from within Sales & Jobs Configured BOM lines grid (for speed of maintenance):
Direct Invoice Lines – Grid Entry & Tax Inclusive Unit Prices
We have enabled the ability to modify the Invoice Qty, Invoice Unit Price, Tax Inclusive Unit Price, and the Line Number within the lines grid (for faster line maintenance). The most significant change is that fact that you can now enter the tax inclusive unit price and the tax exclusive unit price is back calculated (previous only POS allowed for entry of tax inclusive prices).
Purchase Lines – Grid Entry
We have enabled the ability to modify the Order Qty, Order Unit Price and the Line Number within the lines grid (for faster line maintenance). A point to note that is that there are now multiple methods of creating lines:
Sales Rules – After One Step Invoice
We have added new rule to the Sales Rules screen called ‘After One Step Invoice’. This allows for automatic creation of a new order immediately after the invoice (Using ctrl-I) has been created in a One Step Invoice style of Sales Order.
Order Pricing Matrix
We have added a new style of pricing facility into Ostendo, that is, the ability to define pricing rules that dynamically apply to the order as a whole. What we mean by this is, while you’re entering order lines the order level rules are being evaluated and adjustments are made on the fly. To explain this more, let’s look at a few pricing scenarios that are handled by this new module:
The above examples are only a few common ones, there are likely to be hundreds of ways of using this new pricing facility.
You are also able to de-activate the Order Pricing Matrix rules for a specific order by setting that option in the overrides tab in the order header. This may be required where the rules need to be overridden for a specific circumstance (i.e. we are not charging freight for this order because it’s a replacement product).If you don’t set this override, the system will automatically apply all the appropriate rules after you make any change to the order.
Qty breaks in Discount matrix
We have added the ability to define a quantity break against a Discount Matrix rule. Where more than one qty break is required multiple rules can be defined, price levels, or the new Order Pricing Matrix can be used.
We have provided for a new type of descriptor, one that can be defined as an On-Charge type. This enables descriptor codes to be entered into orders as say rebate/discounts lines and then charged on to another customer or accumulated against an inventory item for invoicing at a later date. The setup of this is done in the new On-Charge tab, found in the Descriptors screen. Also see Order Pricing Matrix for more information.
POS Orders (Ability to take Orders as well as the existing Quotes & Invoices)
We have added the ability to take orders within the POS module. Previously you were able to enter quotes and invoices; this now means that for true pre-orders, POS can be used rather than Sales Orders. If orders are created in POS, they generate demands (like in Sales Orders), and are taken into account via Inventory Replenishment, Create Required Orders and Inventory Availability.
POS Touch Screens
We have added the ability to create user defined Touch Pads that are then linked specifically to the POS Station. These Touch Pads are edited through the Ostendo Graphical Designer (ostdesigner.exe), the same one used to edit Workflows and Custom Data screens. The size of the touch pad is determined by the actual size you have designed – in other words the POS grid is dynamically resized to suit. You are able to setup any layout, as many drill downs for groups of products/services, and link buttons/objects inserting Items/Descriptors with predetermined quantities if needed. For help on how to link codes to the buttons, see the sample file for ‘John’s Fresh Fruit Store’, and click on the ‘Help’ image. The sample POS touch pad file is found in the base Ostendo directory, and is called ‘OstendoPOSTouchPad.dat’ – link to this file in the POS Stations.
Inventory & Requirements
Adjustment Cost Default
We have added a new rule into Item Rules called ‘Adjustment Cost Default’. This basically sets the cost to be used when the cost is defaulted in the Inventory Adjustments screen.
Create Required Orders – New Sub Assembly Option for Assemblies
We have added the ability to explode through all levels of a manufactured product at the time of creating the order via the Create Required Orders screen. To further explain this, let’s set the background for this feature:
So what we’ve provided is the ability to decide at the time of creating the parent assembly order, whether you wish to:
Now, to allow for full traceability we have added another new feature, and that is, we hold against each Assembly Order not only the direct parent order, but the top level Assembly Order number and also the top level source – see the following topic on this.
Inventory Items Re-Order Basis
We have added a new field called ‘Reorder Basis’ into the Items screen, which allows the dynamic calculation of reorder levels based on inventory history. There are 2 options: