Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

If I understand your example, your saying that when you are dealing with some employee, you need to charge some of their expenses or costs to a cost centre. But the cost centre of a given employee, is that of the this employee's manager. Therefore, to fill in the cost centre, you have to first query the employee's manager, and then query that manager's cost centre, and then fill in that value wherever it is required.

Where that falls down is that you are filling in the cost centre in relation to the employee. You should not be doing this.

If the Managers own (have responsibility for) the cost centres, then all his employee's costs, are his costs. He should have oversight of them. Once he approves them, they become a part of his costs. Only at this point should the cost centre be filled in.

In other words, if you find yourself in the position of needing to aquire information from a a remote source, to complete a task at a given level, you are doing the task at the wrong level.

When the Employee's complete their costs/expense forms, they should not be attributing them to a cost centre at all. Indeed, their forms should not be fed into the Costing system directly. Their forms should be assign back to their managers, where they should be consolidated and rolled up into a summary screen against which the manager will attribute costs centre numbers. This allocation to a cost centre then becomes his explicit approval of the costs.

In this way, the employees (flesh & blood) do not have to bypass the online system, by seeking verbal approvals (and getting a nudge and a wink on the correct costs centre number to allocate stuff against). It is these ad hoc arrangements, often as not done whilst standing around the coffee machine or water cooler than break the audit trail, and create huge problems down line.

Ex.1 ) An employee seeks approval for an expense item, and is given a cost centre number. A few weeks later, he has obtain another expense item. The manager is not around, and it seems similar to the other one, so he fills in the same cost centre number. Audit problems ensure.

Ex. 2) Three managers up the line, a re-structuring occurs that move this employee's, manager's, manager from one cost group to another. As a consequence, all the costs centre numbers down stream change. Because of the ad hoc "standing approval" arrangements, all the usual expenses continue to be billed to the old cost centres and audit problem's ensue.

This was all very common in the bad old days before MIS systems where set up properly.

Any arrangement whereby every employee assigns their own costs to cost centres, effectively invalidates the cost centre mechanism, and that you are encountering this problem within the software design, is direct evidence of that problem.

That's one of the strengths of OOD. If you find that you are having trouble correctly modelling reality, within your class structure, it can often be because you've hit upon a flaw in the existing system.


Examine what is said, not who speaks.
"But you should never overestimate the ingenuity of the sceptics to come up with a counter-argument." -Myles Allen
"Think for yourself!" - Abigail        "Time is a poor substitute for thought"--theorbtwo         "Efficiency is intelligent laziness." -David Dunham
"Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon

In reply to Re: A novice's thoughts on applying Demeter to extension code by BrowserUk
in thread A novice's thoughts on applying Demeter to extension code by diotalevi

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (6)
As of 2024-04-16 05:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found