Beispiel #1
0
 def fetch_by_object_id(cls, object_id, on_or_after=None, before=None):
     conditions = ['objectId={}'.format(object_id)]
     if on_or_after:
         conditions.append('dateStart>=[{}]'.format(on_or_after))
     if before: conditions.append('dateStart<[{}]'.format(before))
     return [
         cls(**schedule_entry)
         for schedule_entry in Connectwise.submit_request(
             'schedule/entries', conditions)
     ]
Beispiel #2
0
 def fetch_upcoming(cls, days=30):
     on_or_after = date.today().strftime('%Y-%m-%d')
     before = date.today() + timedelta(days=days)
     conditions = 'dateStart>=[{}] and dateStart<[{}]'.format(
         on_or_after, before)
     return [
         cls(**schedule_entry)
         for schedule_entry in Connectwise.submit_request(
             'schedule/entries', conditions)
     ]
Beispiel #3
0
 def get_charge_to_info(self,
                        tickets=[],
                        activities=[],
                        charge_codes=[],
                        return_type='string',
                        include_company=True,
                        include_project_name=True,
                        bold_first_item=False):
     """Optionally include a list of pre-fetched Tickets and/or Activities to prevent it from re-querying CW.
             return_type must be 'list' or 'string'"""
     return Connectwise.get_charge_to_info(self, tickets, activities,
                                           charge_codes, return_type,
                                           include_company,
                                           include_project_name,
                                           bold_first_item)
Beispiel #4
0
 def fetch_by_company_id(cls, company_id, on_or_after=None, before=None):
     conditions = []
     if on_or_after:
         conditions.append('dateStart>=[{}]'.format(on_or_after))
     if before:
         conditions.append('dateStart<[{}]'.format(before))
     conditions = ' and '.join(conditions)
     company_tickets = Ticket.fetch_by_company_id(company_id)
     company_activities = Activity.fetch_by_company_id(company_id)
     schedule_entries = [
         cls(**schedule_entry)
         for schedule_entry in Connectwise.submit_request(
             'schedule/entries', conditions)
     ]
     return [
         s for s in schedule_entries if s.objectId == company_id
         or s.objectId in [ticket.id for ticket in company_tickets]
         or s.objectId in [activity.id for activity in company_activities]
     ]
Beispiel #5
0
 def fetch_by_object_ids(cls, object_ids, on_or_after=None, before=None):
     # i = 1
     # schedule_entries = []
     # print(ticket_ids)
     # while i < len(ticket_ids):
     #     print(ticket_ids[i-1:10])
     #     schedule_entries.extend(CWSchedule.fetch_by_object_ids(ticket_ids[i-1:10], on_or_after, before))
     #     i += 10
     # self.schedule_entries = schedule_entries
     if len(object_ids) > 10:
         raise IOError('Cannot lookup more than 10 objectIds at once')
     conditions = [
         '({})'.format('objectId={}'.format(' or objectId='.join(
             '{}'.format(_id) for _id in object_ids)))
     ]
     if on_or_after:
         conditions.append('dateStart>=[{}]'.format(on_or_after))
     if before: conditions.append('dateStart<[{}]'.format(before))
     return [
         cls(**schedule_entry)
         for schedule_entry in Connectwise.submit_request(
             'schedule/entries', conditions)
     ]
Beispiel #6
0
 def fetch_all(cls):
     return [
         cls(**schedule_entry) for schedule_entry in
         Connectwise.submit_request('schedule/entries')
     ]
Beispiel #7
0
 def fetch_this_fy(cls, of_date=None):
     on_or_after, before = Connectwise.fy_of_date(of_date)
     return [
         h for h in cls.fetch_all()
         if on_or_after <= h.Holiday_Date < before
     ]
 def fetch(name, conditions=[], filters={}):
     return Connectwise.submit_request('system/reports/{}'.format(name),
                                       conditions, filters)
Beispiel #9
0
 def fetch_by_project_id(cls, project_id):
     conditions = ['applyToId={}'.format(project_id), 'applyToType="Project"']
     return [cls(**invoice) for invoice in
             Connectwise.submit_request('finance/invoices', conditions)]
Beispiel #10
0
 def fetch_by_invoice_number(cls, invoice_number):
     conditions = ['invoiceNumber="{}"'.format(invoice_number)]
     return [cls(**invoice) for invoice in
             Connectwise.submit_request('finance/invoices', conditions)][0]