phpgroupware-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-developers] Re: Expanding timetrack


From: C K Wu
Subject: [Phpgroupware-developers] Re: Expanding timetrack
Date: Tue, 20 Aug 2002 22:48:08 +0800

Hello, Brian,

What follows may sound a bit discouraging.

The difficulty in standardising on contact, project, task and employee tables 
is not
a technical one but rather a political consideration.  As Ralf Becker mentioned,
whatever method or mechanism is adopted, it requires the support and agreement
from maintainers of all the modules concerned.  And indeed I would stick to my
original design in separating the vendor and customer table, because, imho, 
that's
the basic requirement of an accounting system, lest the user of ck-ledger would 
be
criticised by the auditor for using a poorly designed system.  I would expect 
other
phpgw modules to carry other but similar considrerations.  As I mentioned from
the very outset, one of the reason why I started the separate ck-ledger project 
was
to avoid such lengthy political deliberation and possibly bickering.

Overall, my suggestion is that you go ahead and implement methods and schemes 
that
best meet your requirements.  Then you could post your code as part of phpgw
or as other pluggin modules.  If other developers feel that your mechanism is 
desirable,
they will modify their modules to fit in.

With regard to management approval before posting a invoice and tracking the 
progress
of such approval, a workflow infrastructure, similar to biztalk is required.  
Afaik, this
is not
available within phpgw, or similar linux based groupware.  Since I am designing 
ck-ledger
for use by SMEs, I don't think such feature is a priority, unless xmlrpc can be 
expanded
to provide something similar to workflow management.

Since there is some interest expressed around this topic, I am sending a copy 
of this
email to address@hidden and address@hidden

PS - If other developers are interested in feeding invoice data into ck-ledger 
to generate
        customer invoices, a rather crude approach is illustrated in the second 
last email
listed below.

Cheers,
CK



Brian Johnson wrote:

> In order for this to really work, we need a standardized contact module so 
> that the
>  company id can be passed through correctly.  Please let me know as soon as 
> you
> decide on how this should be done.  As discussed previously, I think external
> functionality would be best if the vendors and customers tables were one, but
> standardizing on a contact module for the customers would at least be a start.
>
> I guess we also need to standardize on project list and task list tables and 
> fields
> in order to create invoices from the time info.  Will we also need a 
> standardized
> emploee list? Is there anything I can do to help with these?
>
> You mentioned incorporating some of the timetrack features into a payroll 
> module -
> keep in mind which users should have access to either - it might be most 
> appropriate
> to have the payroll module separate from the time entry system
>
> I have modified Timetrack to allow project managers to assign a billout rate 
> for
> each employee and a billout multiplier for each task (to allow for expanded
> functionality - like overtime at twice normal rate for example).  Also, a 
> dollar
> value quote can be entered into the project description and the jobstatus 
> page can
> show the current charges against a project (updated after each time record 
> entry)
> compared to the quote so project managers can quickly see project finances.
>
> We also need a method to track employee disbursements and their repayment to 
> the
> employee - of course in my world, it all needs to be assigned to projects.  
> Is there
> something I can do to help for this?  I suppose it should be part of the time 
> entry
> system for user friendlyness.
>
> Our priority right now is to get a method for invoicing for time records so 
> anything
> I can do to help get this done as soon as possible is a priority for me. One 
> thought
> - currently there is a field to track if the record is to be billable or not 
> ('Y' or
> 'N' char field) - we could also use that to track if a record has been posted 
> (set
> billable to 'P') to an invoice
>
> For our purposes, we need a system to create a draft invoice from the time 
> entries,
> allow it to be edited, printed, saved, reviewed by a project manager 
> (sometimes the
> empoyees time descriptions aren't adequatley worded to send to the client or 
> we want
> to combine entries and summarize somewhat), allow it to be loaded again, 
> edited, and
> finally, actually posted to the accounting system (the time records would 
> have to be
> marked to track where in the process they are in case a draft invoice is 
> somehow
> lost in the system - we would want the time records to again be marked 
> billable).
>
> Brian Johnson (address@hidden) wrote*:
> >
> >I'll give that a try
> >
> >I'm currently tweaking timetrack to suit our purposes and make it a little 
> >more user
> >friendly
> >
> >Did you read the emails from this morning from phpgroupware-developers 
> >regarding the
> >module record linking system.  Maybe we could use something like that for 
> >contacts,
> >ck-ledger, and timetrack
> >
> >Do you think you need to make a new module for entering time or just use 
> >timetrack
> >to feed info to other modules
> >
> >
> >
> >
> >C K Wu (address@hidden) wrote*:
> >>
> >>Hi, Brian,
> >>
> >>Sorry for the delay in replying your email.
> >>
> >>Directly feeding invoices into ck-ledger is perhaps not too good an idea, 
> >>since
> >>it would bypass the built-in validation check.  The better arrangement is to
> >>feed the invoice data through to /ck-ar/invoicewtadd.php (if tax is 
> >>involved)
> >>and invoke the script by opening a separate window.  User can then adjust 
> >>the
> >>various data (tax,discount, ledger account etc)..  If everything is OK, the 
> >>invoice
> >>can be posted
> >>normally as a new invoice.
> >>
> >>To check out the feasibility of the approach, I have done a bit of testing. 
> >> I have
> >>added
> >>a "Create Invoice" column to timetrack's Job Status List by adding,
> >>
> >>[Inside jobslist.tpl]
> >>
> >><th width="4%"><font......><</font></th>
> >>.....
> >><td width="4%"><font......><</font></th>
> >>
> >>
> >>[Inside jobslist.php, in between $t->set_var("row_delete","");    and
> >>$t->parse("rows","row",True); ]
> >>
> >>// -------------------------- Beginning of Added Code 
> >>------------------------
> >>
> >>        $t->set_var("lang_invoice", lang("Create Invoice"));
> >>        $invoicedata = array(   'customer'              => '10108' ,
> >>                                'transdate'             => '2001-11-01',
> >>                                'duedate'               => '2001-11-01',
> >>                                'invnumber'             => 'arinvwt3 
> >> duplicate' ,
> >>                                'ordnumber'             => 'sowt3' ,
> >>                                'taxstatus'             => 't' ,
> >>                                'itemid1'               => '10112' ,
> >>                                'description1'          => 'Consultancy' ,
> >>                                'qty1'                  => '2',
> >>                                'unit1'                 => 'day' ,
> >>                                'discount1'             => '' ,
> >>                                'sellprice1'            => '230',
> >>                                'itemid2'               => '10109' ,
> >>                                'description2'          => 'Testing Part 
> >> 123' ,
> >>                                'qty2'                  => '2',
> >>                                'unit2'                 => 'box' ,
> >>                                'discount2'             => '' ,
> >>                                'sellprice2'            => '100'
> >>                                                                            
> >>     ) ;
> >>
> >>        $getstring = "external=yes";
> >>        while (list($key,$value) = each($invoicedata)) {
> >>                $val = urlencode($value) ;
> >>                $getstring .= "&$key=$val" ;
> >>                }
> >>
> >>     $t->set_var("row_invoice", "<a href=\"" .
> >>$GLOBALS['phpgw']->link("/ck-ar/invoicewtadd.php",
> >>        "$getstring") . "\" target='_blank'>"
> >>        . lang("Create Invoice") . "</a>");
> >>
> >>// -----------------------------   End of Added Code
> >>------------------------------------
> >>
> >>
> >>and adjust invoicewtadd.php by adding,
> >>
> >>[Inside /ck-ar/invoicewtadd.php, just after  $_POST=$HTTP_POST_VARS ;
> >>$_GET=$HTTP_GET_VARS ; ]
> >>
> >>$external = ($_GET["external"] ? $_GET["external"] : $_POST["external"] ;
> >>if (isset($external))    $HTTP_POST_VARS = $_POST = $_GET ;
> >>
> >>
> >>When the user clicks on the "Create Invoice" link, invoicewtadd.php will be 
> >>fired
> >>with
> >>embedded data for a duplicate of invoice# [arinvwt3], one of the five test 
> >>invoices.
> >>After clicking on the [recal tax] buttons and posting the invoice, the user 
> >>will have
> >>
> >>an exact duplicate of the [arinvwt3] test invoice.
> >>
> >>You could follow this sample and program the necessary getstring data into 
> >>the
> >>"Create Invoice" link,
> >>or follow your own design.  The array $invoicedata above should be 
> >>sufficient info on
> >>what data
> >>to be passed over to create an invoice.
> >>
> >>However, this is only a stop gap measure and there are a lot of drawbacks 
> >>about this
> >>approach.
> >>Ultimately, I'll try to incorporate timetrack functionalities into a payrol 
> >>module.
> >>
> >>
> >>Cheers,
> >>CK
> >>
> >>[PS - Modifications to invoicewtadd.php and invoicentadd.php will be 
> >>incorporated
> >>into
> >>        the next release of ck-ledger]
> >>
> >>
> >>
> >>Brian Johnson wrote:
> >>
> >>> I am currently expanding the feature set of the timetrack module to set 
> >>> billout
> >>> rates for employees to multiply by the time entries
> >>>
> >>> Is there a way I can feed a list of entries to ck-ledger to create an 
> >>> invoice?
> >>>
> >>> How much of the information has to match up?  (ie contacts, tasks, 
> >>> anything else)
> >>>
> >>> Do you have any suggestions on how this SHOULD be done? (even if it isn't 
> >>> the
> >>> easiest way)
> >>
> >
> >
> >





reply via email to

[Prev in Thread] Current Thread [Next in Thread]