Some notes from around the web that could be useful when using Roundup as a CRM.
See also: ConfidentialEmail
Basic database schema
The dev.to article by zahrion tech recommends:
contacts — every person you do business with:
id, full_name, phone, email, company, created_at
deals — one row per potential sale:
id, contact_id, title, value, stage (new / contacted / quoted / won / lost), created_at, updated_at
activities — every call, visit or follow-up:
id, deal_id, type, notes, happened_at, next_follow_up
products — what you sell:
id, name, price
deal_items — which products belong to which deal:
id, deal_id, product_id, quantityin semi-roundup schema.py (where we use the singular not plural) it looks like:
1 # creation (aka created_at) and id are automatically added
2 contact = Class(db, "contact",
3 full_name = String(),
4 phone = String(),
5 email = String(),
6 company = Link("company") # use a link to company to prevent typos
7 )
8
9 company = Class(db, "company", # basic dummy. Add additional fields as needed
10 # size=Integer(), revenue=Integer() etc.
11 name=String())
12
13 # creation/activity/id automatically added.
14 # because of rev_multilink in deal_item, this deal will automatically get
15 # an items property that links to all of the deal_item associated with
16 # this deal. If a deal_item is unlinked from the deal, it gets removed
17 # from the items property automatically.
18 deal = Class(db, "deal",
19 contact=Link('contact'),
20 title=String(),
21 value=Integer(), # Assume whole dollar(currency unit) values.
22 # Roundup doesn't have a Decimal type.
23 stage=Link("stage") # (new / contacted / quoted / won / lost)
24 )
25
26 # message (notes), id, and date stamp on message are part of IssueClass.
27 activity = IssueClass(db, "activity",
28 deal=Link("deal"),
29 type=Link("type"), # values: call, visit, followup
30 follow_up=Date())
31
32 product = Class(db, "product",
33 name=String(),
34 price=Integer() # see above for value
35 )
36
37 deal_item = Class(db, "deal_item",
38 deal=Link("deal", rev_multilink="items"),
39 product=Link("product"),
40 quantity=Integer())
41
42 # you need to add constrained properties for "type" and "stage" and "company"