|
Go
![]() |
New
![]() |
Find
![]() |
Notify
![]() |
Tools
![]() |
Reply
![]() |
|
|
Apprentice |
A client failed to pay on a previous bill. Now I would like to send him a bill that includes this month's work, and also carries forward the outstanding balance. Is there a way to get the outstanding balance and the slip for current work on a single bill?
|
||
|
|
Apprentice |
Hey MarketCircle!
This BASIC question has been asked ad nauseum on this forum. You guys acknowledge the issue is important, you promised LONG ago that it's on your radar, and still nothing gets done. When are you going to program Billings invoices to automatically carry forward outstanding balances??!! Please -- I don't want to get another product, but I will if this BASIC billing issue isn't addressed very soon. |
|||
|
|
Journeyman |
Haven't looked at this, but it should be possible to take elements from the Unpaid Invoices report and insert them as a strip on your invoice template, with your "total outstanding balance" showing.
Or else just send the "Unpaid Invoices" report along with your invoice as a credit memo. To me that would make more sense: why confuse the balance of two separate invoices on one document? |
|||
|
|
Apprentice |
I looked into this, but it seems like the only way to print out a single client's unpaid invoices (assuming you have multiple clients) is to edit the script in the Report Editor. Here's what I did:
1) Create a new report (Design -> New Report). 2) Name it for your specific client (for example "Unpaid - MyClient Inc.") and leave the top popup menu reading "Clients". Go to the next screen. 3) Pick the "Use an existing..." option at the top, and select "Unpaid Invoices" as the layout to use. Go through the next screens until you're at the report layout window. 4) Click on the "Client Name" text area in the layout. 5) At the bottom of the window will be the object "path", starting with "REReport" and ending with "TEClientName" (which should be highlighted). Click on "TAClients". 6) On the right side at the bottom of the inspector is an area called "Data". If it's not already toggled open, do so. You'll see one item in the list: "Script Client". Double-click that to open it. 7) The sheet that pops down has two tabs: F-Script and Resulting Fields. 8) On the F-Script tab, scroll down in the code and replace this chunk: ( anInvoice balance intValue ~= 0 ) ifTrue: [ "sys log:aClient firstName." "sys log:aProject name." unpaidClients addObject:aClient. ]. with this chunk (substituting your client's name for "MyClient Inc.": ( anInvoice balance intValue ~= 0 ) ifTrue: [ ( aClient company = 'MyClient Inc.' ) ifTrue: [ "sys log:aClient firstName." "sys log:aProject name." unpaidClients addObject:aClient. ] ]. 9) Click OK to get back to the main layout window and click "Preview" in the toolbar. If the client you identified has any outstanding invoices, they will be listed in the preview, and no other clients' invoices will be listed. 10) Close and save your layout. Of course you can make other changes, but this should get you started. Unfortunately you have to make one for each client, but they will all show up in the Reports window when you choose File -> Reports... so you can quickly see which one(s) you need to print. I agree this is really something critical that Marketcircle should put into Billings, especially since there's almost no examples of making Billings-specific reports in the available developer downloads. Anyway, hope this helps. Ken |
|||
|
|
Apprentice |
Actually, I found a way to be able to make a single report where you can specify the client so you don't have to make multiple individual reports for each client.
Here's how you do it (ignore my previous post and use this one): 1) Create a new report (Design -> New Report). 2) Name it something like "Unpaid Invoices By Client" and leave the top popup menu reading "Clients". Go to the next screen. 3) Pick the "Use an existing..." option at the top, and select "Unpaid Invoices" as the layout to use. Go through the next screens until you're at the report layout window. 4) At the bottom of the window will be the object "path", starting with "REReport" and ending with "TEClientName" (which should be highlighted). Click on "REReport". 5) 4) Click on the "Client Name" text area in the layout. 5) At the bottom of the window will be the object "path", starting with "REReport" and ending with "TEClientName" (which should be highlighted). Click on "TAClients". 6) On the right side near the bottom of the inspector is an area called "User Input". If it's not already toggled open, do so. 7) Click the plus button, and choose "Popup Menu". In the resulting sheet, set the window to have the following settings: Mandatory = checked Label = "Client:" Key = "client" Kind = "Objects" Menu Title Key = "name" Value Key = "self" Script =
clients := objectContext objectsForEntityNamed:'Client'.
"sort by name"
sort := (((NSSortDescriptor alloc) initWithKey:'name' ascending:true) autorelease).
sortings := {sort}.
sorted := clients sortedArrayUsingDescriptors:sortings.
sorted
Click the Close button. 8) Click on the "Client Name" text area in the layout. This will change the path at the bottom of the layout window with "TEClientName" highlighted. Click on "TAClients". 9) On the right side at the bottom of the inspector is an area called "Data". If it's not already toggled open, do so. You'll see one item in the list: "Script Client". Double-click that to open it. 10) The sheet that pops down has two tabs: F-Script and Resulting Fields. 11) On the F-Script tab, replace the existing code with this: clients := objectContext objectsForEntityNamed:'Client'. clientsEnum := clients objectEnumerator. aClient := clientsEnum nextObject. unpaidClients := NSMutableSet set. userClient := element valueForKeyPath:'userInput.client'. [ aClient ~= nil ] whileTrue: [ projects := aClient projects. projectsEnum := projects objectEnumerator. aProject := projectsEnum nextObject. [ aProject ~= nil ] whileTrue: [ invoices := aProject invoices. invoicesEnum := invoices objectEnumerator. anInvoice := invoicesEnum nextObject. [ anInvoice ~= nil ] whileTrue: [ ( anInvoice balance intValue ~= 0 ) ifTrue: [ ( aClient derivedName = userClient derivedName) ifTrue: [ "sys log:aClient firstName." "sys log:aProject name." unpaidClients addObject:aClient. ] ]. anInvoice := invoicesEnum nextObject. ]. aProject := projectsEnum nextObject. ]. aClient := clientsEnum nextObject. ]. unpaidClients allObjects. 12) Click OK to get back to the main layout window. You won't be able to Preview it with the Preview button because it requires input. So close and save your layout. 13) Select File -> Reports... and then pick your report from the list on the left side. You should be presented with a popup menu on the right side that lists all your clients. 14) Select a client and click "Run". If the client you identified has any outstanding invoices, they will be listed, otherwise it will say "No Data" in the report. Hope this helps, Ken |
|||
|
|
Apprentice |
I'm new to Macs and Billings. But before I spend a large amount of time on the learning curve, I need to understand this issue.
I run a solo law practice and it is very common that clients carry balances over from month to month. Therefore I often issue "statements" rather than straight invoices. A statement shows a current balance but may or may not require payment. AM I correct in understanding that there is no way to carry a balance forward without redesigning the invoice form? |
|||
|
|
Apprentice |
Unfortunately that is correct (AFAIK). The main issue is that the set of invoices that ship with Billings do not have any place for carry over balances. So the only things you can do at the moment is either to create a custom invoice, or to create a dummy payment and dummy work slip so you are effectively adding the balance to a new invoice.
Ken |
|||
|
|
Journeyman |
Awesome Ken, thanks very much for that. There are a few errors in your steps, to clarify:
You have to click on REReport (the first item in the object path at the bottom of the screen) first before you can see the User Input section in the inspector. |
|||
|
|
Apprentice |
Thanks, Andrew... you're of course right - REReport is the item to select (must have been a copy/paste error or just "brainlock"). :-) |
|||
|
|
Apprentice |
I don't know if this is the same in every country - but one word of caution (picking up Andrew Vit's point)...
From an accounting perspective it would not be permissible to include an O/S balance in an Invoice - you could add the value as a memo line in a footnote only - anything else would be double-accounting. A proper Statement (as described above) is the only correct way to do this... |
|||
|
|
Apprentice |
That's good to know, Mark, thanks! I've seen a kind of 30/60/90 day grid at the bottom left corner or across the bottom of invoices... is that something that's permissible according to accounting standards? Or would this have to go on a separate statement? I also have another question related to this - if a balance is being carried over intentionally, would that be done as a separate invoice and statement? For example, suppose one is allowed to invoice up to $2000 per month for the first 3 months, and then anything that is done above that is held for payment until the three month period is over, at which point one can bill for all the extra accrued time during that "probation period". When invoices were sent each month for the first three months, would there be just an invoice for the $2000, and a statement for the accruing balance until finally an invoice for the accrued balance can be submitted after three months? Or is there some other/more appropriate way? Just curious... |
|||
|
|
Journeyman |
Many thanks for this excellent report .
Just what I needed. |
|||
|
|
Apprentice |
Ken,
Yup - the 30/60/90 bit is a normal account ageing grid. I'd check with your accountant - this would normally be on the statement, but I don't see any reason why you couldn't put it on an invoice. As for the other question - I'd also check with the accountant - but if it were me, I would always invoice for the full amount, because that is what I am due! If you want to be clear you can then refer to the $2000 bit in the invoice payment terms. The $2000 deposits are normally treated as "stage payments" or "down payments" - either way, the statement will always make you & your customer clear about where they stand... they can't turn around at the end & try to claim that the final bill is more than they expected... |
|||
|
|
Apprentice |
Thanks, Mark!
|
|||
|
|
Apprentice |
Is it possible to change the code above (which works great) to list all projects, complete or in progress, for a client?
|
|||
|
| Previous Topic | Next Topic | powered by eve community | Page 1 2 |
| Please Wait. Your request is being processed... |
|

