[IMP] membership: yml
bzr revid: hmo@tinyerp.com-20100722070556-1g50s0402pek4uyw
This commit is contained in:
parent
1749ce6668
commit
d519022d12
|
@ -1,101 +1,167 @@
|
|||
- |
|
||||
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.
|
||||
I'm creating "Golden Membership" which has Membership fee 80 EURO and It's started from 1st June to 31st Dec.
|
||||
-
|
||||
!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
|
||||
membership_date_from: '2010-06-01'
|
||||
membership_date_to: '2010-12-31'
|
||||
name: Golden Membership
|
||||
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".
|
||||
"Mark Johnson" want to join "Golden Membership".
|
||||
- |
|
||||
I'm creating new member "Mark Johnson".
|
||||
-
|
||||
!record {model: res.partner, id: res_partner_markjohnson0}:
|
||||
address:
|
||||
- city: paris
|
||||
country_id: base.fr
|
||||
name: Arthur Grosbonnet
|
||||
name: Mark Johnson
|
||||
street: 1 rue Rockfeller
|
||||
type: default
|
||||
type: invoice
|
||||
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".
|
||||
I'm checking "Current Membership State" of "Mark Johnson". It is an "Non Member" or not.
|
||||
-
|
||||
!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
|
||||
- membership_state == 'none', 'Member should be has "Current Membership State" in "Non Member".'
|
||||
- |
|
||||
Now, I create Membership Invoices using wizard available on partner and Select Membership Product.
|
||||
I'm doing to make membership invoice for "Mark Johnson" on joining "Golden Membership".
|
||||
-
|
||||
!record {model: membership.invoice, id: membership_invoice_0}:
|
||||
product_id: membership.product_product_membershipproduct0
|
||||
|
||||
!python {model: res.partner}: |
|
||||
self.create_membership_invoice(cr, uid, [ref("res_partner_markjohnson0")], product_id=ref("product_product_membershipproduct0"), datas={"amount":80.00})
|
||||
- |
|
||||
I click on "Confirm" button of this wizard. and also check that address is defined or not for this partner in this function.
|
||||
I'm checking "Current Membership State" of "Mark Johnson". It is an "Waiting Member" or not.
|
||||
-
|
||||
!python {model: membership.invoice}: |
|
||||
self.membership_invoice(cr, uid, [ref("membership_invoice_0")], {"active_ids": [ref("membership.res_partner_markjohnson0")]})
|
||||
|
||||
!assert {model: res.partner, id: res_partner_markjohnson0}:
|
||||
- membership_state == 'waiting', 'Member should be has "Current Membership State" in "Waiting Member".'
|
||||
- |
|
||||
I check that Invoice is created for this members.
|
||||
I'm Opening that Invoice which is created for "Mark Johnson".
|
||||
-
|
||||
!python {model: res.partner}: |
|
||||
|
||||
import netsvc
|
||||
from tools.translate import _
|
||||
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')
|
||||
invoice_pool = self.pool.get('account.invoice')
|
||||
partner_pool = self.pool.get('res.partner')
|
||||
membership_line_pool = self.pool.get('membership.membership_line')
|
||||
membership_pool = self.pool.get('product.product')
|
||||
|
||||
partner_id = self.browse(cr, uid, ref('res_partner_markjohnson0'))
|
||||
inv_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, inv_ids)[0]
|
||||
product = product_obj.browse(cr, uid, ref('product_product_membershipproduct0'), context=context)
|
||||
line_ids = invoice_line_obj.search(cr, uid, [('product_id', '=', product.id), ('invoice_id', '=', invoice_id.id)])
|
||||
|
||||
assert line_ids, _('Invoices has not been generated for this Member!')
|
||||
|
||||
membership_line_ids = membership_line_pool.search(cr, uid, [('membership_id','=',ref('product_product_membershipproduct0')),('partner','=',ref('res_partner_markjohnson0'))])
|
||||
membership_lines = membership_line_pool.browse(cr, uid, membership_line_ids)
|
||||
assert membership_lines, _('Membership is not registrated.')
|
||||
membership_line = membership_lines[0]
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
wf_service.trg_validate(uid, 'account.invoice', membership_line.account_invoice_id.id, 'invoice_open', cr)
|
||||
- |
|
||||
I check that the "Current membership state" will remain same untill opening the invoice.
|
||||
I'm checking "Current membership state" of "Mark Johnson". It is an "Invoiced Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: res_partner_markjohnson0}:
|
||||
- membership_state == 'free'
|
||||
- membership_state == 'invoiced', 'Member should be has "Current Membership State" in "Invoiced Member".'
|
||||
|
||||
- |
|
||||
"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".
|
||||
I'm doing to paid that invoice which is opened for "Mark Johnson".
|
||||
-
|
||||
!python {model: membership.membership_line}: |
|
||||
partner_obj = self.pool.get('res.partner')
|
||||
inv_obj = self.pool.get('account.invoice')
|
||||
!python {model: account.invoice}: |
|
||||
|
||||
from tools.translate import _
|
||||
invoice_pool = self.pool.get('account.invoice')
|
||||
partner_pool = self.pool.get('res.partner')
|
||||
membership_line_pool = self.pool.get('membership.membership_line')
|
||||
membership_pool = self.pool.get('product.product')
|
||||
invoice_pay_pool = self.pool.get('account.invoice.pay')
|
||||
|
||||
partner_id = partner_obj.browse(cr, uid, ref('res_partner_markjohnson0'))
|
||||
member_ids = self.search(cr, uid, [('partner', '=', partner_id.id)])
|
||||
current_id = self.browse(cr, uid, member_ids)[0]
|
||||
|
||||
inv_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, inv_ids)[0]
|
||||
if inv_id.state == 'draft':
|
||||
assert current_id.state == 'waiting'
|
||||
membership_line_ids = membership_line_pool.search(cr, uid, [('membership_id','=',ref('product_product_membershipproduct0')),('partner','=',ref('res_partner_markjohnson0'))])
|
||||
membership_lines = membership_line_pool.browse(cr, uid, membership_line_ids)
|
||||
assert membership_lines, _('Membership is not registrated.')
|
||||
membership_line = membership_lines[0]
|
||||
assert membership_line.account_invoice_id.state == 'open', _('Invoice should be Opened.')
|
||||
pay_id = invoice_pay_pool.create(cr, uid, {'amount': 80, 'name': 'Payment of Membership', 'journal_id': ref('account.bank_journal')}, {'active_id': membership_line.account_invoice_id.id})
|
||||
invoice_pay_pool.pay_and_reconcile(cr, uid, [pay_id], {'active_id': membership_line.account_invoice_id.id})
|
||||
- |
|
||||
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.
|
||||
|
||||
|
||||
I'm checking "Current membership state" of "Mark Johnson". It is an "Paid Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: res_partner_markjohnson0}:
|
||||
- membership_state == 'paid', 'Member should be has "Current Membership State" in "Paid Member".'
|
||||
|
||||
- |
|
||||
I'm creating free member "Ms. Johnson" of "Golden Membership".
|
||||
-
|
||||
!record {model: res.partner, id: res_partner_msjohnson0}:
|
||||
address:
|
||||
- city: paris
|
||||
country_id: base.fr
|
||||
name: Ms. Johnson
|
||||
street: 1 rue Rockfeller
|
||||
type: invoice
|
||||
zip: '75016'
|
||||
name: Ms. Johnson
|
||||
free_member: True
|
||||
|
||||
- |
|
||||
I'm checking "Current membership state" of "Ms. Johnson". It is an "Free Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: res_partner_msjohnson0}:
|
||||
- membership_state == 'free', 'Member should be has "Current Membership State" in "Free Member".'
|
||||
|
||||
- |
|
||||
I'm set "Mark Johnson" as a associated member of "Ms. Johnson" and also set Non free member.
|
||||
-
|
||||
!python {model: res.partner}: |
|
||||
self.write(cr, uid, [ref("res_partner_msjohnson0")], {'free_member': False, 'associate_member': ref("res_partner_markjohnson0")})
|
||||
|
||||
- |
|
||||
I'm checking "Current membership state" of "Ms. Johnson". It is an "Paid Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: res_partner_msjohnson0}:
|
||||
- membership_state == 'paid', 'Member should be has "Current Membership State" in "Paid Member".'
|
||||
|
||||
- |
|
||||
I'm creating new "Silver Membership" which has Membership fee 50 EURO and It's started from 1st June to 31st Dec.
|
||||
-
|
||||
!record {model: product.product, id: product_product_membershipproduct1}:
|
||||
categ_id: product.cat1
|
||||
membership: 1
|
||||
membership_date_from: '2010-06-01'
|
||||
membership_date_to: '2010-12-31'
|
||||
name: Silver Membership
|
||||
type: service
|
||||
list_price: 50.00
|
||||
- |
|
||||
I'm making invoice of "Mark Johnson" member on joining new membership "Silver Membership".
|
||||
-
|
||||
!python {model: res.partner}: |
|
||||
self.create_membership_invoice(cr, uid, [ref("res_partner_markjohnson0")], product_id=ref("product_product_membershipproduct1"), datas={"amount":50.00})
|
||||
- |
|
||||
I'm checking "Current membership state" of "Mark Johnson". It is an "Old Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: res_partner_markjohnson0}:
|
||||
- membership_state == 'old', 'Member should be has "Current Membership State" in "Old Member".'
|
||||
- |
|
||||
I'm doing to make credit note of invoice which is paid by "Mark Johnson" to cancel membership.
|
||||
-
|
||||
!python {model: account.invoice}: |
|
||||
from tools.translate import _
|
||||
invoice_pool = self.pool.get('account.invoice')
|
||||
partner_pool = self.pool.get('res.partner')
|
||||
membership_line_pool = self.pool.get('membership.membership_line')
|
||||
membership_pool = self.pool.get('product.product')
|
||||
invoice_refund_pool = self.pool.get('account.invoice.refund')
|
||||
|
||||
membership_line_ids = membership_line_pool.search(cr, uid, [('membership_id','=',ref('product_product_membershipproduct0')),('partner','=',ref('res_partner_markjohnson0'))])
|
||||
membership_lines = membership_line_pool.browse(cr, uid, membership_line_ids)
|
||||
assert membership_lines, _('Membership is not registrated.')
|
||||
membership_line = membership_lines[0]
|
||||
refund_id = invoice_refund_pool.create(cr, uid, {'description': 'Refund of Membership'}, {'active_id': membership_line.account_invoice_id.id})
|
||||
invoice_refund_pool.invoice_refund(cr, uid, [refund_id], {'active_id': membership_line.account_invoice_id.id, 'active_ids': [membership_line.account_invoice_id.id]})
|
||||
- |
|
||||
I'm checking "Current membership state" of "Mark Johnson". It is an "Cancelled Member" or not.
|
||||
-
|
||||
!assert {model: res.partner, id: res_partner_markjohnson0}:
|
||||
- membership_state == 'canceled', 'Member should be has "Current Membership State" in "Cancelled Member".'
|
||||
|
||||
|
|
Loading…
Reference in New Issue