Browse Source

[ADD] Initial Commit

pull/81/head
SHEREEF PT 8 years ago
parent
commit
516607cdea
  1. 20
      pos_claims/README.rst
  2. 24
      pos_claims/__init__.py
  3. 40
      pos_claims/__openerp__.py
  4. 24
      pos_claims/models/__init__.py
  5. 165
      pos_claims/models/pos_claim.py
  6. BIN
      pos_claims/static/description/banner.jpg
  7. BIN
      pos_claims/static/description/calender.png
  8. BIN
      pos_claims/static/description/claim.png
  9. BIN
      pos_claims/static/description/claim_state_change.png
  10. BIN
      pos_claims/static/description/email.png
  11. BIN
      pos_claims/static/description/icon.png
  12. 114
      pos_claims/static/description/index.html
  13. BIN
      pos_claims/static/description/interface_pos.png
  14. BIN
      pos_claims/static/description/pos_claims.png
  15. BIN
      pos_claims/static/description/pos_interface_order.png
  16. 184
      pos_claims/static/src/js/pos_claim.js
  17. 105
      pos_claims/static/src/xml/pos_claim.xml
  18. 13
      pos_claims/views/pos_claim_sequence.xml
  19. 10
      pos_claims/views/pos_claims_popup.xml
  20. 218
      pos_claims/views/pos_claims_views.xml

20
pos_claims/README.rst

@ -0,0 +1,20 @@
POS Claims v9
=============
This application allows you to track your customers/vendors pos claims and grievances.
Installation
============
Just select it from available modules to install it, there is no need to extra installations.
Configuration
=============
Nothing to configure.
Credits
=======
Developers: Jesni Banu & Saritha
Guidance: Nilmar Shereef @ cybrosys, shereef@cybrosys.in

24
pos_claims/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Cybrosys Technologies (<http://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import models

40
pos_claims/__openerp__.py

@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Cybrosys Technologies (<http://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': "POS Claims",
'version': '9.0.1.0.0',
'summary': """Manage your customer claims""",
'description': """ This application allows you to manage your customers claims.""",
'category': 'Point of sale',
'author': "Cybrosys Techno Solutions",
'website': "http://www.cybrosys.com",
'company': 'Cybrosys Techno Solutions',
'depends': ['base', 'point_of_sale'],
'data': ['views/pos_claims_views.xml', 'views/pos_claims_popup.xml', 'views/pos_claim_sequence.xml'],
'qweb': ['static/src/xml/pos_claim.xml'],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

24
pos_claims/models/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Cybrosys Technologies (<http://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import pos_claim

165
pos_claims/models/pos_claim.py

@ -0,0 +1,165 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Cybrosys Technologies (<http://www.cybrosys.com>)
# you can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# It is forbidden to publish, distribute, sublicense, or sell copies
# of the Software or modified copies of the Software.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import SUPERUSER_ID
from openerp import models, fields, api, _
class PosClaims(models.Model):
_name = 'pos.claims'
_description = "Claim"
_inherit = ['mail.thread']
name = fields.Many2one('pos.order', string='Claim Order', required=True)
ref_name = fields.Char(string="Claim Ticket", readonly=True, default=lambda self: _('New'))
claim_product = fields.Many2one('pos.order.line', string="Product",
domain="[('order_id', '=',name)]", required=True)
claim_qty = fields.Integer(string="Quantity")
claim_date = fields.Datetime(string='Claim Date', default=fields.Datetime.now, required=True)
session_id = fields.Many2one('pos.session', string='Session', related='name.session_id')
user_id = fields.Many2one('res.users', string="Assigned Person")
priority = fields.Selection([('0', 'Low'), ('1', 'Normal'), ('2', 'High')], 'Priority')
partner_id = fields.Many2one('res.partner', string='Partner', required=1)
partner_phone = fields.Char(string='Phone')
partner_email = fields.Char(string='Email', related='partner_id.email')
description = fields.Text(string='Description')
user_fault = fields.Char(string='Trouble Responsible')
cate_id = fields.Selection([('0', 'Factual Claims'), ('1', 'Value Claims'), ('2', 'Policy Claim')], 'Category Id',
)
date_action_next = fields.Datetime(string='Next Action Date')
action_next = fields.Char(string='Next Action')
resolution = fields.Text(string='Resolution')
cause = fields.Text(string='Root Cause')
type_action = fields.Selection([('correction', 'Corrective Action'),
('prevention', 'Preventive Action')], 'Action Type')
date_closed = fields.Datetime('Closed')
state = fields.Selection([
('new', 'New'),
('assigned', 'Assigned'),
('feedback', 'Feedback'),
('paid', 'Paid'),
('settle', 'Settled'),
('reject', 'Rejected'),
], default='new')
def create_from_ui(self, cr, uid, claim, context=None):
""" create claims from the point of sale ui. """
claim_id = self.create(cr, uid, claim, context=context)
return claim_id
@api.model
def create(self, vals):
if vals.get('ref_name', 'New') == 'New':
vals['ref_name'] = self.env['ir.sequence'].next_by_code('pos.claims') or 'New'
if vals.get('user_id'):
vals['state'] = 'assigned'
result = super(PosClaims, self).create(vals)
result.claim_ticket()
return result
@api.multi
def write(self, vals):
if vals.get('user_id'):
vals['state'] = 'assigned'
result = super(PosClaims, self).write(vals)
return result
@api.multi
def action_settle(self):
self.state = 'settle'
@api.multi
def action_reject(self):
self.state = 'reject'
@api.one
def claim_ticket(self):
su_id = self.env['res.partner'].browse(SUPERUSER_ID)
self.ensure_one()
ir_model_data = self.env['ir.model.data']
try:
template_id = ir_model_data.get_object_reference('pos_claims', 'email_template_edi_pos_ticket')[1]
except ValueError:
template_id = False
email_template_obj = self.env['mail.template'].browse(template_id)
if template_id:
values = email_template_obj.generate_email(self.id, fields=None)
values['email_from'] = su_id.email
values['email_to'] = self.partner_id.email
values['res_id'] = False
mail_mail_obj = self.env['mail.mail']
msg_id = mail_mail_obj.create(values)
if msg_id:
msg_id.send()
@api.multi
def action_sent(self):
self.ensure_one()
ir_model_data = self.env['ir.model.data']
try:
template_id = ir_model_data.get_object_reference('pos_claims', 'email_template_edi_pos_claims')[1]
except ValueError:
template_id = False
try:
compose_form_id = ir_model_data.get_object_reference('mail', 'email_compose_message_wizard_form')[1]
except ValueError:
compose_form_id = False
ctx = dict()
ctx.update({
'default_model': 'pos.claims',
'default_res_id': self.ids[0],
'default_use_template': bool(template_id),
'default_template_id': template_id,
'default_composition_mode': 'comment',
})
return {
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(compose_form_id, 'form')],
'view_id': compose_form_id,
'target': 'new',
'context': ctx,
}
class MailComposeMessage(models.TransientModel):
_inherit = 'mail.compose.message'
@api.multi
def send_mail(self, auto_commit=False):
if self._context.get('default_model') == 'pos.claims' and self._context.get('default_res_id'):
order = self.env['pos.claims'].browse([self._context['default_res_id']])
if order.state == 'assigned':
order.state = 'feedback'
order.sent = True
self = self.with_context(mail_post_autofollow=True)
return super(MailComposeMessage, self).send_mail(auto_commit=auto_commit)

BIN
pos_claims/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

BIN
pos_claims/static/description/calender.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
pos_claims/static/description/claim.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
pos_claims/static/description/claim_state_change.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
pos_claims/static/description/email.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

BIN
pos_claims/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

114
pos_claims/static/description/index.html

@ -0,0 +1,114 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">POS Claims</h2>
<h3 class="oe_slogan">Manage Customer Claims</h3>
<h4 class="oe_slogan">Cybrosys Technologies , www.cybrosys.com</h4>
<div>
<h4><p>Features:</p></h4>
<ul>
<div class="col-md-6">
&#9728;Easily create claims from POS interface.<br>
&#9728; Automatic stage changes for assignment of claims.<br>
&#9728; Email Notification.<br>
&#9728; Calender view.<br>
</div>
</ul>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot">
<img src="pos_claims.png">
</div>
</div>
<div class="oe_span12">
<p class='oe_mt32'><center>
This application allows you to manage your customers claims.
</center></p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Create Claims</h3>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="interface_pos.png">
</div>
</div>
<div class="oe_span6">
<p class='oe_mt32'>
Create claims easily from pos interface.Ticket is generated automatically and
it is send to corresponding user on creation of claims.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_space">
<h3 class="oe_slogan"> Automatic Stage Change</h3>
<div class="oe_span6">
<p class='oe_mt32'>
On assigning claim to responsible user,state of claim is changed.
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="claim_state_change.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Email Notification</h3>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="email.png">
</div>
</div>
<div class="oe_span6">
<p class='oe_mt32'>
An email is sent to corresponding customer
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_space">
<h3 class="oe_slogan"> Calender view</h3>
<div class="oe_span6">
<p class='oe_mt32'>
You can see all your next action on calender view
</p>
</div>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<img src="calender.png">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">View your claims</h3>
<div class="oe_span12">
<div class="oe_demo oe_picture oe_screenshot">
<img src="claim.png">
</div>
</div>
</div>
</section>

BIN
pos_claims/static/description/interface_pos.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

BIN
pos_claims/static/description/pos_claims.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
pos_claims/static/description/pos_interface_order.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

184
pos_claims/static/src/js/pos_claim.js

@ -0,0 +1,184 @@
odoo.define('point_of_sale.pos_claims', function (require) {
"use strict";
var chrome = require('point_of_sale.chrome');
var db = require('point_of_sale.DB');
var gui = require('point_of_sale.gui');
var models = require('point_of_sale.models');
var Model = require('web.DataModel');
var popup = require('point_of_sale.popups');
var Model = require('web.DataModel');
var core = require('web.core');
var QWeb = core.qweb;
var _t = core._t;
models.load_models({
model: 'pos.order',
fields: ['name', 'lines', 'partner_id'],
loaded: function(self,claim_orders){
self.order = [];
for (var i = 0; i < claim_orders.length; i++) {
self.order[i] = claim_orders[i];
}
},
});
models.load_models({
model: 'res.partner',
fields: ['name', 'id', 'email'],
loaded: function(self,claim_customers){
self.customer = [];
for (var i = 0; i < claim_customers.length; i++) {
self.customer[i] = claim_customers[i];
}
},
});
models.load_models({
model: 'pos.order.line',
fields: ['product_id','qty'],
loaded: function(self,claim_products){
self.order_line = [];
for (var i = 0; i < claim_products.length; i++) {
self.order_line[i] = claim_products[i];
}
},
});
chrome.Chrome.include({
events: {
"click .pos-claims": "on_click_pos_claims",
},
renderElement: function(){
var self = this;
return this._super();
},
on_click_pos_claims: function () {
var list =[];
var list1 =[];
for (var i = 0; i < this.pos.order.length; i++) {
var orders = this.pos.order[i];
if (orders.name){
list.push({
'label': orders.name,
'id':orders.id,
});
}
}
for (var i = 0; i < this.pos.customer.length; i++) {
var customers = this.pos.customer[i];
if (customers.name){
list1.push({
'label': customers.name,
'id':customers.id,
});
}
}
this.gui.show_popup('pos_claim',{orders:list, customers:list1});
},
});
var PosClaimWidget = popup.extend({
template:'PosClaimWidget',
events : {
'click .selected_order': 'on_click_select_order',
'click .selected_customer': 'on_click_select_customer',
'click .button.confirm': 'click_confirm',
'click .button.cancel': 'click_cancel',
},
show : function(options){
options = options || [];
var self = this;
this._super(options);
this.orders = options.orders || [];
this.customers = options.customers || [];
this.product = options.product || [];
this.renderElement();
},
on_click_select_order:function(){
var selected_order = $('.selected_order').val();
for (var i = 0; i < this.pos.order.length; i++) {
if (this.pos.order[i].id==selected_order){
var orders = this.pos.order[i];
}
}
if (orders) {
var x = document.getElementsByClassName('selected_customer');
x[0].selectedIndex = orders.partner_id[0];
if (orders.partner_id)
{
for (var i = 0; i < this.pos.customer.length; i++) {
if (this.pos.customer[i].id==orders.partner_id[0]){
var customers = this.pos.customer[i];
}
}
if (customers)
{
var x = document.getElementsByClassName('select_email');
x[0].value = customers.email;
}
}
}
var product = [];
if (orders)
{
for (var i = 0; i < this.pos.order_line.length; i++){
for (var j = 0; j < orders.lines.length; j++){
if (this.pos.order_line[i].id == orders.lines[j]){
var product_line = this.pos.order_line[i];
if (product_line.product_id){
product.push({
'label': product_line.product_id[1],
'id':product_line.id,
});
}
}
}
}
this.$('.selected_product').html(QWeb.render('PosClaimProductWidget',{product:product}));
}
},
on_click_select_customer:function() {
var selected_customer = $('.selected_customer').val();
for (var i = 0; i < this.pos.customer.length; i++) {
if (this.pos.customer[i].id==selected_customer){
var customers = this.pos.customer[i];
}
}
if (customers)
{
var x = document.getElementsByClassName('select_email');
x[0].value = customers.email;
}
},
click_confirm: function(){
var self = this;
var fields = {};
this.$('.popup .detail').each(function(idx,el){
fields[el.name] = el.value;
});
if (fields.partner_id && fields.claim_product) {
new Model('pos.claims').call('create_from_ui', [fields]);
this.gui.close_popup();
}
else{
alert('You need to specify the Product and Customer')
}
},
click_cancel: function(){
this.gui.close_popup();
if (this.options.cancel) {
this.options.cancel.call(this);
}
},
renderElement: function(){
var self = this;
return this._super();
},
});
gui.define_popup({name:'pos_claim', widget: PosClaimWidget});
});

105
pos_claims/static/src/xml/pos_claim.xml

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<template id="template" xml:space="preserve">
<t t-extend="Chrome">
<t t-jquery="div.pos-rightheader" t-operation="append">
<div class="oe_status">
<a title="Claims" href="#">
<i class="fa fa-exclamation-triangle pos-claims"/>
</a>
</div>
</t>
</t>
<t t-name="PosClaimWidget">
<div class="modal-dialog">
<div class="popup popup-pos_claim">
<p class="title">
<a >Pos Claims</a>
</p>
<div style="text-align: left !important;padding-left: 70px;padding-top: 7px;border: solid;">
<table>
<tr>
<td>
<label>Select Order:</label>
</td>
<td style="padding-left: 21px;">
<select class="selected_order detail" name="name">
<option/>
<t t-foreach="widget.orders || []" t-as="orders">
<option t-att-value="orders.id" t-attf-class="select_order">
<t t-esc="orders.label" />
</option>
</t>
</select>
</td>
</tr>
<tr>
<td>
<label>Customer:</label>
</td>
<td style="padding-left: 21px;">
<select class="selected_customer detail" name="partner_id">
<option/>
<t t-foreach="widget.customers || []" t-as="customers">
<option t-att-value="customers.id" t-attf-class="select_customer">
<t t-esc="customers.label" />
</option>
</t>
</select>
</td>
</tr>
<tr>
<td>
<label>Email:</label>
</td>
<td style="padding-left: 21px;">
<input type='text' class="select_email detail" name="partner_email"/>
</td>
</tr>
</table>
<div class="selected_product" style="align:left;">
</div>
<div class="selected_quantity" style="align:left;">
</div>
<div class="footer centered">
<div class="button cancel">
Cancel
</div>
<div class="button confirm">
Ok
</div>
</div>
</div>
</div>
</div>
</t>
<t t-name="PosClaimProductWidget">
<table>
<tr>
<td>
<label>Select Product:</label>
</td>
<td>
<select class="select_product detail" name="claim_product">
<option/>
<t t-foreach="product || []" t-as="products">
<option t-att-value="products.id" t-attf-class="select_pdt">
<t t-esc="products.label" />
</option>
</t>
</select>
</td>
</tr>
<tr>
<td>
<label>Description :</label>
</td>
<td>
<input type='text' class="select_description detail" name="description"/>
</td>
</tr>
</table>
</t>
</template>

13
pos_claims/views/pos_claim_sequence.xml

@ -0,0 +1,13 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.sequence" id="seq_pos_claim">
<field name="name">POS Claims</field>
<field name="code">pos.claims</field>
<field name="prefix">Ticket/</field>
<field name="number_next">001</field>
<field name="number_increment">1</field>
<field name="padding">3</field>
</record>
</data>
</openerp>

10
pos_claims/views/pos_claims_popup.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<template id="pos_claims" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<script type="text/javascript" src="/pos_claims/static/src/js/pos_claim.js"/>
</xpath>
</template>
</data>
</openerp>

218
pos_claims/views/pos_claims_views.xml

@ -0,0 +1,218 @@
<?xml version="1.0"?>
<openerp>
<data>
<!-- Form view of pos claim -->
<record id="pos_claim_category_form" model="ir.ui.view">
<field name="name">Claims</field>
<field name="model">pos.claims</field>
<field name="arch" type="xml">
<form string="ClaimS">
<header>
<button name="action_sent"
string="Send Mail"
type="object"
state="assigned"
class="oe_highlight"
context="{'send_rfq':True }"
attrs = "{'invisible': [('state', 'in', ('new','settle','feedback','paid','reject'))]}" />
<button name="action_settle"
string="Accept"
type="object"
state="feedback"
class="oe_highlight"
attrs = "{'invisible': [('state', 'in', ('new','settle','paid','reject','assigned'))]}"/>
<button name="action_reject"
string="Cancel"
type="object"
state="feedback"
class="oe_highlight"
attrs = "{'invisible': [('state', 'in', ('new','settle','paid','reject','assigned'))]}"/>
<field name="state"
widget="statusbar"
statusbar_visible="new,assigned,feedback,settle,reject" clickable="1"/>
</header>
<sheet>
<div class="oe_title">
<h1>
<field name="ref_name" readonly="1"/>
</h1>
</div>
<group>
<group>
<field name="name" style="width:40%%" options="{'no_create': True}"/>
<field name="claim_date"/>
</group>
<group colspan="4" col="4">
<field name="user_id" style="width:70%%"/>
<field name="priority" widget="priority"/>
</group>
</group>
<notebook>
<page string="Claim Description">
<group>
<group>
<separator colspan="2" string="Product Details"/>
<field name="claim_product" style="width:60%%" options="{'no_create': True}"/>
<field name="claim_qty" style="width:60%%"/>
<field name="session_id" style="width:60%%"/>
</group>
<group>
</group>
</group>
<group>
<group>
<separator colspan="2" string="Claim Reporter"/>
<field name="partner_id"/>
<field name="partner_phone"/>
<field name="partner_email"/>
</group>
<group>
</group>
</group>
<group colspan="2" col="2">
<separator colspan="2" string="Responsibilities"/>
<field name="user_fault"/>
<field name="cate_id" style="width:25%%" options="{'no_create': True, 'no_open': True}"/>
</group>
<separator colspan="4" string="Claim/Action Description" groups="base.group_user"/>
<field name="description" colspan="4" nolabel="1"/>
</page>
<page string="Follow Up" groups="base.group_user">
<group colspan="2" col="2">
<separator colspan="2" string="Actions"/>
<field name="date_action_next"/>
<field name="action_next"/>
</group>
<group colspan="2" col="2">
<separator colspan="2" string="Root Causes"/>
<field name="cause" colspan="2" nolabel="1"/>
</group>
<group colspan="2" col="2">
<separator colspan="2" string="Resolution Actions"/>
<field name="type_action" style="width:25%%"/>
<field name="resolution" colspan="2" nolabel="1" placeholder="Action Description..."/>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<!-- Tree view of pos claim -->
<record model="ir.ui.view" id="pos_case_claims_tree_view">
<field name="name">Claims</field>
<field name="model">pos.claims</field>
<field name="arch" type="xml">
<tree string="Claims">
<field name="ref_name" string="Ticket Number"/>
<field name="name"/>
<field name="claim_product"/>
<field name="claim_qty"/>
<field name="partner_id"/>
<field name="session_id"/>
<field name="claim_date"/>
<field name="date_action_next"/>
<field name="action_next"/>
<field name="cate_id" string="Type"/>
<field name="state"/>
</tree>
</field>
</record>
<!-- Calender view of pos claim -->
<record model="ir.ui.view" id="pos_case_claims_calendar_view">
<field name="name">Claims</field>
<field name="model">pos.claims</field>
<field name="arch" type="xml">
<calendar string="Claims" date_start="date_action_next" color="user_id">
<field name="name"/>
</calendar>
</field>
</record>
<record id="pos_claim_cate_action" model="ir.actions.act_window">
<field name="name">Claims</field>
<field name="res_model">pos.claims</field>
<field name="view_mode">tree,form,calendar</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a claim category.
</p><p>
Create claim categories to better manage and classify your
claims. Some example of claims can be: preventive action,
corrective action.
</p>
</field>
</record>
<!--Email template -->
<record id="email_template_edi_pos_ticket" model="mail.template">
<field name="name">Pos Ticket</field>
<field name="email_from">${(object.user_id.email)}</field>
<field name="email_to">${object.partner_id.id}</field>
<field name="partner_to">${object.partner_id.id}</field>
<field name="subject">Pos Ticket</field>
<field name="model_id" ref="pos_claims.model_pos_claims" />
<field name="auto_delete" eval="True" />
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
<p>Dear ${object.partner_id.name},</p>
<p>
Your claim is reported successfully and your ticket ${object.ref_name} is now on hold.
</p>
<p>
We will be in contact with you in the coming days to make our best attempt in regaining your
confidence in our company.
</p>
<p>
Please accept our sincerest apology for any trouble or inconvenience we have caused you.
</p>
<p>Thank you,</p>
</div>
]]>
</field>
</record>
<record id="email_template_edi_pos_claims" model="mail.template">
<field name="name">Pos Claims</field>
<field name="email_from">${(object.user_id.email}</field>
<field name="email_to">${object.partner_id.id}</field>
<field name="partner_to">${object.partner_id.id}</field>
<field name="subject">Pos Claims</field>
<field name="model_id" ref="pos_claims.model_pos_claims" />
<field name="auto_delete" eval="True" />
<field name="body_html"><![CDATA[
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
<p>Dear ${object.partner_id.name},</p>
<p> Thank you for taking the time to communicate to us why our {product / service } did not meet
your expectations. We have every desire to address your needs and provide the best solution
available to resolve your issue as soon as possible.</p>
<p> We will be in contact with you in the coming days to make our best attempt in regaining your
confidence in our company. In addition, we will further evaluate how we can prevent this problem
from occurring again in the future.</p>
<p>Please accept our sincerest apology for any trouble or inconvenience we have caused you. Again,
we highly appreciate your feedback as it will assist us in becoming better at what we do.
As with any business like ours, the greatest advertising we can have is word of mouth from a
satisfied customer. It’s our goal to retain you as a satisfied customer and will hope to
serve you again in the future.
<p>Thank you,</p>
</div>
]]>
</field>
</record>
<menuitem name="Pos Claims" id="menu_point_of_sale_claim" parent="point_of_sale.menu_point_root" sequence="22"/>
<menuitem name="Pos Claims" parent="menu_point_of_sale_claim" id="point_of_sale_claim"
action="pos_claim_cate_action" sequence="10" />
</data>
</openerp>
Loading…
Cancel
Save