115 lines
4.7 KiB
YAML
115 lines
4.7 KiB
YAML
- |
|
|
In Order to test the Membership in OpenERP, which allows us to manage all operations for managing memberships.
|
|
- |
|
|
We have to create "Membership Products" to make it available for partner or customer to make membership with it.
|
|
select product type to "service" type and membership field is ticked to visible this product while creating membership for the partner.
|
|
-
|
|
!record {model: product.product, id: product_product_membershipproduct0}:
|
|
categ_id: product.cat1
|
|
membership: 1
|
|
membership_date_from: '2009-06-01'
|
|
membership_date_to: '2010-06-01'
|
|
name: Membership Products
|
|
type: service
|
|
list_price: 80.00
|
|
|
|
- |
|
|
I create new member "Mark Johnson" and I provide an address to this
|
|
new customer, as well as an email "info@mycustomer.com".
|
|
-
|
|
!record {model: res.partner, id: res_partner_markjohnson0}:
|
|
address:
|
|
- city: paris
|
|
country_id: base.fr
|
|
name: Arthur Grosbonnet
|
|
street: 1 rue Rockfeller
|
|
title: M.
|
|
type: default
|
|
zip: '75016'
|
|
credit_limit: 0.0
|
|
membership_amount: 0.0
|
|
name: Mark Johnson
|
|
property_account_payable: account.a_pay
|
|
property_account_receivable: account.a_recv
|
|
|
|
- |
|
|
I check that "Current membership state" is set to "Non Member".
|
|
-
|
|
!assert {model: res.partner, id: res_partner_markjohnson0}:
|
|
- membership_state == 'none'
|
|
- |
|
|
I can make it a Free member by selecting the "Free member" check box.
|
|
-
|
|
!record {model: res.partner, id: membership.res_partner_markjohnson0}:
|
|
free_member: 1
|
|
- |
|
|
Now, I create Membership Invoices using wizard available on partner and Select Membership Product.
|
|
-
|
|
!record {model: membership.invoice, id: membership_invoice_0}:
|
|
product_id: membership.product_product_membershipproduct0
|
|
- |
|
|
I check that address is defined or not for this Member.
|
|
-
|
|
!python {model: membership.invoice}: |
|
|
partner_ids = [ref('res_partner_markjohnson0')]
|
|
addre_obj = self.pool.get('res.partner.address')
|
|
ids = addre_obj.search(cr, uid, [('partner_id', '=', partner_ids)])
|
|
|
|
addre_id = addre_obj.browse(cr, uid, ids)[0]
|
|
assert addre_id.partner_id
|
|
assert addre_id.id
|
|
assert addre_id.type
|
|
|
|
- |
|
|
I click on "Confirm" button of this wizard.
|
|
-
|
|
!python {model: membership.invoice}: |
|
|
self.membership_invoice(cr, uid, [ref("membership_invoice_0")], {"active_ids": [ref("membership.res_partner_markjohnson0")]})
|
|
|
|
- |
|
|
I check that Invoice is created for this members.
|
|
-
|
|
!python {model: res.partner}: |
|
|
invoice_obj = self.pool.get('account.invoice')
|
|
partner_obj = self.pool.get('res.partner')
|
|
product_obj = self.pool.get('product.product')
|
|
invoice_line_obj = self.pool.get(('account.invoice.line'))
|
|
|
|
partner_id = self.browse(cr, uid, [ref('res_partner_markjohnson0')])[0]
|
|
ids = invoice_obj.search(cr, uid, [('partner_id', '=', partner_id.id), ('account_id', '=', partner_id.property_account_receivable.id)])
|
|
invoice_id = invoice_obj.browse(cr, uid, ids)[0]
|
|
|
|
product = product_obj.browse(cr, uid, [ref('product_product_membershipproduct0')], context=context)[0]
|
|
line_ids = invoice_line_obj.search(cr, uid, [('product_id', '=', product.id), ('invoice_id', '=', invoice_id.id)])
|
|
line_id = invoice_line_obj.browse(cr, uid, line_ids)[0]
|
|
|
|
assert line_id.product_id.id == product.id
|
|
assert invoice_id.partner_id.id == partner_id.id
|
|
|
|
- |
|
|
I check that the "Current membership state" will remain same untill opening the invoice.
|
|
-
|
|
!assert {model: res.partner, id: res_partner_markjohnson0}:
|
|
- membership_state == 'free'
|
|
|
|
- |
|
|
"Current membership state" of any member depends on the state of invoice.
|
|
So, I check that invoice is in draft state then the "membership state" of a member is "Waiting member".
|
|
-
|
|
!python {model: membership.membership_line}: |
|
|
partner_id = self.pool.get('res.partner').browse(cr, uid, [ref('res_partner_markjohnson0')])[0]
|
|
ids = self.search(cr, uid, [('partner', '=', partner_id.id)])
|
|
current_id = self.browse(cr, uid, ids)[0]
|
|
|
|
partner_obj = self.pool.get('res.partner')
|
|
inv_obj = self.pool.get('account.invoice')
|
|
|
|
ids = inv_obj.search(cr, uid, [('partner_id', '=', partner_id.id), ('account_id', '=', partner_id.property_account_receivable.id)])
|
|
inv_id = inv_obj.browse(cr, uid, ids)[0]
|
|
if inv_id.state == 'draft':
|
|
assert current_id == 'waiting'
|
|
- |
|
|
When the invoice is in open state it become Invoiced Member, When the invoice is in paid state the same "Current membership state" changed to Paid Member.
|
|
Now, If we cancel the invoice "Current membership state" changed to Cancel Member.
|
|
|
|
|