diff --git a/odex25_purchase/odex25_annual_purchase/data/new_mail.xml b/odex25_purchase/odex25_annual_purchase/data/new_mail.xml
index 0efb10082..e7df48d8f 100644
--- a/odex25_purchase/odex25_annual_purchase/data/new_mail.xml
+++ b/odex25_purchase/odex25_annual_purchase/data/new_mail.xml
@@ -1,33 +1,69 @@
-
+
Purchase Order: Send RFQ
- طلب عرض سعر ${object.name or ''}
+ Request for Quotation ${object.name or ''}
-
-
- السادة ${object.vendor_id.name}
+
+
+ Dear ${object.vendor_id.name}
% if object.vendor_id.parent_id:
(${object.vendor_id.parent_id.name})
% endif
- يُرفق إليكم طلب عرض السعر الخاص بالطلب رقم ${object.name}
+ Please find attached the request for quotation for order ${object.name}
% if object.partner_ref:
- بالمرجع: ${object.partner_ref}
+ Reference: ${object.partner_ref}
% endif
- من ${object.company_id.name}.
+ from ${object.company_id.name}.
- في حال وجود أي استفسارات، لا تترددوا في التواصل معنا بالرد على هذا الايميل .
+ If you have any questions, please feel free to reply to this email.
- مع أطيب التحيات،
+ Best regards,
-
+
+
${(object.name or '').replace('/','_')}
- ar
+ ${object.vendor_id.lang or object.partner_id.lang or 'en_US'}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po b/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po
index 58904ccf6..30fb763e8 100644
--- a/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po
+++ b/odex25_purchase/odex25_annual_purchase/i18n/ar_001.po
@@ -1292,3 +1292,49 @@ msgstr "إعادة إرسال طلب عرض سعر"
+#. module: odex25_annual_purchase
+#: model:mail.template,body_html:odex25_annual_purchase.email_template_annual_rfq_new
+msgid ""
+"
\n"
+"
\n"
+" Dear ${object.vendor_id.name}\n"
+" % if object.vendor_id.parent_id:\n"
+" (${object.vendor_id.parent_id.name})\n"
+" % endif\n"
+"
\n"
+" Please find attached the request for quotation for order ${object.name}\n"
+" % if object.partner_ref:\n"
+" Reference: ${object.partner_ref}\n"
+" % endif\n"
+" from ${object.company_id.name}.\n"
+"
\n"
+" If you have any questions, please feel free to reply to this email.\n"
+"
\n"
+" Best regards,\n"
+"
\n"
+"
\n"
+" "
+msgstr ""
+"\n"
+"
\n"
+" السادة/ ${object.vendor_id.name}\n"
+" % if object.vendor_id.parent_id:\n"
+" (${object.vendor_id.parent_id.name})\n"
+" % endif\n"
+"
\n"
+" نرجو منكم التكرّم بالاطلاع على طلب عرض السعر المرفق الخاص بالطلب رقم ${object.name}\n"
+" % if object.partner_ref:\n"
+" (المرجع: ${object.partner_ref})\n"
+" % endif\n"
+" والتابع لـ ${object.company_id.name}.\n"
+"
\n"
+" في حال وجود أي استفسارات، يُرجى عدم التردد في التواصل معنا عبر الرد على هذا البريد.\n"
+"
\n"
+" مع خالص التحية والتقدير،\n"
+"
\n"
+"
"
+
+#. module: odex25_annual_purchase
+#: model:mail.template,subject:odex25_annual_purchase.email_template_annual_rfq_new
+msgid "Request for Quotation ${object.name or ''}"
+msgstr "طلب عرض سعر ${object.name or ''}"
diff --git a/odex25_purchase/odex25_annual_purchase/models/annual_rfq.py b/odex25_purchase/odex25_annual_purchase/models/annual_rfq.py
index be4f50d4c..ae53e3e1a 100644
--- a/odex25_purchase/odex25_annual_purchase/models/annual_rfq.py
+++ b/odex25_purchase/odex25_annual_purchase/models/annual_rfq.py
@@ -76,6 +76,23 @@ class PurchaseRFQ(models.Model):
string="Technical Attachments",
help="Upload technical offer documents here"
)
+ @api.model
+ def _get_picking_type(self, company_id):
+ picking_type = self.env['stock.picking.type'].search([('code', '=', 'incoming'), ('warehouse_id.company_id', '=', company_id)])
+ if not picking_type:
+ picking_type = self.env['stock.picking.type'].search([('code', '=', 'incoming'), ('warehouse_id', '=', False)])
+ return picking_type[:1]
+
+ @api.model
+ def _default_picking_type(self):
+ return self._get_picking_type(self.env.context.get('company_id') or self.env.company.id)
+
+ dest_address_id = fields.Many2one('res.partner', domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]", string='Drop Ship Address',
+ help="Put an address if you want to deliver directly from the vendor to the customer. "
+ "Otherwise, keep empty to deliver to your own company.")
+ picking_type_id = fields.Many2one('stock.picking.type', 'Deliver To', required=True, default=_default_picking_type, domain="['|', ('warehouse_id', '=', False), ('warehouse_id.company_id', '=', company_id)]",
+ help="This will determine operation type of incoming shipment")
+
@api.depends('committe_members')
def _compute_no_approve(self):
for rec in self:
@@ -90,7 +107,22 @@ class PurchaseRFQ(models.Model):
and rec.purchase_commitee
and rec.state in ('committee', 'draft', 'sent')
)
-
+ @api.model
+ def default_get(self, fields):
+ res = super(PurchaseRFQ, self).default_get(fields)
+ if self._context.get('default_source_request_ref'):
+ request = self.env['odx.annual.request'].browse(self._context['default_source_request_ref'])
+ lines = []
+ for l in request.line_ids:
+ lines.append((0, 0, {
+ 'product_id': l.product_id.id,
+ 'description': l.description or l.technical_spec or l.product_id.display_name,
+ 'quantity': l.quantity or 1.0,
+ 'uom_id': (l.uom_id and l.uom_id.id) or l.product_id.uom_po_id.id,
+ 'price_unit': l.price_unit or 0.0,
+ }))
+ res['line_ids'] = lines
+ return res
@api.model
def copy(self, default=None):
@@ -133,25 +165,31 @@ class PurchaseRFQ(models.Model):
def action_refuse_rfq(self):
self.ensure_one()
- member = self.committe_members.filtered(lambda m: m.user_id == self.env.user)
- if member and member.refused:
- raise UserError(_("You have already refused this RFQ before."))
+ member = self.env['committe.member'].search([
+ ('rfq_id', '=', self.id),
+ ('user_id', '=', self.env.user.id),
+ ], limit=1)
+ vals = {
+ 'refused': True,
+ 'select': False,
+ 'selection_reason': False,
+ }
+ if member:
+ member.write(vals)
else:
self.env['committe.member'].create({
'rfq_id': self.id,
'user_id': self.env.user.id,
- 'refused': True,
- 'select': False
+ **vals
})
- self._check_committee_rejection()
return {
'type': 'ir.actions.act_window',
- 'name': _('Select Reason'),
+ 'name': _('Refuse Reason'),
'res_model': 'refuse.reason.rfq',
'view_mode': 'form',
'target': 'new',
@@ -160,6 +198,35 @@ class PurchaseRFQ(models.Model):
}
}
+ # def action_refuse_rfq(self):
+ # self.ensure_one()
+ # member = self.committe_members.filtered(lambda m: m.user_id == self.env.user)
+ #
+ # if member and member.refused:
+ # raise UserError(_("You have already refused this RFQ before."))
+ #
+ #
+ # else:
+ # self.env['committe.member'].create({
+ # 'rfq_id': self.id,
+ # 'user_id': self.env.user.id,
+ # 'refused': True,
+ # 'select': False
+ # })
+ #
+ # self._check_committee_rejection()
+ #
+ # return {
+ # 'type': 'ir.actions.act_window',
+ # 'name': _('Select Reason'),
+ # 'res_model': 'refuse.reason.rfq',
+ # 'view_mode': 'form',
+ # 'target': 'new',
+ # 'context': {
+ # 'default_rfq_id': self.id
+ # }
+ # }
+
def _check_committee_rejection(self):
@@ -250,7 +317,7 @@ class PurchaseRFQ(models.Model):
'default_use_template': bool(template),
'default_template_id': template.id if template else False,
'default_composition_mode': 'comment',
- 'custom_layout': "mail.mail_notification_paynow",
+ # 'custom_layout': "mail.mail_notification_paynow",
'force_email': True,
'mail_post_autofollow': True,
diff --git a/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml b/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml
index 54dae2245..3eeb63532 100644
--- a/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml
+++ b/odex25_purchase/odex25_annual_purchase/views/annual_request_views.xml
@@ -76,6 +76,8 @@
+
+
@@ -84,8 +86,6 @@
-
-
diff --git a/odex25_purchase/odex25_annual_purchase/views/annual_rfq_views.xml b/odex25_purchase/odex25_annual_purchase/views/annual_rfq_views.xml
index 1c630c7be..88f36cfe1 100644
--- a/odex25_purchase/odex25_annual_purchase/views/annual_rfq_views.xml
+++ b/odex25_purchase/odex25_annual_purchase/views/annual_rfq_views.xml
@@ -131,6 +131,15 @@
+
+
+
+
+
@@ -166,15 +175,8 @@
-
-
-
-
-
-
-
+
+
diff --git a/odex25_purchase/odex25_annual_purchase/views/report_annual_rfq.xml b/odex25_purchase/odex25_annual_purchase/views/report_annual_rfq.xml
index 92ec1d1b1..ec25dabd1 100644
--- a/odex25_purchase/odex25_annual_purchase/views/report_annual_rfq.xml
+++ b/odex25_purchase/odex25_annual_purchase/views/report_annual_rfq.xml
@@ -2,77 +2,144 @@
+
-
-
-
- المورد Vendor
-
- :
-
+
+
+
-
-
-
-
الشركة
-
Company
+
+
-
-
-
-
-
-
+
- طلب عرض سعر
- #
+
+ :
+
+
+ |
+
+
+
+ طلب عرض سعر
+
+ #
+
+ |
+
+
+
+ المورد
+ Vendor
+
+
+
+
+ :
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
مندوب المشتريات
+
Purchase Representative:
+
+
+
+
+
- |
+ |
item
- المنتج |
-
+ المنتج
+ |
+
+
Description
- الوصف |
-
+ الوصف
+ |
+
+
Quantity
- الكمية |
+ الكمية
+
-
-
-
- |
-
- |
-
-
- |
-
-
- |
+
+
+
+ |
+
+ |
+
+
+
+ |
+
+
+
+ |
-
-
• شروط وأحكام
+
+
• شروط وأحكام
+
+
+
+
+
+ عنوان الشحن
+ Shipping address
+
+
+
+
+ عنوان الشحن
+ Shipping address
+
+
+
+
+
+
+
-
+
+