Пример #1
0
 def status_dialog(self):
     customer_id = self.request.matchdict.get('customer_id')
     customer = Customer.load(customer_id)
     self.forbid_if(not customer or customer.campaign.company.enterprise_id != self.enterprise_id)
     order = order_item = events = redir = None
     if self.request.GET.get('order_id'):
         order = CustomerOrder.load(self.request.GET.get('order_id'))
         self.forbid_if(not order or order.campaign.company.enterprise_id != self.enterprise_id)
         events = util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, order), 'event_id', 'display_name', True)
         redir = '/crm/customer/show_orders/%s' % customer_id
     elif self.request.GET.get('order_item_id'):
         order_item = OrderItem.load(self.request.GET.get('order_item_id'))
         self.forbid_if(not order_item or order_item.order.campaign.company.enterprise_id != self.enterprise_id)
         events = util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, order_item), 'event_id', 'display_name', True)
         redir = '/crm/customer/edit_order_dialog/%s/%s' % (customer_id, order_item.order_id)
     else:
         events = util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, customer), 'event_id', 'display_name', True)
         redir = '/crm/customer/edit/%s' % customer_id
     return {
         'customer' : customer,
         'order' : order,
         'order_item' : order_item,
         'events' : events,
         'redir' : redir
         }
Пример #2
0
    def _show_prep(self, report_id):
        report = Report.load(report_id)
        campaigns = products = companies = users = vendors = None
        if report.show_campaign_id:
            campaigns = util.select_list(Campaign.find_all(self.enterprise_id), 'campaign_id', 'name', True)

        if report.show_vendor_id:
            vendors = util.select_list(Vendor.find_all(self.enterprise_id), 'vendor_id', 'name', True)

        if report.show_company_id:
            companies = util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name', True)

        if report.show_user_id:
            users = util.select_list(Users.find_all(self.enterprise_id), 'user_id', 'user_id', True)

        if report.show_product_id:
            products = util.select_list(Product.find_all(self.enterprise_id), 'product_id', 'name', True)

        return {
            'today' : util.today_date(),
            'tomorrow' : util.tomorrow(),
            'thirty_ago' : util.today_date() - datetime.timedelta(days=30),
            'rpt_end_dt' : self.request.GET.get('rpt_end_dt'),
            'rpt_start_dt' : self.request.GET.get('rpt_start_dt'),
            'enterprise_id' : self.enterprise_id,
            'report' : report,
            'campaigns' : campaigns,
            'products' : products,
            'companies' : companies,
            'users' : users,
            'vendors' : vendors
            }
Пример #3
0
 def _edit_impl(self):
     purchase_order_id = self.request.matchdict.get('purchase_order_id')
     purchase = PurchaseOrder.load(purchase_order_id) if purchase_order_id else PurchaseOrder()
     return {
         'companies' : util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name'),
         'vendors' : util.select_list(Vendor.find_all(self.enterprise_id), 'vendor_id', 'name', True),
         'products' : Product.find_all(self.enterprise_id),
         'purchase' : purchase,
         'events' : util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, purchase), 'event_id', 'display_name') if purchase.purchase_order_id else []
         }
Пример #4
0
 def _edit_impl(self):
     company_id = self.request.matchdict.get('company_id')
     comms = []
     campaigns = util.select_list(Campaign.find_all(self.enterprise_id), 'campaign_id', 'name')
     company = None
     if company_id:
         company = Company.load(company_id)
         comms = util.select_list(Communication.find_all_by_company(company), 'comm_id', 'name')
     else:
         company = Company()
     return {'comms': comms,
             'company': company,
             'campaigns': campaigns}
Пример #5
0
 def _edit_impl(self):
     site_id = self.request.matchdict.get('site_id')
     self.session['last_site_id'] = site_id
     if site_id:
         site = Site.load(site_id)
         self.forbid_if(not site or str(site.company.enterprise_id) != str(self.enterprise_id))
     else:
         site = Site()
     return {
         'site' : site,
         'shipping_methods' : Site.get_shipping_methods(),
         'tax_methods' : Site.get_tax_methods(),
         'companies' : util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name'),
         'campaigns' : util.select_list(Campaign.find_all(self.enterprise_id), 'campaign_id', 'name')
         }
Пример #6
0
 def _edit_impl(self):
     customer_id = self.request.matchdict.get('customer_id')
     customer = None
     if customer_id:
         customer = Customer.load(customer_id)
         self.forbid_if(not customer or customer.campaign.company.enterprise_id != self.enterprise_id)
         self._add_to_recent(customer)
     else:
         customer = Customer()
         customer.campaign = self.request.ctx.site.company.default_campaign
     return {
         'customer' : customer,
         'users' : util.select_list(Users.find_all(self.enterprise_id), 'user_id', ['fname', 'lname'], True),
         'phases' : util.select_list(CustomerPhase.find_all(self.enterprise_id), 'phase_id', 'display_name', True),
         'campaigns' : util.select_list(Campaign.find_all(self.enterprise_id), 'campaign_id', 'name')
         }
Пример #7
0
 def _edit_impl(self, user_id=None):
     user = priv = None
     if user_id:
         user = self.request.ctx.user if self.request.ctx.user.user_id == user_id else Users.load(user_id)
         priv = user.priv if user.priv else UserPriv()
     else:
         user = Users()
         priv = UserPriv()
     return {
         'enterprises' : util.select_list(Enterprise.find_all(), 'enterprise_id', 'name', True),
         'user_types': Users.get_user_types(),
         'vendors' : util.select_list(Vendor.find_all(self.enterprise_id), 'vendor_id', 'name', True),
         'timezones' : country_timezones('US'),
         'user' : user,
         'priv' : priv
         }
Пример #8
0
 def show_returns(self):
     product_id = self.request.matchdict['product_id']
     product = Product.load(product_id)
     self.forbid_if(not product or product.company.enterprise_id != self.enterprise_id)
     return {'product' : product,
             'events' : util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, product), 'event_id', 'display_name'),
             'returns' : ProductReturn.find(product)}
Пример #9
0
    def _edit_impl(self):
        campaign_id = self.request.matchdict.get('campaign_id')
        comms = []
        companies = util.select_list(Company.find_all(self.enterprise_id),
                                       'company_id', 'name')
        campaign = None
        if campaign_id:
            campaign = Campaign.load(campaign_id)
            self.forbid_if(not campaign or campaign.company.enterprise_id != self.enterprise_id)
            comms = util.select_list(Communication.find_all_by_company(campaign.company), 'comm_id', 'name', True)
        else:
            campaign = Campaign()

        return {'comms': comms,
                'campaign': campaign,
                'companies': companies}
Пример #10
0
 def search(self):
     name = self.request.POST.get('name')
     company_id = self.request.POST.get('company_id')
     return {
         'companies' : util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name'),
         'name' : name,
         'company_id' : company_id,
         'campaigns' : Campaign.search(self.enterprise_id, name, company_id)
     }
Пример #11
0
 def show_purchases(self):
     product_id = self.request.matchdict['product_id']
     from pvscore.model.crm.purchase import PurchaseOrderItem
     product = Product.load(product_id)
     self.forbid_if(not product or product.company.enterprise_id != self.enterprise_id)
     return {'product' : product,
             'events' : util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, product), 'event_id', 'display_name'),
             'purchase_order_items' : PurchaseOrderItem.find_by_product(product)
             }
Пример #12
0
 def _edit_impl(self):
     site_id = self.request.matchdict.get('site_id')
     site = Site.load(site_id)
     self.forbid_if(not site or str(site.company.enterprise_id) != str(self.enterprise_id))
     content_id = self.request.matchdict.get('content_id')
     if content_id:
         content = Content.load(content_id)
         self.forbid_if(not content
                        or str(content.site.company.enterprise_id) != str(self.enterprise_id)
                        or str(content.site_id) != str(site_id))
     else:
         content = Content()
         content.site_id = site_id
     return {
         'site' : site,
         'content' : content,
         'companies' : util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name'),
         'campaigns' : util.select_list(Campaign.find_all(self.enterprise_id), 'campaign_id', 'name')
         }
Пример #13
0
    def _edit_impl(self):
        product_id = self.request.matchdict.get('product_id')
        campaigns = Campaign.find_all(self.enterprise_id)
        companies = util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name')
        product_types = Product.get_types()
        vendors = util.select_list(Vendor.find_all(self.enterprise_id), 'vendor_id', 'name', True)
        categories = util.select_list(ProductCategory.find_all(self.enterprise_id), 'category_id', 'name', True)
        if product_id:
            product = Product.load(product_id)
            self.forbid_if(not product or product.company.enterprise_id != self.enterprise_id)
            product_categories = ProductCategory.find_by_product(product)
        else:
            product = Product()
            product_categories = []
        self.forbid_if(self.request.ctx.user.is_vendor_user() and product.product_id and not self.request.ctx.user.vendor_id == product.vendor_id)
        children = product.get_children()
        other_products = product.find_eligible_children()
        non_children = []
        for prod in other_products:
            found = False
            for kid in children:
                if kid.child_id == prod.product_id:
                    found = True
                    break
            if found == False:
                non_children.append(prod)

        return  {
            'product' : product,
            'campaigns' : campaigns,
            'companies' : companies,
            'product_types' : product_types,
            'vendors' : vendors,
            'categories' : categories,
            'product_categories' : product_categories,
            'children' : children,
            'non_children': non_children,
            'other_products' : other_products,
            'events' : util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, product), 'event_id', 'display_name'),
            'is_attribute' : self.request.GET.get('is_attribute') == 'True', 
            'parent_product' : Product.load(self.request.GET.get('parent_id')) if 'parent_id' in self.request.GET else None
            }
Пример #14
0
 def search(self):
     vendor_id = self.request.POST.get('vendor_id') 
     from_dt = self.request.POST.get('from_dt', util.str_today())
     to_dt = self.request.POST.get('to_dt', util.str_today())
     return {
         'vendor_id' : vendor_id, 
         'from_dt' : from_dt, 
         'to_dt' : to_dt, 
         'purchases' : PurchaseOrder.search(self.enterprise_id, vendor_id, from_dt, to_dt),
         'vendors' : util.select_list(Vendor.find_all(self.enterprise_id), 'vendor_id', 'name')
         }
Пример #15
0
 def show_search(self):
     return {
         'company_name' : None,
         'fname' : None,
         'lname' : None,
         'email' : None,
         'phone' : None,
         'customers' : None,
         'user_assigned' : None,
         'users' : util.select_list(Users.find_all(self.enterprise_id), 'user_id', ['fname', 'lname'], True)
         }
Пример #16
0
    def _edit_impl(self):
        category_id = self.request.matchdict.get('category_id')
        companies = util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name')
        if category_id:
            category = ProductCategory.load(category_id)
            self.forbid_if(not category or category.company.enterprise_id != self.enterprise_id)
        else:
            category = ProductCategory()

        all_products = Product.find_all(self.enterprise_id)
        return {'companies' : companies,
                'category' : category,
                'all_products' : all_products}
Пример #17
0
 def _edit_impl(self):
     report_id = self.request.matchdict.get('report_id')
     report = None
     if report_id:
         report = Report.load(report_id)
         self.forbid_if(not report)
     else:
         report = Report()
     return {
         'report' : report,
         'reports' : Report.find_vendor_reports() if self.request.ctx.user.is_vendor_user() else Report.find_all(),
         'companies' : util.select_list(Company.find_all_all(), 'company_id', 'name')
         }
Пример #18
0
    def search(self):
        ret = {
            'company_name' : None,
            'fname' : None,
            'lname' : None,
            'email' : None,
            'phone' : None,
            'customers' : None,
            'user_assigned' : None,
            'users' : util.select_list(Users.find_all(self.enterprise_id), 'user_id', ['fname', 'lname'], True)
            }

        ret['company_name'] = self.request.POST.get('company_name', self.request.GET.get('company_name'))
        ret['fname'] = self.request.POST.get('fname', self.request.GET.get('fname'))
        ret['lname'] = self.request.POST.get('lname', self.request.GET.get('lname'))
        ret['email'] = self.request.POST.get('email', self.request.GET.get('email'))
        ret['phone'] = self.request.POST.get('phone', self.request.GET.get('phone'))
        ret['user_assigned'] = self.request.POST.get('user_assigned', self.request.GET.get('user_assigned'))
        ret['customers'] = Customer.search(self.enterprise_id, ret['company_name'], ret['fname'],
                                           ret['lname'], ret['email'], ret['phone'], ret['user_assigned'])
        if 'customers' in ret and len(ret['customers']) == 1:
            ret = HTTPFound('/crm/customer/edit/%s' % ret['customers'][0].customer_id)
        return ret
Пример #19
0
 def show_search(self):
     return {
         'vendors' : util.select_list(Vendor.find_all(self.enterprise_id), 'vendor_id', 'name'),
         'purchases' : None
         }