Merge pull request #141 from expsa/zainab_sale

[UPDATE]UPDATE
This commit is contained in:
zainab2097 2024-07-09 14:51:46 +03:00 committed by GitHub
commit 12276bd330
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 131 additions and 112 deletions

View File

@ -191,7 +191,7 @@ msgstr "العمر"
#. module: dev_membership
#: model_terms:ir.ui.view,arch_db:dev_membership.view_search_res_partner
msgid "Archived"
msgstr ""
msgstr "مؤرشف"
#. module: dev_membership
#: model:ir.model.fields,field_description:dev_membership.field_dev_membership__message_attachment_count
@ -420,7 +420,7 @@ msgstr "إرسال تذكير ثاني قبل انتهاء العضوية بعد
#. module: dev_membership
#: model_terms:ir.ui.view,arch_db:dev_membership.view_search_res_partner
msgid "Expired Membership"
msgstr ""
msgstr "العضوية المنتهية"
#. module: dev_membership
#: model:ir.model.fields,field_description:dev_membership.field_dev_membership__message_follower_ids

View File

@ -47,7 +47,7 @@ class DevMembership(models.Model):
membership_id = fields.Many2one('dev.membership', string='Renew Membership')
invoice_id = fields.Many2one('account.move', string='Invoice')
user_id = fields.Many2one('res.users', string='Resposible', default=lambda self:self.env.user)
cancel_reason_id = fields.Many2one('cancellation.reason',string='Cancel Membership Reason')
cancel_reasone = fields.Char(string='Cancel Membership Reason')
@api.onchange('product_id')
def _onchange_membership_type(self):

View File

@ -18,10 +18,9 @@ class PartnerExtended(models.Model):
is_member = fields.Boolean(string='Is Member')
membership_count = fields.Integer(string="Membership Count", compute="_get_membership_count")
active_membership_id = fields.Many2one('dev.membership', string='Membership', compute='check_active_membership')
state = fields.Selection(related='active_membership_id.state',store=True)
nationality_id = fields.Many2one('res.country', string="Nationality")
is_membership_expire = fields.Boolean('Expire Membership', compute='check_active_membership')
is_membership_expire = fields.Boolean('Expire Membership',store=True, compute='check_active_membership')
memebership_status = fields.Char('Membership Status', compute='check_memebership_status')
birth_date = fields.Date(string='Birth Date')
join_date = fields.Date(string='Join Date')

View File

@ -107,6 +107,11 @@
<label for="description"/>
</h3>
<field name="description" attrs="{'readonly': ([('state', '!=', 'draft')])}"/>
<group attrs="{'invisible': ([('state', '!=', 'cancel')])}">
<group string="Membership Cancellation Reasones">
<field name="cancel_reasone"/>
</group>
</group>
</div>
</sheet>
<div class="oe_chatter">
@ -231,6 +236,8 @@
<field name="type">ir.actions.act_window</field>
<field name="res_model">dev.membership</field>
<field name="view_mode">kanban,tree,activity,form</field>
<field name="domain">[('state', '!=', 'cancel')]</field>
</record>
<!-- Active Membership-->

View File

@ -21,6 +21,8 @@
</field>
</record>
<record model="ir.ui.view" id="dev_res_partner_member_kanban_view">
<field name="name">dev.res.partner.member.kanban</field>
<field name="model">res.partner</field>
@ -91,9 +93,6 @@
<field name="parent_id"/>
</li>
<li t-if="record.category_id.raw_value">
<field widget="many_2many_tags" name="category_id"/>
</li>
<li t-if="!record.parent_id.raw_value and record.function.raw_value">
<field name="function"/>
</li>
@ -123,114 +122,116 @@
<div class="o_row">
<span class="oe_kanban_partner_links"/>
</div>
</div>
<!-- -->
<div class="o_kanban_record_bottom">
<div class="oe_kanban_bottom_left text-muted">
<span>
<t t-esc="record.join_date.value"/>
</span>
<field name="category_id" widget="many2many_tags" options="{'color_field': 'color'}"/>
<!-- -->
<div class="o_kanban_record_bottom">
<div class="oe_kanban_bottom_left text-muted">
<span>
<t t-esc="record.join_date.value"/>
</span>
</div>
</div>
<field name="activity_ids" widget="kanban_activity"/>
<br/>
<!-- -->
</div>
<field name="activity_ids" widget="kanban_activity"/>
<br/>
<!-- -->
</div>
</t>
</templates>
</kanban>
</field>
</record>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<!--form-->
<record id="view_res_partner_memeber_form" model="ir.ui.view">
<field name="name">view.res.partner.member.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='vat']" position="before">
<field name="nationality_id"/>
<field name="birth_date"/>
<field name="state" invisible="1"/>
<field name="age"/>
</xpath>
<xpath expr="//field[@name='function']" position="after">
<field name="employer"/>
</xpath>
<xpath expr="//page" position="after">
<page name="memebership" string='Memebership'>
<group>
<group name="memeber">
<field name="is_member"/>
<field name="product_id"/>
<!--form-->
<record id="view_res_partner_memeber_form" model="ir.ui.view">
<field name="name">view.res.partner.member.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='vat']" position="before">
<field name="nationality_id"/>
<field name="birth_date"/>
<field name="age"/>
</xpath>
<xpath expr="//field[@name='function']" position="after">
<field name="employer"/>
</xpath>
<xpath expr="//page" position="after">
<page name="memebership" string='Memebership'>
<group>
<group name="memeber">
<field name="is_member"/>
<field name="product_id"/>
</group>
<group name="other">
<field name="join_date"/>
<field name="memebership_end_date"/>
</group>
</group>
</page>
</xpath>
<xpath expr="//field[@name='mobile']" position="attributes">
<attribute name="required">True</attribute>
</xpath>
<xpath expr="//field[@name='email']" position="attributes">
<attribute name="required">True</attribute>
</xpath>
<xpath expr="//div[@name='button_box']" position="inside">
<button name="view_membership" type="object"
class="oe_stat_button"
icon="fa-vcard-o" attrs="{'invisible' : [('membership_count', '=', 0)]}">
<div class="o_stat_info">
<field name="membership_count" class="o_stat_value"/>
<span class="o_stat_text">Membership</span>
</div>
</button>
</xpath>
</field>
</record>
<!-- search -->
<record id="view_search_res_partner" model="ir.ui.view">
<field name="name">res.partner.search</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<search string="Res Partner Search">
<field name="name"/>
<field name="phone"/>
<field name="category_id"/>
<field name="identification_number"/>
<filter string="Archived" name="archived" domain="[('active', '=', False)]"/>
<filter string="Expired Membership" name="membership_end_date"
domain="[('is_membership_expire', '=', True)]"/>
<group string="Group By">
<filter string="Membership Type" name="product_id" context="{'group_by': 'product_id'}"/>
<filter string="Branch" name="branch_id" context="{'group_by': 'branch_id'}"/>
</group>
<group name="other">
<field name="join_date"/>
<field name="memebership_end_date"/>
</group>
</group>
</page>
</xpath>
<xpath expr="//field[@name='mobile']" position="attributes">
<attribute name="required">True</attribute>
</xpath>
<xpath expr="//field[@name='email']" position="attributes">
<attribute name="required">True</attribute>
</xpath>
<xpath expr="//div[@name='button_box']" position="inside">
<button name="view_membership" type="object"
class="oe_stat_button"
icon="fa-vcard-o" attrs="{'invisible' : [('membership_count', '=', 0)]}">
<div class="o_stat_info">
<field name="membership_count" class="o_stat_value"/>
<span class="o_stat_text">Membership</span>
</div>
</button>
</xpath>
</field>
</record>
<!-- search -->
<record id="view_search_res_partner" model="ir.ui.view">
<field name="name">res.partner.search</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<search string="Res Partner Search">
<field name="name"/>
<field name="phone"/>
<field name="category_id"/>
<field name="identification_number"/>
<filter string="Archived" name="archived" domain="[('active', '=', False)]"/>
<filter string="Expired Membership" name="membership_end_date"
domain="['|',('state', '=', 'expire'),('memebership_end_date', '&lt;=',context_today().strftime('%Y-%m-%d'))]"/>
<group string="Group By">
<filter string="Membership Type" name="product_id" context="{'group_by': 'product_id'}"/>
<filter string="Branch" name="branch_id" context="{'group_by': 'branch_id'}"/>
</group>
</search>
</field>
</record>
<!--end -->
<!--Action-->
<record id="action_members" model="ir.actions.act_window">
<field name="name">Member</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="domain">[('is_member', '=', True)]</field>
<field name="context">{'default_is_member' : 1}</field>
<field name="view_mode">kanban,tree,activity,form</field>
<field name="search_view_id" ref="dev_membership.view_search_res_partner"/>
</search>
</field>
</record>
<!--end -->
<!--Action-->
<record id="action_members" model="ir.actions.act_window">
<field name="name">Member</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="domain">[('is_member', '=', True)]</field>
<field name="context">{'default_is_member' : 1}</field>
<field name="view_mode">kanban,tree,activity,form</field>
<field name="search_view_id" ref="dev_membership.view_search_res_partner"/>
<field name="view_ids" eval="[(5,0,0),
<field name="view_ids" eval="[(5,0,0),
(0,0,{'sequence' : 3, 'view_mode': 'kanban' , 'view_id' : ref('dev_membership.dev_res_partner_member_kanban_view')}),
(0,0,{'sequence' : 3, 'view_mode': 'tree' , 'view_id' : ref('dev_membership.view_res_partner_member_tree')})]"/>
</record>
</record>
<!--Menus-->
<menuitem name="Members"
id="menu_members"
parent="menu_membership_main"
action="action_members"
sequence="2"/>
</odoo>
<!--Menus-->
<menuitem name="Members"
id="menu_members"
parent="menu_membership_main"
action="action_members"
sequence="2"/>
</odoo>

View File

@ -30,7 +30,7 @@ class MembershipRefues(models.TransientModel):
self.env.user.name, record.reason_id.name)
if record.request_id:
record.request_id.cancel_reason_id.name = record.reason_id.name
record.request_id.cancel_reasone = record.reason_id.name
record.request_id.state = 'cancel'
record.request_id.message_post(body=body, subject=subject)
record.request_id.make_activity_group()

View File

@ -51,8 +51,20 @@ class RenewMembership(models.TransientModel):
'interval':self.product_id.interval or False,
'membership_fees':self.product_id.list_price or 0.0,
})
@api.constrains('membership_fees')
def _check_subscription_fee(self):
for record in self:
if record.membership_fees < record.product_id.list_price:
raise ValidationError(_('Membership fees cannot be less than the default value in Setting of membrship type.'))
@api.constrains('duration')
def _check_duration(self):
for record in self:
if record.duration < record.product_id.duration:
raise ValidationError(_('Duration cannot be less than the default value in Setting of membrship type.'))
def action_renew_membership(self):
mem_pool = self.env['dev.membership'].sudo()
new_membership = mem_pool.create({