Gulfcoast Cloud Solutions

Contact Us About Follow Current Project Home
Image

Tincher Concrete Construction

Tincher Concrete Construction, Inc. is a family owned business, in operation since 1979. Their primary trade is slipform paving, but they aren't limited to just that. They also do sidewalks, floors, retaining wall systems, concrete repair and restoration, as well as pavers.

Tincher has been a client of ours for 22 years. When we first hooked up with them in 1992, they were using CYMA accounting software. They had 6-7 people punching on keyboards trying to collect and report on job cost information. This information was typically 7-10 days after the fact. Using BusinessWorks Accounting software, coupled with custom software written in Superbase, we cut that time down to realtime with one person.

My how times have changed, but one thing certainly has not. Personal service and dedication on our part keep Tincher Concrete in the family. Migrating to the cloud will be the 5th generation of software put in place during this 22 year relationship.

Date
Description
Links

2/18/2014

Today was the initial planning day with Austin. He is one of the 3rd generation sons now responsible for overseeing this project. In this meeting we discussed to overall workflow within the business, the project documentation plan and other technical details. We reviewed their commercial estimating program PlanSwift and reviewed and copied their estimating Excel spreadsheets.

2/18/2014

Setup project storage and scan initial documents. Documents are to be kept in a project binder and images of documents will be used in the project flowchart. The first pass of the flowchart is to be a modified version of a UML document altered to support the functionality of Rollbase.

2/19/2014 - 3/12/2014

This is the most important and time consuming portion of the project. During this period, we would meet with the client and review the current draft of the workflow document. Each week we would print out the updated document on a large-format printer and then review and continue to document on a rather large conference table. In all, there were 6 generations of this document. The final document is 19 feet long!

Image

3/13/2014

Continue working with Austin on the flowchart. Today we wrapped up the documentation of all daily activities, including outlining collections department tasks along with the related objects required. Finalize documenting all accounting tasks and objects.

3/14/2014

Now that the entire workflow is document, it is time to loop back to the beginning and flesh out all of the objects. In this pass it becomes apparent that some objects are unnecessary. While to final document will still be a work in progress, it's very close to completion.

3/18/2014

Finalize building out all objects in preparation for a final review. We are very close to actually writing software now!

3/20/2014

As our flow chart is now 19 feet long, printing it has become more difficult. Even though Corel Draw is an exceptional program, we cannot print from it directly to the large format HP printer. It's now a 2 step process in which we export the entire file to a PNG file and then convert the PNG file to a PDF. Adobe Acrobat then allows us to print to the plotter and specify the custom paper size.

3/21/2014

The final draft of the flow chart was printed successfully today and reviewed with management. It is now time to start building software in Rollbase. We will be building all objects and screens associated with opportunities and proposals. Once we get those done, we will spend some time in PlanSwift to prepare for integration between it and Rollbase.

Image Flowchart Rev. 6

3/24/2014

Before we start building objects, we want to create a System Tab within Rollbase. We will use this location later to store lesser used objects. Start building objects, starting with Company object. As Rollbase allows multiple applications to reside together, and oftentimes there can be conflicting names, we are going to establish a naming prefix (cc) for Concrete Contracting to all of our tables. Thus Company will be ccCompany. Also created the basic roles that will be in use in the system.

Image Creating the System Tab
Image Company Object

3/26/2014

Finish building the Company Object and updating all New/Edit/View screens.

3/27/2014

Build the Customer Object and document how to use shared picklists in Rollbase.

Image Customer Object

3/28/2014

Finished the New/View/Edit screens for Customers and introduced the HTML Component that can be used on screen designs to help better organize sections. This allowed us to overcome the issue with physical and billing addresses both having identical lables (address 1, city, ...)

Image Enhancing Stock UI

3/31/2014

Create contact object, including relationship to Customers. Edit the customer screens to reflect the new relationship. This section covers View screens getting the new relationship automatically, but also how to edit that list. Additionally, this section covers adding a Grid Control to the Edit screen so that we may add contacts from there as well. Also create Customer Contact Phone and learn new functionality of Record Name Template.

Image Contact Object
Image Contact Phone Object

4/1/2014

Start working on opportunity object. We will be exploring alternate row colors with this object to reflect the approaching due date of each item. Along this same thought process, we will also explore how to use icons to reflect priority. Additionally, we will be exploring both the Task and Workflow attributes for the first time. Additionally, we will be exploring document templates, as well as triggers with this first complex object. Now that we have migrated the Rollbase concept of "User" to our Project Manager, we will also want to clone the default view to filter it by Project Manager.

Image Opportunity Object
Image Workflow Overview
Image Cloning Views
Image Document Templates

4/2/2014

Build the Opportunity Document object and integrate it into the Opportunity New/Edit/View screens.

Image Opportunity Document Object

4/2/2014

Our first use for Javascript enhancements. While the red and yellow banding on the opportunity grids is useful, it is desireable to also have the days remaining until it is due. This is done with a formula field.

Image Using Javascript for Grids

4/2/2014

Before we can wrap up the last workflow for an opportunity (converting it into a proposal), we need to actually build the proposal proposal document objects, as they are the ones that will get populated.

Image Proposal Object

4/3/2014

Today we start building a trigger tied to a button to convert an opportunity into a proposal. Even though Rollbase has a concept of conversion maps that can be tied to a workflow action, our trigger is a bit more robust, as we need to move over all associated documents as well.

4/4/2014

Before we can continue working on the trigger from yesterday, we need to create the new Proposal Document object, as we'll be moving documents from the opportunity to the proposal. See the instructions for the Opportunity Document, as the table structure should be the same.

4/14/2014

Continue working on triggers to convert opportunities into proposals. This introduces another technique for debugging triggers using the "Test Query" button.

Image Testing Queries

4/15/2014

Did an about face today on the way in which to tackle the opportunity to proposal conversion. It turns out, even though the triggers all worked perfectly, it created the proposal, attached the documents and deleted the opportunity. Additionally, I consolidated opportunity and proposal documents into one project document object. No need to clone these, as they'll stay with the objects through the entire life cycle. It is anticipated that job documents will be the same. The bottom line on the challenge was that I couldn't properly navigate to the New Proposal screen once everything was created. By utilizing the Data Map option within Rollbase, combined with triggers on the Proposal Object, we are able to accomplish our goals.

Image Opportunity Data Map

4/15/2014

Create trigger in Proposal to grab the oppourtunity documents, and document how. Create the Proposal Task Object

Image Use Trigger to Attach Docs
Image Proposal Task Object

4/16/2014

Start the layout of the proposal new/edit/view screens. Discuss alternate customers and how that works with relationships. I also added the Workflow attribute to the proposal, as it will exhibit similar behaviors as the original opportunity.

Image Designing Proposal Screens

4/16/2014

Auto-create the default tasks when an opportunity gets converted into a proposal.

4/16/2014

Create Proposal Email Template and trigger to auto-send email when the opportunity gets converted to a proposal.

Image Automatic Emails

4/24/2014 - 4/25/2014

Implement common phrases for proposal notes. Explore using custom buttons and triggers to automatically insert phrase snippets into the notes.

Image Custom Buttons using CSS

5/1/2014

Demonstrate how to integrate data from an external application into Rollbase utilizing file upload fields, exported CSV data, and triggers.

Image Importing from PlanSwift

5/5/2014

Sending email templates to multiple customers using document templates and triggers. The document template discusses in depth how to loop through multiple related tables.

Image Email Templates Part 2

5/8/2014

The buttons we created on 4/24/2014 just weren't working in a consistent fashion. As such, we took a completely different approach by creating relationships to the desired phrases. This tutorial focuses on creating relationships with triggers.

Image Create Relationships with Trigger

5/18/2014

The rest of the custom buttons created in previous lessons are now gone. All functionality is now done through workflow automation. The attached document goes in depth on how to use this powerful Rollbase feature.

Image Workflow Automation

5/20/2014

Cloning the layout of a view form to the new and edit forms.

Image Cloning Pages

5/29/2014

How to get around the limitation that calculated fields cannot be used in a field mapping.

Image Map Calculated Field

6/4/2014

When you want to control whether a checkbox is checked or not purely in code, how do you accomplish this when Rollbase does not provide the functionality to make a checkbox read only?

Image Read Only Checkboxes

6/9/2014

Using Microsoft Excel for document templates is actually much easier than it is in Word. The layout is much easier to manage. The linked file is an example of how to use one with looped records.

Image Excel Document Template

6/9/2014

Started building the Timesheet object. Needed to create an Employee object, which was done via an Excel import from the legacy system. Still need to create the other supporting objects for timesheets; labor, miscellaneous, revenue, and concrete.

6/13/2014

Met with the stakeholders for a progress review. Project is looking good. Need to get the hosting solution for the private cloud nailed down soon.

6/17/2014

Client wanted total project days (days allowed) to be a calculated field, rather than a static field. Calculated fields are simple, and the formula is only two lines:
var daysAllowed = rbv_api.selectValue("SELECT sum(ccProposalLineItemsDays_allowed) as daysAllowed FROM ccProposal_line_item where R100808469 = ?", {!id});
return daysAllowed;
Unfortunately, you cannot reference calculated fields on a document template. As such, the spreadsheet from above has been modified slightly to account for this. Replacing a merge token with a sum function on a column.

Image Excel Document Template

6/17/2014

In the meeting with stakeholders, it was discovered that the code for updating the job's required paperwork did not take into account the possibility that a qualifying document was attached at the proposal level. Additionally, if a document gets deleted, it needs to update the check box appropriately. This simply required a trigger "Update Job from attached documents" to be fired on create and on update. The attached image shows a screen shot of the code.

Image Screen Shot

6/19/2014

During data entry of a new record, how to you get values from another record using client-side scripting?

Image AJAX Query API Calls

6/19/2014

Today I wrote trigger code for the Create Timesheet action on a job to count the number of sheets. If the count is 0, then we want to update a few fields on the job, mainly the Date Started and the Date Last Worked. Additionally, we fire a change workflow status to make the job active.

6/23/2014 - 6/24/2014

I am currently building out the job supervisor portal. Portals are a great way to expose only the basic functionality that you want to non-traditional Rollbase users. Portal users do not eat into your registered user count. Once I get the portal fully functional, I'll do a document on how to build portals. Created a login prompt to validate the supervisor, created a view for only their assigned timesheets, and then needed to create edit/view pages for all 4 categories; Labor, Revenue, Miscellaneous and Concrete.

6/25/2014

Now that we are doing the timesheets, which need to inherit the profit and overhead rates from the job, we needed to update the job on creation to grab the default rates from the company table. These rates can be overriden at the job level with the correct permissions. I just created a trigger to fire when the job gets created. See the attached image for the code and the explanation. Technically, we don't need the profit rate, but it is at least informational on how the pricing was arrived upon. We do need the overhead rate to go to the timesheet for expression fields, but not the profit, as that's simply a calculation at this point.

Image Trigger code
Image Timesheet trigger

6/26/2014

Things are starting to get fun, and usefull. One of the screens that I imagined for Tincher is a budget analysis screen. This is a tab that aggregates all items to be installed and is presented as a script component, so we can get a little fancier with the presentation. At this point, the screen is incomplete, as it will be expanded to include A/R and A/P billing analysis on a job by job basis.

Accomplishing this is pretty straight forward. It is simply a combination if calculation fields that sum up the individual items, and then a script element with the HTML formatting to control the presentation. We are basically summing up individual timesheet detail records based on their type. The sum calculation for costs is the most complex, so I have posted a link to that formula here. Once all of your formula fields are created, you simply put the merge tokens in the proper places in the script element.

I have almost wrapped up the job supervisor portal, but on of the exceptional features that we have just added, which lends itself to the mobile world very well, is photo and file upload fields. On our revenue, miscellaneous and concrete items, we want the supervisor to take photos of receipts, delivery tickets, and job site photos for the current product they are working on. While maintaining this from the portal, on a mobile device, when you click the button to select the file upload, the mobile device allows you to take a picture directly into the file upload field! Very cool. We use this vs. images, because I only want to see the link in a grid view, not the entire picture. See the attached screenshot for awesomness.

Image Budget Screenshot
Image Calculated Fields
Script Script Code
Script Accumulated Costs
Image iPod Portal screenshot
Image Grid with file upload
Image Gas receipt image

7/8/2014

For the last week or so I've been in the process of bringing up my own private cloud out of my office. I've installed the trial version (30 days) and was attempting to migrate my concrete application from my public cloud account with Progress to my private cloud. In doing so, I've encountered an error trying to export my application to an XML. I've seen this issue MANY times since I've been working with Rollbase and I finally figured out why it happens. Please review the attached document on how to overcome this issue. My own private cloud should be live in the next week. I can't wait!

Image Solving Application XML Creation issues.