Todo
-
Add Resources
- Terms
- Templates
- Companies - belongs_to Contacts
- Revenues
- Expenses
-
Add validation options for form fields
-
Add calculations to quote page / customer facing page
-
Generate emails when receiving request (to admin) and saving quote (to requestor)
-
Edit Resources
- Add analytics JSON field to Requests Resource
- Add analytics JSON field to Quotes Resource
-
Spend entire day fleshing out specs for payment features and other minor details
Things to think about
- Currency conversions and selections for settings
Complete
- Generate callback to send alert to referrer
- Add minor styling additions
- Add analytics fields to form
- Add file upload field
- Add product resource to either correspond to existing store or option to add new products
Completed 1/29/15
added serverside validations
Completed 8/7/14
built contacts from form submission if email doesn't already exist
added clientside validations
Completed 8/6/14
created js parser to grab form from this app and generate form on shopify
Completed 8/5/14
created shopify form to be sent to this app
Completed 8/4/14
created scriptag for shopify to grab contents of quoteable item based on product tag
Completed 7/18/14
added styling to form/show and contact/new
Completed 6/12/14
added portion of contact fields to form resource
Completed 6/11/14
add contacts resource
restyled requests index page
Completed 6/10/14
add styling to requests show page
add styling to quotes index page
add styling to quotes show page
Completed 6/5/14
change all forms page to a list rather than blocks
replace terms with options
add styling to requests index page
Completed 5/29/14
add remove field to add_term section
confirm that quote form page is working properly
Completed 5/27/14
style requests page
style quotations page and add unique token
Completed 5/26/14
fix Json update field to remove fields
Completed 5/23/14
style rest of form add_fields
Completed 5/22/14
add styling to remove add fields and options
fix jquery to remove delay of remove fields to fade out
fix checkbox storage of required field
General Specs
- Multi-User Data Separated Service
(less users, more data/user)
- Subdomains are created by shopify subdomains unless subdomain already exists. If ∃ subdomain ∧ ¬(login ∨ email) → generate account Shopify domain + account id else login
- User can create account without Shopify account. Account is validated against existing accounts before creation
Steps
After Login
- Redirect to Admin
- Admin consists of menu with tabs for each oauth login (i.e. Shopify, WooCommerce, Opencart) with corresponding path. Main functional tabs will be forms & responses
- Create resource for each menu item
- User is restricted to account creation type (Shopify, WooCommerce, Opencart)
Forms
- Default form exists that collects email (created on account creation)
- User can edit form to change name + add fields
- Form validation must include one email address field
- Add response email to main form next to name
- All additional built fields to be stored in JSON
- If user account tied to ecommerce add option to formbuilder for products (hidden from JSON call)
- Content and settings of form generates a script that is either injected into host ∨ pulled from subdomain of user account
*** Continue Form Spec in Separate Section ***
Responses
- Responses are posted to the response path_new and includes form_id and JSON field for repsonses (Rails 4 private params to be generated by contents of related form)
- Fields will be filterable by keys defined by form (label)
- link_to Quote generator will allow user to create a proposal/quote
Quotation
has_many templates
belongs_to response
#or
belongs_to form through response
- Pulls RFQ details from response
- User selects new template or existing template
- If user selects new template, user is redirected to template resource
Template (liquid?)
- User can design elements through drag & drop interface
- Items include logo, header info like business details (i.e. address, phone)
- User can choose from pre-existing catalog
*** Purchasable Templates ***
Process
- When quotation is generated, a price and deadline is required
- The user/admin will be given a choice of payment options with a fee attached to each (i.e. Stripe 3%, Bitcoin 1%, Transfer 0%)
- Once completed, an email will be sent to the requestor with a link to the quote page
- The quote page will only be accessible to the user/admin and anyone with a link (contains unique token for access)
- The quote page will be tracked for views & length of view
- The quote page will expire based on deadline defined by user/admin
- The requestor will be given the option to make a payment within that window
- The requestor can either create an account or make a payment as a guest with the difference of saving payment info for future payments being made
- If payment required is recurring, account creation will be required
Form Edits
- Warning not to delete form fields or create new form
- Add id to fields and use id in index search
Quote Fields
- Price (multiple), has_many
line item pricing will be multiple while main (base) price is embedded
- Terms (multiple), has_many
- Expiration (single)
- Token
Formbuilder
- Main Form
- Check option for Single or Double Columns
- Single column use bootstrap class form-horizontal
- Double column use bootstrap class form-inline each(2)
- Individual Fields
- Inline option for radio and checkboxes
- Multiple select for select field
Versions
- 1.0.0: Form builder, request, quote, template, role for user.
- 1.1.0: Notification system, dashboard widgets, improve performance