Merge pull request #4078 from expsa/younes_dev_odex25_sales

Improve: membership card printing
This commit is contained in:
kchyounes19 2025-08-03 09:53:04 +01:00 committed by GitHub
commit 6052a29931
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 64 additions and 39 deletions

View File

@ -37,6 +37,7 @@
'data': [
'report/membership_card_reports.xml',
'data/ir_actions_server_data.xml',
'views/product_template.xml',
],
'images': ['static/description/banner.png'],
'license': 'AGPL-3',

View File

@ -20,3 +20,4 @@
#
###############################################################################
from . import res_partner
from . import product_template

View File

@ -0,0 +1,11 @@
# -*- coding: utf-8 -*-
from odoo import fields,api, models,_
class ProductTemplate(models.Model):
_inherit = "product.template"
card_background_image = fields.Binary(string="Background Image")

View File

@ -44,15 +44,16 @@ class ResPartner(models.Model):
if self.is_member:
data = {
'name': partner_id.name,
'product_id': partner_id.product_id.name,
'membrship_level':partner_id.membrship_level.name,
'membrship_level_color':partner_id.membrship_level.color,
'membrship_no':partner_id.membrship_no,
'image': partner_id.image_1920,
'start_date': partner_id.join_date,
'end_date': partner_id.memebership_end_date,
'company_name': company_id.name,
}
if partner_id.product_id.card_background_image:
param_obj = self.env['ir.config_parameter'].sudo()
base_url = param_obj.get_param('web.base.url')
image_url = base_url + '/web/image?' + 'model=product.product&id=' + str(partner_id.product_id.id) + '&field=card_background_image'
data['background_src'] = image_url or ''
return self.env.ref('membership_card_odoo.action_membership'
'_card').report_action(None, data=data)
raise ValidationError(

View File

@ -5,16 +5,16 @@
<field name="name">Custom Paper</field>
<field name="default" eval="True"/>
<field name="format">custom</field>
<field name="page_height">110</field>
<field name="page_width">70</field>
<field name="page_height">85</field>
<field name="page_width">54</field>
<field name="orientation">Landscape</field>
<field name="margin_top">5.00</field>
<field name="margin_bottom">5.00</field>
<field name="margin_left">7.0</field>
<field name="margin_right">7.0</field>
<field name="margin_top">0</field>
<field name="margin_bottom">0</field>
<field name="margin_left">0</field>
<field name="margin_right">0</field>
<field name="header_line" eval="False"/>
<field name="header_spacing">35</field>
<field name="dpi">125</field>
<field name="header_spacing">0</field>
<field name="dpi">300</field>
</record>
<!--Report Action-->
<record id="action_membership_card" model="ir.actions.report">
@ -29,7 +29,6 @@
<!-- Template to print Pdf. -->
<template id="print_member_ship_card">
<t t-call="web.html_container">
<t t-set="company" t-value="user.company_id"/>
<!-- Header -->
<style>
@font-face {font-family: "Sakkal Majalla"; src:
@ -44,33 +43,28 @@
font-family: 'Sakkal Majalla'!important;
}
</style>
<div style="font-family:'Sakkal Majalla'!important;" id="font" class="page content">
<div t-attf-style="background-color:{{membrship_level_color }};">
<div style="font-family:'Sakkal Majalla'!important;" class="content">
<center>
<h2><t t-esc="company.name"/></h2>
</center>
<center>
<img t-if="company.logo" t-att-src="image_data_uri(company.logo)" height="50" style="max-height: 80px;" alt="Logo"/>
</center>
</div><br/>
<!-- Content -->
<div style="font-family:'Sakkal Majalla'!important;" class="row mt32">
<div style="width:20%;margin-top:10px;float:right">
<img t-if="image" style="width: 120px; border-radius: 5px;"
t-attf-src="data:image/*;base64,{{image}}"/>
<div t-attf-style="background-image: url('#{background_src}');background-size: 100% 100%; background-repeat: no-repeat; background-position: 0 0; height: 280mm; width: 450mm;"
style="font-family:'Sakkal Majalla'!important;" id="font" class="page content">
<div>
<div t-if="name"
style="position: absolute; top: 70mm; right: 160mm; font-family:'Sakkal Majalla'!important; font-size: 80px; font-weight: bold; text-align: right; direction: rtl;">
<t t-esc="name"/>
</div>
<div style="width:70%;font-family:'Sakkal Majalla'!important;';margin-top:5px;float:left">
<p dir="rtl" t-if="name"><strong>الاسم:</strong> <t t-esc="name"/></p>
<p dir="rtl" t-if="membrship_no"><strong>رقم العضوية:</strong> <t t-esc="membrship_no"/></p>
<p dir="rtl" t-if="product_id"><strong> نوع العضوية:</strong> <t t-esc="product_id"/></p>
<p dir="rtl" t-if="membrship_level"><strong> العضوية:</strong> <t t-esc="membrship_level"/></p>
<p dir="rtl" t-if="end_date"><strong>تاريخ الانتهاء:</strong> <t t-esc="end_date"/></p>
<div t-if="membrship_no"
style="position: absolute; top: 95mm; right: 160mm; font-family:'Sakkal Majalla'!important; font-size: 80px; font-weight: bold; text-align: right; direction: rtl;">
<t t-esc="membrship_no"/>
</div>
<div t-if="start_date"
style="position: absolute; top: 120mm; right: 160mm; font-family:'Sakkal Majalla'!important; font-size: 80px; font-weight: bold; text-align: right; direction: rtl;">
<t t-esc="start_date"/>
</div>
<div t-if="end_date"
style="position: absolute; top: 145mm; right: 160mm; font-family:'Sakkal Majalla'!important; font-size: 80px; font-weight: bold; text-align: right; direction: rtl;">
<t t-esc="end_date"/>
</div>
</div>
</div>
</t>
</template>
</odoo>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="inherit_form_membership_product_background" model="ir.ui.view">
<field name="name">view.membership.product.form.inherit.background.image</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="dev_membership.form_membership_product"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('oe_title')]" position="before">
<field name="card_background_image" widget="image"
options="{'zoom': true,'size': [120, 120]}"
class="oe_avatar"/>
</xpath>
</field>
</record>
</odoo>