Exemple #1
0
    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
Exemple #2
0
def membership_buy_now():
    """
        Get a membership
    """
    from openstudio.os_customer_membership import CustomerMembership
    from openstudio.os_school_membership import SchoolMembership

    smID = request.vars['smID']

    # init mollie
    mollie = Client()
    mollie_api_key = get_sys_property('mollie_website_profile')
    mollie.set_api_key(mollie_api_key)

    # check if we have a mollie customer id
    create_mollie_customer(auth.user.id, mollie)

    # Create invoice
    sm = SchoolMembership(smID)
    cmID = sm.sell_to_customer(auth.user.id, TODAY_LOCAL)

    cm = CustomerMembership(cmID)
    iID = cm.get_linked_invoice()

    # Pay invoice ... SHOW ME THE MONEY!! :)
    redirect(URL('invoice_pay', vars={'iID': iID}))
    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 sell_to_customer(self, auth_user_id, date_start, note=None, invoice=True, payment_methods_id=None):
        """
            :param auth_user_id: Sell membership to customer
        """
        from .os_customer_membership import CustomerMembership
        from .os_cache_manager import OsCacheManager

        db = current.db
        ocm = OsCacheManager()

        cmID = db.customers_memberships.insert(
            auth_customer_id = auth_user_id,
            school_memberships_id = self.smID,
            Startdate = date_start,
            Enddate = self.sell_to_customer_get_enddate(date_start),
            Note = note,
            payment_methods_id=payment_methods_id
        )

        # Init membership
        cm = CustomerMembership(cmID)
        cm.set_enddate()

        # Clear memberships cache for this user
        ocm.clear_customers_memberships(auth_user_id)

        if invoice:
            self.sell_to_customer_create_invoice(cmID)

        return cmID
    def item_add_membership(self, cmID, period_start, period_end):
        """
        :param cmID: db.customers_memberships.id
        :return: db.invoices_items.id
        """
        from openstudio.os_customer_membership import CustomerMembership
        from openstudio.os_school_membership import SchoolMembership

        db = current.db
        DATE_FORMAT = current.DATE_FORMAT

        next_sort_nr = self.get_item_next_sort_nr()

        cm = CustomerMembership(cmID)
        sm = SchoolMembership(cm.row.school_memberships_id)
        row = sm.get_tax_rates_on_date(period_start)

        if row:
            tax_rates_id = row.school_memberships_price.tax_rates_id
        else:
            tax_rates_id = None

        price = sm.get_price_on_date(cm.row.Startdate, False)
        description = cm.get_name() + ' ' + \
                      period_start.strftime(DATE_FORMAT) + ' - ' + \
                      period_end.strftime(DATE_FORMAT)

        iiID = db.invoices_items.insert(
            invoices_id=self.invoices_id,
            ProductName=current.T("Membership") + ' ' + unicode(cmID),
            Description=description,
            Quantity=1,
            Price=price,
            Sorting=next_sort_nr,
            tax_rates_id=tax_rates_id,
        )

        self.link_to_customer_membership(cmID)
        self.set_amounts()

        self.on_update()

        return iiID
Exemple #6
0
    def item_add_membership(self, cmID):
        """
        :param cmID: db.customers_memberships.id
        :return: db.invoices_items.id
        """
        from openstudio.os_customer_membership import CustomerMembership
        from openstudio.os_school_membership import SchoolMembership

        db = current.db
        DATE_FORMAT = current.DATE_FORMAT

        next_sort_nr = self.get_item_next_sort_nr()

        cm = CustomerMembership(cmID)
        sm = SchoolMembership(cm.row.school_memberships_id)

        price = sm.row.Price
        tax_rates_id = sm.row.tax_rates_id

        if price == 0:
            return # Don't do anything if the price is 0

        description = cm.get_name() + ' ' + \
                      cm.row.Startdate.strftime(DATE_FORMAT) + ' - ' + \
                      cm.row.Enddate.strftime(DATE_FORMAT)

        iiID = db.invoices_items.insert(
            invoices_id = self.invoices_id,
            ProductName = current.T("Membership") + ' ' + unicode(cmID),
            Description = description,
            Quantity = 1,
            Price = price,
            Sorting = next_sort_nr,
            tax_rates_id = tax_rates_id,
            accounting_glaccounts_id = sm.row.accounting_glaccounts_id,
            accounting_costcenters_id = sm.row.accounting_costcenters_id
        )

        self.link_item_to_customer_membership(cmID, iiID)
        # This calls self.on_update()
        self.set_amounts()

        return iiID
Exemple #7
0
def membership_buy_now():
    """
        Get a membership
    """
    from openstudio.os_customer_membership import CustomerMembership
    from openstudio.os_school_membership import SchoolMembership

    smID = request.vars['smID']

    # init mollie
    mollie = Mollie.API.Client()
    mollie_api_key = get_sys_property('mollie_website_profile')
    mollie.setApiKey(mollie_api_key)

    # check if we have a mollie customer id
    create_mollie_customer(auth.user.id, mollie)

    # add membership to customer
    cmID = db.customers_memberships.insert(
        auth_customer_id = auth.user.id,
        school_memberships_id = smID,
        Startdate = TODAY_LOCAL,
        payment_methods_id = 100, # important, 100 is the payment_methods_id for Mollie
    )

    cm = CustomerMembership(cmID)
    cm.set_date_id_and_barcode()

    # clear cache to make sure it shows in the back end
    cache_clear_customers_memberships(auth.user.id)

    # Create invoice
    sm = SchoolMembership(smID)
    iID = sm.sell_to_customer_create_invoice(cmID)

    # Pay invoice ... SHOW ME THE MONEY!! :)
    redirect(URL('invoice_pay', vars={'iID':iID}))
    def _add_get_form_enable_membership_fields(self, cmID):
        """
        Enable fields required for customer memberships

        :param cmID: db.customers_memberships.id
        :return: None
        """
        from openstudio.os_customer_membership import CustomerMembership

        db = current.db

        cm = CustomerMembership(cmID)
        db.invoices.payment_methods_id.default = cm.row.payment_methods_id
        db.invoices.MembershipPeriodStart.readable = True
        db.invoices.MembershipPeriodStart.writable = True
        db.invoices.MembershipPeriodEnd.readable = True
        db.invoices.MembershipPeriodEnd.writable = True