def deferred_customer_widget(node, kw): if is_admin: query = Customer.query().join(Customer.company) query = query.options( contains_eager(Customer.company).load_only('name') ) query = query.options(load_only('id', 'label')) datas = OrderedDict() for item in query: datas.setdefault(item.company.name, []).append( (item.id, item.label) ) # All customers, grouped by Company for company_name, customers in datas.items(): values.append( deform.widget.OptGroup( company_name, *customers ) ) else: # Company customers only company = kw['request'].context for cust in company.customers: values.append( (cust.id, u"%s (%s)" % (cust.name, cust.code)) ) return deform.widget.Select2Widget( values=values, **(widget_options or {}) )
def get_customers_from_request(request): """ Get customers options for new task and task duplicate form Find customers regarding the current context Project -> Project.customers ... :returns: A list of customers :rtype: list """ from autonomie.models.customer import Customer from autonomie.models.task import Task customers = [] context = request.context if isinstance(context, Project): customers = context.customers elif isinstance(context, Task): customers = [context.customer] elif isinstance(context, Customer): customers = [context] elif hasattr(context, 'project') and context.project is not None: customers = context.project.customers else: company_id = request.current_company from autonomie.models.customer import Customer customers = Customer.query().filter_by(company_id=company_id).all() return customers
def get_company_customers(kw): """ Retrieve all customers attached to a context's company """ from autonomie.models.customer import Customer request = kw['request'] company_id = request.context.get_company_id() return Customer.query().filter_by(company_id=company_id).all()
def deferred_customer_widget(node, kw): if default_option: values = [default_option] else: values = [] if is_admin: query = Customer.query().join(Customer.company) query = query.options( contains_eager(Customer.company).load_only('name') ) query = query.options(load_only('id', 'label')) if with_invoice: query = query.filter( Customer.id.in_( DBSESSION().query(distinct(Task.customer_id)).filter( Task.type_.in_(['invoice', 'cancelinvoice']) ) ) ) elif with_estimation: query = query.filter( Customer.id.in_( DBSESSION().query(distinct(Task.customer_id)).filter( Task.type_ == 'estimation' ) ) ) datas = OrderedDict() for item in query: datas.setdefault(item.company.name, []).append( (item.id, item.label) ) # All customers, grouped by Company for company_name, customers in datas.items(): values.append( deform.widget.OptGroup( company_name, *customers ) ) else: # Company customers only company = kw['request'].context for cust in company.customers: values.append( (cust.id, u"%s (%s)" % (cust.name, cust.code)) ) return deform.widget.Select2Widget( values=values, **(widget_options or {}) )
def migrate_datas(): from autonomie_base.models.base import DBSESSION session = DBSESSION() from autonomie.models.customer import Customer for customer in Customer.query().options( sa.orm.load_only("id", "name", "lastname", "firstname", "civilite", "type_")): customer.label = customer._get_label() session.merge(customer)
def customers(self): """ Return the number of real customers (with invoices) for the current year """ company_id = self.request.context.id result = 0 customers = Customer.query().filter(Customer.company_id == company_id) for customer in customers: for invoice in customer.invoices: if invoice.financial_year == self.year: if invoice.CAEStatus in Invoice.valid_states: result += 1 break return result
def customers(self): """ Return the number of real customers (with invoices) for the current year """ company_id = self.request.context.id result = 0 customers = Customer.query().filter(Customer.company_id==company_id) for customer in customers: for invoice in customer.invoices: if invoice.financial_year == self.year: if invoice.CAEStatus in Invoice.valid_states: result += 1 break return result
def unique_ccode(node, value): """ Test customer code unicity """ if len(value) != 4: message = u"Le code client doit contenir 4 caractères." raise colander.Invalid(node, message) #Test unicity query = Customer.query().filter(Customer.company_id == company_id)\ .filter(Customer.code == value) if customer: # In edit mode, it will always fail query = query.filter(Customer.id != customer.id) result = query.all() if len(result): message = u"Vous avez déjà utilisé ce code '{0}' pour un autre \ client".format(value) raise colander.Invalid(node, message)
def customer(content): res = Customer.query().first() res.code = "CLI1" return res
def query(self): company = self.request.context return Customer.query().filter_by(company_id=company.id)
def query(self): company = self.request.context query = Customer.query().options(undefer_group('edit')) return query.filter(Customer.company_id == company.id)
def get_individual_customer(): return Customer.query().filter(Customer.lastname == 'Lastname 2').one()
def getOne(): return Customer.query().filter(Customer.name=='Company').one()
def customer(content): res = Customer.query().first() return res
def getOne(): return Customer.query().filter(Customer.name == 'Company').one()