11 Replies Latest reply on Mar 28, 2012 11:06 AM by tbcomputerguy

    two or more jobs - 1 invoice

    tbcomputerguy

      is it possible to invoice from two or more joborders on invoice. My client would like the ability to pick line item form each job order and invoice them on one invoice. I was thinking along the line of have a scree to select the invoices to draw from, then produce a screen that shows the joborder lineitems. Showing the JO # and then they can select the lines they want.

       

      Sound about right.

        • 1. Re: two or more jobs - 1 invoice
          Vaughan

          You're the developer, build it however you want.

           

          Seems you might need to differentiate between "invoices" and "job work portions" or some such.

          • 2. Re: two or more jobs - 1 invoice
            tbcomputerguy

            I have a solution working for them that allows them to select only the items that need billing at that time from one job order.  They select them then via a script check to see if the item has been billed for already, if not carry on.  But they threw this at me the other day when they asked me to build in the ability to select from different job orders and various line items.  All under the same account of course.   That is why i asked the question.  What did you mean by differentiate between "invoices" and "job work portions?"

             

            Dave

            • 3. Re: two or more jobs - 1 invoice
              timwhisenant

              Hi Dave,

               

              The only issue I can see by doing this is an accounting one. A layer of complexity is created when 1 invoice relates to more than one job. How deep or shallow the layer is depends on how much accounting is done at the job level. For instance, from the job point of view … what are the invoices for this job? Is this job totally billed out? Did we collect on this job? Can this job be closed as completed? In all these cases the correlation of job billing. Invoices and collections is diluted.  Bear in mind it is not my advice to not do this, rather an alert that special care may be needed to provide future system requirements, as they have a habit of changing over time. So don’t forget to make provisions in your tables for reporting on these transactions.

               

               

               

              Normally in job cost accounting it is best practice to bill for each job separately. The reason for this practice is preserving an easy to follow audit trail. Split transactions can and often do obscure audit trails.

               

               

               

               

               

              HTH

               

              Tim

              • 4. Re: two or more jobs - 1 invoice
                ouidamac

                I recommend that in addition to the JobOrder and JobOrderLineItems tables that you already have, you should create an Invoice and InvoiceLineItems tables as well. When it is time to invoice an account you can do as you suggested ~ "have a screen to select the invoices to draw from, then produce a screen that shows the joborder lineitems.  Showing the JO # and then they can select the lines they want." So when the user picks a 'joborder lineitem' from this screen, use their selection to create an InvoiceLineItem (you can even flag the JobOrderLineItems as having been selected or used in an invoice). Then you will be able to produce an Invoice for the account with individual InvoiceLineItems representing selected JobOrderLineItems across one or more JobOrders. Does this help?

                1 of 1 people found this helpful
                • 5. Re: two or more jobs - 1 invoice
                  tbcomputerguy

                  Tim you absolutely correct and I mentioned this to the client.  The business it TRuss developement.  At this place they have 4 types of job orders.  Roof, Floor, Wall, Stairs.  The program is currently working as is.  That is, there are 4 seperate job order #'s created 3000's, 6000's 15000, 25000.  What happens is, their client may require part of one or more of these jo's to be delivered asap.  Example the floor has to go befor the roof, but the wall or parts of the wall need to go with the floor, so they currently just write out an invoice ( the FM version not currently active) with the parts of the job that are being sent to the job.  I have the filemaker program allowing them to select only line items from one jo.  Which means they would have create 2 invoices for that particular situation.  As for the accounting, i am not sure if they track it by job or by invoice.  if I create an account table, then all the jobs or invoices or estimates can fall under that.  So they can track by account then.

                   

                  Make sense?

                   

                  Dave

                  • 6. Re: two or more jobs - 1 invoice
                    timwhisenant

                    Dave,

                     

                    The issue can be solved by a join table which links the Job# to the Invoice# so you could produce for example

                     

                                     Invoice # 11256

                     

                                                Job# xxBuilding                Floor                   $ 15,000.00

                     

                                                Job# xyBuilding                Roof                    $  9,575.00

                    • 7. Re: two or more jobs - 1 invoice
                      tbcomputerguy

                      I got it, but they only want to select certain lineitems from each jo.  So following your seggestion, those totals would be a sum of the lines they selected from eash jo?  Correct?  Then print the invoice as is referencing the Jo and type if need be.

                       

                      Dave

                      • 8. Re: two or more jobs - 1 invoice
                        timwhisenant

                        Yes, Dave that seems to be correct. The join table would hold references to the line items billed, so when reporting you would want to use sub-summary  parts to total the lines from a certain invoice by category/type.

                         

                         

                         

                        Tim

                        • 9. Re: two or more jobs - 1 invoice
                          tbcomputerguy

                          Well Tim, i shall give it a whirl.  Any problems, can i post back and give you the update.

                           

                          Ps any good solutions you've heard of for an advertising company?  besides JobPro

                          • 10. Re: two or more jobs - 1 invoice
                            timwhisenant

                            That would be just fine. Glad to help any way I can.

                             

                             

                             

                            Tim

                            • 11. Re: two or more jobs - 1 invoice
                              tbcomputerguy

                              hi ouidamac, i already had the invoices table along with the lines for it.  I am stuck in my script because i can't seem to get it not to select previously selected items as you mentioned.  How should I flag this?  The way i have it now is, when they select the jobs, it is supposed to look at the line items table for previously selected items and filter those items out.  But, when I select the lines to currently be invoiced, I get my warning telling the user that some Items have already been invoiced.  So looked and it is picking up all the items previously selected.

                              (you can even flag the JobOrderLineItems as having been selected or used in an invoice). Then you will be able to produce an Invoice for the account with individual InvoiceLineItems representing selected JobOrderLineItems across one or more JobOrders. Does this help?

                              Here is the script.  If you can please have a look, or anyone else out there.

                              Thanks, Dave

                               

                              #

                               

                              Allow User Abort[ Off ]

                              Set Error Capture[ On ]

                              Freeze Window

                              #

                              Go to Layout[ “Job Order Line Items - Maintenance Copy” (Job_Order_Lines_find) ]

                              Set Variable[ $incl_inv; Value:Job_Order_Lines_find::incl_invoice ]

                              Go to Record/Request/Page

                              [ First ]

                              Set Variable[ $ye; Value:"Yes" ]

                              Enter Find Mode[  ]

                              Set Field[ Job_Order_Lines_find::incl_invoice; $ye ]

                              Perform Find[  ]

                              If [ Get (FoundCount) = 0 ]

                              Exit Script[  ]

                              End If

                              Go to Record/Request/Page

                              [ First ]

                              #============================

                              //  Set Variable [ $jototal; Value:JobOrders::Order_Total ]

                              Set Variable[ $flag_line_items; Value:Job_Order_Lines_find::id_constant ]

                              //  Set Variable [ $inclinv; Value:"Y" ]

                              #

                              #1.Cust Info

                              Set Variable[ $c_id; Value:JobOrders 5::id_contact ]

                              //  #

                              Go to Layout[ “Job Order Line Items - Maintenance Copy” (Job_Order_Lines_find) ]

                              //  #

                              //  #Cust Info - Jobs

                              //  #--------------------------------------Transfer Line Items

                              If [ $flag_line_items = 1 ]

                              Loop

                              #--------------------------------------Set variables with line item info

                              Set Variable[ $lineid; Value:Job_Order_Lines_find::ID_LineItem ]

                              Set Variable[ $desc; Value:Job_Order_Lines_find::Description ]

                              Set Variable[ $quantity; Value:Job_Order_Lines_find::Quantity ]

                              Set Variable[ $price; Value:Job_Order_Lines_find::UnitPrice ]

                              Set Variable[ $jobo; Value:JobOrders 5::JobOrderNoCalc ]

                              #--------------------------------------Go to invoice line items window

                              Go to Layout[ “Invoice_LineItems_Maint MuJo” (Invoice_LineItems 2) ]

                              New Record/Request

                              Set Field[ Invoice_LineItems 2::Description; $desc ]

                              Set Field[ Invoice_LineItems 2::Quantity; $quantity ]

                              Set Field[ Invoice_LineItems 2::UnitPrice; $price ]

                              Set Field[ Invoice_LineItems 2::JobOrderNumberCalc; $jobo ]

                              #--------------------------------------If lineitem from Jobs exists, notify user

                              Set Error Capture[ On ]

                              Set Field[ Invoice_LineItems 2::joblineitem; $lineid ]

                              Commit Records/Requests

                              If [ Get (LastError)=504 ]

                              Show Custom Dialog[ Title: "Invoicing Error!"; Message: "An Invoice with some of the line items you selected have already bee

                              invoiced for. Please correct this and try to re-create the invoice"; Buttons: “OK” ]

                              If [ Get ( LastMessageChoice ) = "1" ]

                              Revert Record/Request

                              [ No dialog ]

                              Go to Layout[ “Multi JO Invoices - Invoice” (Multi_JO_Invoice) ]

                              Delete Record/Request

                              [ No dialog ]

                              Go to Layout[ “Navigation” (JobOrders) ]

                              Exit Script[  ]

                              Go to Layout[ original layout ]

                              End If

                              End If

                              Go to Layout[ “Job Order Line Items - Maintenance Copy” (Job_Order_Lines_find) ]

                              Go to Record/Request/Page

                              [ Next; Exit after last ]

                              End Loop

                              End If

                              Go to Layout[ “Multi JO Invoices - Invoice” (Multi_JO_Invoice) ]

                              New Record/Request

                              Set Field[ Multi_JO_Invoice::id_contact; $c_id ]

                              Set Field[ Multi_JO_Invoice::id_joborder; $id_jo ]

                              Set Variable[ $newinv; Value:Multi_JO_Invoice::ID_Invoice ]

                              Go to Layout[ “Invoice_LineItems_Maint” (Invoice_LineItems) ]

                              Enter Find Mode[ Specified Find Requests: Find Records; Criteria: Invoice_LineItems::id_invoice: “"="” ]

                              [ Restore ]

                              Perform Find[ Specified Find Requests: Find Records; Criteria: Invoice_LineItems::id_invoice: “=” ]

                              [ Restore ]

                              Replace Field Contents[ Invoice_LineItems::id_invoice; Replace with calculation: $newinv ]

                              [ No dialog ]

                              Commit Records/Requests

                              Go to Layout[ “Multi JO Invoices - Invoice” (Multi_JO_Invoice) ]

                              Set Field[ Multi_JO_Invoice::JobOrderNumberCalc; $jocalc ]

                              Enter Browse Mode

                              Adjust Window

                              [ Maximize ]

                              Set Zoom Level

                              [ 150% ]