def sell_to_customer_create_invoice(self, cmID): """ Add an invoice after adding a membership :param cmID: db.customers_memberships.id :return: db.invoices.id """ from openstudio.os_customer_membership import CustomerMembership from openstudio.os_invoice import Invoice db = current.db T = current.T cm = CustomerMembership(cmID) # Check if price exists and > 0: if self.get_price_on_date(cm.row.Startdate): period_start = cm.row.Startdate period_end = cm.get_period_enddate(cm.row.Startdate) igpt = db.invoices_groups_product_types(ProductType='membership') iID = db.invoices.insert( invoices_groups_id=igpt.invoices_groups_id, Description=cm.get_name(), MembershipPeriodStart=period_start, MembershipPeriodEnd=period_end, Status='sent') invoice = Invoice(iID) invoice.link_to_customer(cm.row.auth_customer_id) invoice.item_add_membership(cmID, period_start, period_end) return iID else: return None
def sell_to_customer_create_invoice(self, cmID): """ Add an invoice after adding a membership :param cmID: db.customers_memberships.id :return: db.invoices.id """ from openstudio.os_customer_membership import CustomerMembership from openstudio.os_invoice import Invoice db = current.db T = current.T cm = CustomerMembership(cmID) # Check if price exists and > 0: if self.row.Price: igpt = db.invoices_groups_product_types(ProductType='membership') iID = db.invoices.insert( invoices_groups_id=igpt.invoices_groups_id, Description=cm.get_name(), Status='sent', payment_methods_id=cm.row.payment_methods_id ) invoice = Invoice(iID) invoice.link_to_customer(cm.row.auth_customer_id) invoice.item_add_membership( cmID, ) return iID else: return None
def add_get_form(self, cuID, csID=None, cmID=None, full_width=True): """ Returns add form for an invoice """ from os_customer import Customer from os_invoice import Invoice self._add_get_form_permissions_check() db = current.db T = current.T customer = Customer(cuID) self._add_get_form_set_default_values_customer(customer) self._add_get_form_enable_minimal_fields() if csID: self._add_get_form_enable_subscription_fields(csID) if cmID: self._add_get_form_enable_membership_fields(cmID) form = SQLFORM(db.invoices, formstyle='bootstrap3_stacked') elements = form.elements('input, select, textarea') for element in elements: element['_form'] = "invoice_add" form_element = form.element('form') form['_id'] = 'invoice_add' if form.process().accepted: iID = form.vars.id invoice = Invoice( iID ) # This sets due date and Invoice (calls invoice.on_create() # invoice.link_to_customer(cuID) self._add_reset_list_status_filter() if csID: invoice.link_to_customer_subscription(csID) invoice.item_add_subscription(form.vars.SubscriptionYear, form.vars.SubscriptionMonth) if cmID: invoice.item_add_membership(cmID, form.vars.MembershipPeriodStart, form.vars.MembershipPeriodEnd) redirect(URL('invoices', 'edit', vars={'iID': iID})) # So the grids display the fields normally for field in db.invoices: field.readable = True return form