360 Connect Solo === [TOC] User story --- ```gherkin= Feature: Guess the word # The first example has two steps Scenario: Maker starts a game When the Maker starts a game Then the Maker waits for a Breaker to join # The second example has three steps Scenario: Breaker joins a game Given the Maker has started a game with the word "silky" When the Breaker joins the Maker's game Then the Breaker must guess a word with 5 characters ``` > I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it. [name=Bill Gates] ```gherkin= Feature: Shopping Cart As a Shopper I want to put items in my shopping cart Because I want to manage items before I check out Scenario: User adds item to cart Given I'm a logged-in User When I go to the Item page And I click "Add item to cart" Then the quantity of items in my cart should go up And my subtotal should increment And the warehouse inventory should decrement ``` > Read more about Gherkin here: https://docs.cucumber.io/gherkin/reference/ User flows --- ```sequence Alice->Bob: Hello Bob, how are you? Note right of Bob: Bob thinks Bob-->Alice: I am good thanks! Note left of Alice: Alice responds Alice->Bob: Where have you been? ``` > Read more about sequence-diagrams here: http://bramp.github.io/js-sequence-diagrams/ --- Project Timeline --- ```mermaid gantt title A Gantt Diagram section Section A task :a1, 2014-01-01, 30d Another task :after a1 , 20d section Another Task in sec :2014-01-12 , 12d anther task : 24d ``` > Read more about mermaid here: http://mermaid-js.github.io/mermaid/ ---- Assets === ### [XD Mobile Design](https://xd.adobe.com/view/0813ced4-27cb-46dc-a521-e876c6d61cb1-5d40/screen/f67dec6f-6ab0-400d-b6a0-cf85dd440dd5) ### [XD Web Design](https://xd.adobe.com/view/aa9b3a5c-c40a-467d-bf27-f1435dcf2d8d-ffc8/) ### [Web Site Link](https://360connect.app/solo) ***Test Details*** ### [Mobile App (Apk)](https://) --- Web Features === Services (add, Edit, delet) --- In this section we need to be able add, view, and delete services. However, you can’t delete a service is it in use, you can just deactivate it. Service unique time is default no. but if selected YES it will then ask question two. But disable service time. - Does the service require a unique time? Yes/No - Can take multiple days (asked if they select yes) YES/NO option - Service code - Service Name - Service Description - Service Price - Service Time - Category (Multiple selection) **EX:** `Electrical, Gas, Plumming, ECIR` - Service Badge ( Multiple selection) - Form Required (Multiple selection) - Tax Rate (pulled from the settings, can only choice one) - Active Yes/NO When you add the service, it will be added to the list. Services can not be added from mobile as of yet, just viewed. - **[Design Task](https://github.com/360Connect/apps-documenation/issues/1)** - **[Web Task](https://github.com/360Connect/apps-documenation/issues/2)** Customer-web --- Here we can add customers from the web and view customers. On the view customers we can see all the releated works and sites as well as contacts. On the contacts you will need to select site, and this is the contact for the site. So this could be a tentant, so the contractors knows who to call. - **[Design Task](https://github.com/360Connect/apps-documenation/issues/5)** - **[Web Task](https://github.com/360Connect/apps-documenation/issues/6)** Invoice (PDF) --- The invoice should be simple, not a lot of colours and print friendly. On the invoice it should have three details At the top of the invoice - Invoice number - Invoice Date - Due Date - Payment Terms The invoice should have the client logo on as well. Contractors details but titled Invoice From: - Company name/trading name - Address - City/State - Post/Zipcode - Phone Number - Email Next box is the Bill To , this is the customers details - Company/Client Name - Address - City/State - Postcode/Zipcode - Account Number Then the next box should be Work Carried At The Following: - Site Name - Address - City/State - Post/Zipcode - Site Contact (name) - Site Contact Phone Number Then under this, should be the following - Service Code - Service Name - Qty - Price - VAT Code - VAT Total - Total Each line will have the service. But on the next page it should have the following - Service code - Service Name - Service Description - Form (which form was filled out and if none it - should say N/A At the bottom of the first page, it need to have the - following - Sub Total - Discount - VAT Total - Total In the footer it needs the company details of the contractor which will be collected from the preference screen - Registered Address - Registered Number - VAT/TAX Number -- - **[Design Task](https://github.com/360Connect/apps-documenation/issues/10)** - **[Web Task](https://github.com/360Connect/apps-documenation/issues/11)** Quotes --- The contract can send the quote from the web. On the main screen of the quotes It will have the following at the top - Pending (how many quotes are waiting to be sending) - Waiting For customers (quotes waiting to get accepted or rejected) - Reject Quotes (how many quotes got rejected) - Won Quotes (how many quotes got accepted) Under this, New Quote Search ( be able to search the quote) Table - Quote Number - Quote Date - Client - Site Name - Amount - Status **Ex:**`Pending, Waitng, Rejected, Won`. **The next feature it's for web and mobile.** When you click on the quote number, it will open that quote screen. When adding a quote. We need a quote number made, and the status. So when the customer wants to make a new quote they can do it mobile or in web the same way. First they must select a customer. In this screen they can add a customer if they have not got the customer and they will need to pick the site. Once they done this they can then add the services and materials for the quote. As well as this, they can add a big list of comments, which should include bullet points if needed. Once they have filled this in, they will press send to customer. If there is no email it will ask for the email. It will send the email (New Quote) Once the quote has been accepted, it will turn it into a won quote and make a job card copying all the details. And it will let the customer choice the time slot but this depending on the settings. - **[Design Task](https://github.com/360Connect/apps-documenation/issues/26)** - **[Web Task](https://github.com/360Connect/apps-documenation/issues/27)** --- Accepting/Rejecting Quotes - customers --- So when they click on accept the quote email button, must go to a **unique web address** which will have just the customer quote on. ex:`quote link from dashboard` In the link we redirect the user to, we will have the add the following At the top - Quote Price - Accept Quote - Decline Under this will be the pdf for the quote. If they accept the quote. They must then pay for the quote in full or however the contract has set it up. Once they have paid, they must choice a time they would like it done based on the contractor’s time. However IT MUST READ THE SETTINGS If the contractor lets the customer to choice the time, it will allow them to book the slot. Once they booked the slot, it will finish it and close the browser. On the contract app, it will turn that quote into WON and then make a job. On the job it wil ref the quote. If they reject the quote. They can add comments why they reject the quote. The rejection will go back to the contract with the notification and change the quote to Rejected!. It will allow them to see why it got rejected. And the contractor can make the changes and resend the quote. **not completed** - **[Design Task](https://github.com/360Connect/apps-documenation/issues/22)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/23)** Quote Settings (pref screen) --- After the customer accepts the quote`That we sent in email` they can book it them selfs or I will choice the time. Choice time myself. Left customer choice the time. - **[Design Task](https://github.com/360Connect/apps-documenation/issues/26)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/27)** Quote PDF --- This is the PDF that will be sent to all clients. - QUOTE (heading) - Quote Number - Quote Date - Expiring Date Under this - Client Details - Site details. Under this, should be the table - SKU - Service/Material Name - Qty - Price - Tax Rate - Tax Amount - Total Under this, it will then display the job description and this what has been written when making the quote. At the bottom should the totals - Hours (how many hours all together) - Sub Total - TAX Amount - Total --- Reports --- When you click on report you will have an overview of the business. - **[Design Task](https://github.com/360Connect/apps-documenation/issues/42)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/43)** --- Mobile Features === Booking A Job (add) --- When the contractor wants to book a job, they will need to do it from the mobile, they can only does this from the mobile and not book a job from the website. When booking a job, first it will ask them for the customer’s name (can be search customer name, company name, email address account number). If there is no customer, it will allow them to add a customer on the job card. Then they have to choice a site, so when you select the customer it will then ask for the site. Once they choice the site they can go to the next option. Only they can do this once a customer is selected and site. Now this is where they will choice a service. They will choice the service from List, they can search for the service and then select it or select multiple. If they select a service that requires a unique time, then it will ask the time needed for the job and and then ask how many days they want to do this over. Once they have done this it will display the price as the bottom Sub Total Discount VAT Total On the discount they can edit the % of discount they wish to give. Which will then adjust the vat and total. Once they have done this, they can press next to schedule. On this if the service time is set time, then it will recommend the best days for that contractor to book. However, if they selected unique time and can do over multiple days. They then go though each day they want to book and then enter the amount of time they which to spend on the day and keep doing this until the total time calculated is the final number. Once the job is confirmed, they will press confirm and it will send the invoice and email to the customer. At this time, it will generate a link for the customer to pay via card using stripe but the contractor stripe connect account. Once the customer has paid it will also give the contractor a notification. If the customer is on credit it will be added to there credit and in the web version, they can track this. If a customer has been selected at the start, it will check the credit terms as well and if its overdue any invoices it will give them a warning “Customer has overdue invoices/credit limited. Would you still like to go ahead” YES OR NO button. If they press No it will cancel the job if they press YES it will go ahead. Customer has overdue invoices/credit limited. Would you still like to go ahead” YES OR NO button. If they press No it will cancel the job if they press YES it will go ahead. <!-- When booking a job, it should ask them for notes, so it will display a note box and a tick box saying “Display notes on Invoice/Quote” if tick it will display the notes on the quote or invoice. If not it will just be for internal use. --> - **[Design Task](https://github.com/360Connect/apps-documenation/issues/3)** - **[Mobile Task](https://github.com/360Connect/apps-documenation/issues/4)** Customer-mobile --- Here we can add customers from the mobile app and view customers. On the view customers we can see all customers. - **[Design Task](https://github.com/360Connect/apps-documenation/issues/5)** - **[Mobile Task](https://github.com/360Connect/apps-documenation/issues/7)** Job Card --- After Engineer press the job card service they will navigatie to job screen with all job details and can change job status as there progress. Site Status: - Todo - On Route - In Progress - Completed Service Status: - Todo - In Progress - Completed or faild Job Flow 1- When the engineer press the job card will navigate to the job card details and for the first time the main status for site will be todo. 2- The screen will contain customer details, site details, site services and two button one to call site's owner and call navigate to job. 3- when press call owner you will do call. 4- when press navigate you will navigate the engineer to map used in mobile and the status for site will change to be `On Route`. 5- after back to the app the engineer can start the job using button call statrt service and can select which service want start or can do it when press the service and press start service. 6- after start service the status for site will change to be `In Progress` and service status will change to be `In Progress`. 7- after complete the service you can press the service and make it complete or faild. 8- if the service have form as engineer you have to complete the form befor complete the job. If job card contain multi services, and status for both changed to completed then Site status will change automaticly to be Completed. - **[Design Task](https://github.com/360Connect/apps-documenation/issues/8)** - **[Mobile Task](https://github.com/360Connect/apps-documenation/issues/9)** --- Emails (For Markiting) === Welcome email --- **This email goes to all the people signing up.** Dear (customer name) Great to have you on board. We hope you enjoy and we are here to help you build your business with Solo. Solo was made to support contractors and take out a lot of the stress of the admin and let them concentrate on running their business. if you need any support feel free to reach our to our customer support page or click here to watch some welcome videos. Kind Regards Nicholas Myers CEO of 360 Connect Inc - **[Design Task](https://github.com/360Connect/apps-documenation/issues/12)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/13)** Upgrade your account --- **This email goes out once they are close to using the number of jobs on the free package.** Dear (customer) Great to see that you have been using our app to drive your business forwards, unforantly you will need to upgrade your account as you are on the Free version and won’t be able to book any more jobs soon. Upgrade your account today and get an extra 15 days free and there after just $12.99 a month. If you need nay support please reach out to our support team Kind Regards Nicholas Myers CEO Of 360 Connect Solo. - **[Design Task](https://github.com/360Connect/apps-documenation/issues/14)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/15)** Marketing Email --- **This email is to go to all contractors after 15 days signing up on the FREE package** **10 days after sign-up (Free Account)** Subject – Are You Ok? Hi (contractor name) My name is Nicholas, the CEO of 360 Connect. We see you have signed up to free package of Solo. We justed want to know if you have any feedback for us on our application. You can book a 15 min call with me so that we can understand your business or if you don’t have time we understand, you can click here to give your feedback. (button, Provide Feedback) For the time of your feedback, we will upgrade your account to the premium for free for 1 month, and after it will be $12.99 unless you cancel and it will just go back to the free account. - **[Design Task](https://github.com/360Connect/apps-documenation/issues/20)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/21)** Emails (From Contractor) === Emails must go with the contractors branding. But under all the emails we will have the 360 connect logo. CEO Of 360 Connect Solo. --- New Invoice / Payment Request --- **This email is from the contact side – so much have the contractor logo.** Subject – Here is Your Invoice From (company name) Dear( customer/company name) Please see attached your invoice for the following property - Site name - address - city - postcode Please pay your invoice here (click the linik) If any questions feel free to call me (contractor name and phone number) Kind Regards (contract name) - **[Design Task](https://github.com/360Connect/apps-documenation/issues/16)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/17)** New Quote --- **This email is from the contact side – so much have the contractor logo.** Subject – Here is Your Quote From (company name) Dear( customer/company name) Please see attach the quote for the following Property Site name, address,city, postcode If you would like to go ahead with this quote, please click Accept here or on the button below. [(Button – Accept Quote)](https://hackmd.io/xjee0miRQm66NumP-weLMw?view#AcceptingRejecting-Quotes---customers) Kind Regards (contract name) - **[Design Task](https://github.com/360Connect/apps-documenation/issues/18)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/19)** Job Booking --- **This email will go to every customer that has a job booking.** Subject – Your Booking Confirmation Dear (customer name) Thanks for making a booking with us. I will be attending your job on (date) at (time) The job will take (how many hours) over (days) If you wish to cancel please contact me on (phone number or email) Kind Regards (contractor name) If the job is not over days then it will not display this. - **[Design Task](https://github.com/360Connect/apps-documenation/issues/37)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/38)** Web & Mobile === Customer --- - **Add Customer** 1- **For web** you can press add customer form side bar menu after press customers => Add Customer, **For Mobile** you can add new Customer in new job => customer tab. 2- First Section for new customer will be about customer info and will contain following inputs - Account Number - Customer - Address 1 - Address 2 - Country - Postal code - City - Email - Phone number - Customer Details are same as the billing details? `Yes or No`. -- - **[Design Task](https://github.com/360Connect/apps-documenation/issues/5)** - **[Web Task](https://github.com/360Connect/apps-documenation/issues/6)** - **[Mobile Task](https://github.com/360Connect/apps-documenation/issues/7)** New Quote --- When adding a quote. We need a **quote number made**, and the **status**. So when the customer wants to make a new quote they can do it mobile or in web the same way. First they must select a customer. In this screen they can add a customer if they have not got the customer and they will need to pick the site. Once they done this they can then add the services and materials for the quote. As well as this, they can add a big list of comments, which should include bullet points if needed. Once they have filled this in, they will press send to customer. If there is no email it will ask for the email. It will send the email (New Quote) Once the quote has been accepted, it will turn it into a won quote and make a job card copying all the details. And it will let the customer choice the time slot but this depending on the settings. - **[Design Task](https://github.com/360Connect/apps-documenation/issues/39)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/40)** - **[Mobile Task](https://github.com/360Connect/apps-documenation/issues/41)** Invoicing --- - Mobile So when they go to the invoice section, it must give the contractor a quickover of their business. So there should be three easy clickable blocks Overdue Invoices (value) This one must be in red and first, so quick show the contractor how much is in total overdue for their business. When they click it will then give them a list of all the invoices overdue - Invoice Number - Due Amouunt - Due Date - How many due days - Customer Name, site When they click on the card, it will open the invoice card for this job. It will give them a more detail breakdown such as the property address, what services and works were carried out. At the bottom it will tell them the overall total overude on this customer account, and then a call or email button. If they press the call button, it will let them call the customer. If they press email button, it will automatically ssend an overdue invoice email (email section) The next block should be Open Open invoices are invoices which are not overdue They again can click on this and see a list of invoices It should also say if the invoice has been sent or not. And then the final box, should be All Invoices So the total will include all the open and overdue amount. When you click on this, you will see the full list of invoices outstanding or wating for payment. Each screen should have a search box so they can search the invoice with the following Invoice number, client name/company name, address - Web On the invoice screen we need to have the same thing as in the mobile. - Open Invoice - Overdue Invoices - Total Invoices Then under this we will have a search box where we can search for the invoice number, client name/company name. We must have a filter, in the filter we will have (Open, Overdue, Cancelled,Paid) - In the table - Invoice Number - Client Name - Site Name - Amount - Status - Invoice (this is a pdf icon where they can download the invoice. When they click on the invoice number it will open the invoice up. It will have the client registration address and the site details, the site contact details, the invoice number, invoice date, due date, if overdue how many days overdue and total amount. Under this will have a list of all the services for this invoice And the works that were carried out at the site. Under this we will have like what we have on the mobile, another table where we can add a row for payment. If payment has been made in full you won’t be able to do this. At the top, they can press a button to send to the customer to email them to make payment. - Payments If a customer wants to pay the invoice, they can go to the invoice they want to gewt paid, and then press send for payment. This will send the email for Request Payment Email which will have a unique link on which allows the customer to pay the invoice via card. Once the invoice has been paid, it will then be marked as paid, as well as it will enter the details on the details tab. - Details Tab Of Payment On each invoice, it will have a second tab called Payment. It will have the following - Status `Open, Due, Cancelled, Overdue,` - Due Amount Under this, they will have a list of the record of what they paid. - Account - Ref - Payment Amount. And they can keep adding until the payment has been made in full. So if the customer pays for stripe, it will automatically fill this information in. If they pay by bank or cash they can add it manually. -- - **[Design Task](https://github.com/360Connect/apps-documenation/issues/34)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/35)** - **[Mobile](https://github.com/360Connect/apps-documenation/issues/36)** Materials --- So, materials are not virtual like services, you will need to buy these. However when making a job it will be the same list. Add Service/Materials. - Web You can search for the product. So we need a search box. On this list we will show the following: - Item Number - Product Name - Price - Purchase Price - Tax Rate (dropdown) - Price Includes Taxes (yes, No) - Edit Button, - Remove Button When adding a produdct it should be a quick and easy thing. - Item Number - Product Name - Description - Price - Purchase Price - Tax Rate (dropdown) - Price Includes Taxes (yes, No) In the menu, we under Materials, it should have Materials Needed.This section is a report of all the materials needed for booked jobs. At the top, they can search for the product name, sku, job id. So when you click on it, it will give the following details - For Job Number - Item Name - Product Name - Price Then it will have a tick box once you have got it. When you tick it, it will show a box with the following question. Did you buy the product at the same price? It will display the price in the system. **YES NO option.** If they click No, it will ask for the price. It will not change the default price, it will just put the price of this in the job so that they know how much they paid for it. Once they tick it off, it will come of this list. - Mobile The same way it worked in the web they can do for the mobile including adding the material and the material list. -- - **[Design Task](https://github.com/360Connect/apps-documenation/issues/30)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/31)** - **[Mobile](https://github.com/360Connect/apps-documenation/issues/32)** Working Hours & Time Off --- In settings, we need a screen which can be edited on web and mobile. **Working Hours** screen will be like a **calender**. At the top of the screen we will have two buttons - first one named `Take time off` and after click this button It will show show pop up conatin this inputs - Time Off date ex: `15-05-2022` - From (time) ex: `08:00 AM` - To (time) ex: `05:00 PM` - To date ex: `19-05-2022` - Second one named `Edit working time` and after click this button It will show pop up conatin this inputs - From (Data Name) ex:`Sunday` - To (Date Name) ex:`Thursday` - From (Date hour) ex:`08:00 AM` - To (Date hours) ex:`02:00 PM` **For Mobile** On Home screen, when you press `+ button`, we should have a section for `Take a Break`, and it will show a pop-up. - Date from - Date to - Time from - Time to Once you press done button in `Take a Break` section, it will lock the schedule on these times or days. If there are already jobs on there, it should cancel the jobs and let the client no. Once you press submit on the time off, it will then show you a screen off all the jobs that will be cancelled, and you then confirm or not. Then if you don’t confirm and cancel it won’t block anything or cancel if you press submit, it will cancel all those jobs and give you a list of all the cancelled jobs like a job card, and you can call the client to let them know. Automatically the email will be sent anyway. -- - **[Design Task](https://github.com/360Connect/apps-documenation/issues/30)** - **[Web/Back-End Task](https://github.com/360Connect/apps-documenation/issues/31)** - **[Mobile](https://github.com/360Connect/apps-documenation/issues/32)** Plans & Subscriptions --- For our plans and subscriptions we will do it with stripe. 1- In first time user sign up we will add them account to free plan we have. 2- We have two casues to ask user upgrade the plan - If the user creates more than 5 jobs we will ask them to subscribe to the plans. - If the user subscription period has expired 3- after plan expired we will display pop up to ask the user to upgrad the plan and this pop up will contain `this pop up will design for mobile and web` - [title] Upgrad you plan - [body] To complete your actions in the system you have to upgrde your plan. - [footer] the footer will contain button call (Check our plans). 4- after press check our plans button we will redirect the user to plans screen thats contain`this screen will be for web and should be responsive for mobile` - [header] our logo - [title] Choose your plan. - [body] in the body we will add our plans as cards. - [footer] our footer data as dashboard 5- after press any plan card we will redirect them to the payment screen and will contain`this screen will be for web and should be responsive for mobile` - [header] Total amount - card number [input] - card holder name [input] - card cvv [input] - card expiry date [input] - card expiry year [input]