Reference for #6
This commit is contained in:
parent
e608da1fc9
commit
f7db2aebc9
Binary file not shown.
|
|
@ -11,7 +11,7 @@
|
|||
<field name="location"/>
|
||||
<field name="products_interested" string="Products" widget="many2many_tags" options="{'color_field': 'color'}"/>
|
||||
<field name="project_name"/>
|
||||
<field name="lead_generated_by"/>
|
||||
<field name="lead_generated_by" string="Lead Generated By"/>
|
||||
<!-- <field name="entry_date" string="Lead Generated On"/> -->
|
||||
<field name="move_div_display" widget="boolean_toggle" readonly="1"/>
|
||||
</tree>
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -55,6 +55,7 @@ access_ir_act_window_sales_user,Access Action Window for Sales Users,base.model_
|
|||
access_ir_act_window_healthcare_user,Access Action Window for Health Care Users,base.model_ir_actions_act_window,sos_inventory.sos_healthcare_user,1,0,0,0
|
||||
access_ir_act_window_sos_inside_sales_user,Access Action Window for Inside sales Users,base.model_ir_actions_act_window,sos_inventory.sos_inside_sales_user,1,0,0,0
|
||||
access_ir_act_window_hr_user,Access Action Window for Human Care Resources Users,base.model_ir_actions_act_window,sos_inventory.sos_hr_user,1,0,0,0
|
||||
access_ir_act_window_sos_marketing_user,Access Action Window for Marketing Users,base.model_ir_actions_act_window,sos_inventory.sos_marketing_user,1,0,0,0
|
||||
access_sos_return_fir,sos_return_fir access,model_sos_return_fir,base.group_user,1,1,1,1
|
||||
access_sos_return_fir_line,sos_return_fir_line access,model_sos_return_fir_line,base.group_user,1,1,1,1
|
||||
access_sos_return_calibration_devices_fir,sos_return_calibration_devices_fir access,model_sos_return_calibration_devices_fir,base.group_user,1,1,1,1
|
||||
|
|
|
|||
|
|
|
@ -41,9 +41,21 @@ class sos_marketing(models.Model):
|
|||
cc_mail = fields.Many2one('res.users',string="CC to", domain=lambda self: [('groups_id', 'in', self.env.ref('sos_inventory.sos_sales_user').ids + self.env.ref('sos_inventory.sos_inside_sales_user').ids)])
|
||||
move_div_display = fields.Boolean(default=False,string="Moved to Sales")
|
||||
moved_on = fields.Date(string="Moved On")
|
||||
source = fields.Selection(
|
||||
[
|
||||
('Expo', 'Expo'),
|
||||
('Conference', 'Conference'),
|
||||
('LinkedIn Groups', 'LinkedIn Groups'),
|
||||
('LinkedIn Poll', 'LinkedIn Poll'),
|
||||
('Direct Company', 'Direct Company'),
|
||||
('Expo [Paricipated]', 'Expo [Paricipated]')
|
||||
|
||||
],
|
||||
string="Source",default="Expo")
|
||||
@api.onchange('expo_option')
|
||||
def _onchange_expo(self):
|
||||
if self.expo_option:
|
||||
self.source = "Expo"
|
||||
self.conference_option = False
|
||||
self.linkedin_groups_option = False
|
||||
self.linkedin_poll_option = False
|
||||
|
|
@ -53,6 +65,7 @@ class sos_marketing(models.Model):
|
|||
@api.onchange('conference_option')
|
||||
def _onchange_conference(self):
|
||||
if self.conference_option:
|
||||
self.source = "Conference"
|
||||
self.expo_option = False
|
||||
self.linkedin_groups_option = False
|
||||
self.linkedin_poll_option = False
|
||||
|
|
@ -62,6 +75,7 @@ class sos_marketing(models.Model):
|
|||
@api.onchange('linkedin_groups_option')
|
||||
def _onchange_linkedin_groups(self):
|
||||
if self.linkedin_groups_option:
|
||||
self.source = "LinkedIn Groups"
|
||||
self.expo_option = False
|
||||
self.conference_option = False
|
||||
self.linkedin_poll_option = False
|
||||
|
|
@ -71,6 +85,7 @@ class sos_marketing(models.Model):
|
|||
@api.onchange('linkedin_poll_option')
|
||||
def _onchange_linkedin_poll(self):
|
||||
if self.linkedin_poll_option:
|
||||
self.source = "LinkedIn Poll"
|
||||
self.expo_option = False
|
||||
self.conference_option = False
|
||||
self.linkedin_groups_option = False
|
||||
|
|
@ -80,6 +95,7 @@ class sos_marketing(models.Model):
|
|||
@api.onchange('direct_company')
|
||||
def _onchange_direct_company(self):
|
||||
if self.direct_company:
|
||||
self.source = "Direct Company"
|
||||
self.expo_option = False
|
||||
self.conference_option = False
|
||||
self.linkedin_groups_option = False
|
||||
|
|
@ -89,6 +105,7 @@ class sos_marketing(models.Model):
|
|||
@api.onchange('expo_participated_option')
|
||||
def _onchange_expo_participated(self):
|
||||
if self.expo_participated_option:
|
||||
self.source = "Expo [Paricipated]"
|
||||
self.expo_option = False
|
||||
self.conference_option = False
|
||||
self.linkedin_groups_option = False
|
||||
|
|
|
|||
|
|
@ -7,7 +7,25 @@
|
|||
<field name="view_mode">tree,form,kanban</field>
|
||||
</record>
|
||||
|
||||
<record id="sos_marketing_leads_view_panel" model="ir.ui.view">
|
||||
<field name="name">sos_marketing_leads.search</field>
|
||||
<field name="model">sos_marketing_leads</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
|
||||
<searchpanel>
|
||||
|
||||
<field name="source" string="Source" icon="fa-list-ul" enable_counters="1"/>
|
||||
|
||||
</searchpanel>
|
||||
<!-- Add fields to search on -->
|
||||
<field name="company_name" string="Company Name"/>
|
||||
|
||||
|
||||
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sos_marketing_leads_view_tree" model="ir.ui.view">
|
||||
<field name="name">sos_marketing_leads.view.tree</field>
|
||||
|
|
@ -16,6 +34,7 @@
|
|||
<tree>
|
||||
|
||||
<field name="company_name"/>
|
||||
<field name="source"/>
|
||||
|
||||
|
||||
|
||||
|
|
@ -55,6 +74,7 @@
|
|||
</group>
|
||||
<!-- Second Column -->
|
||||
<group>
|
||||
<field name="source" invisible="1"/>
|
||||
<field name="website_url"/>
|
||||
<field name="location"/>
|
||||
</group>
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -17,6 +17,7 @@ class Battery_Installation_Requirement(models.Model):
|
|||
number_of_strings = fields.Integer(string="Number of Strings")
|
||||
number_of_ups = fields.Integer(string="Number of UPS",store=True)
|
||||
ups_rating_kva = fields.Integer(string="UPS Rating (KVA)")
|
||||
no_of_electrical_panel = fields.Integer(string="No of Electrical Panel")
|
||||
battery_capacity_ah = fields.Integer(string="Battery Capacity (AH)")
|
||||
products = fields.Selection([
|
||||
('BHMS 1.2V', 'BHMS 1.2V'),
|
||||
|
|
@ -69,13 +70,19 @@ class Battery_Installation_Requirement(models.Model):
|
|||
#CE Team Fields
|
||||
engineers_nos=fields.Integer(string="No of engineers required")
|
||||
no_of_days=fields.Integer(string="No of days")
|
||||
mode_of_transport = fields.Selection([('car','🚗 Car'),('bus','🚌 Bus'),('train','🚂 Train'),('flight','🛩️ Flight')],string='Mode of Transport',default="train")
|
||||
|
||||
extra_cost_line_ids = fields.One2many('sos_extra_cost_lines', 'ref_id',copy=True)
|
||||
transport_expense = fields.Monetary(readonly=False,string="Transport", compute='_compute_transport_expense', store=True, currency_field='currency_id')
|
||||
food_expense = fields.Monetary(readonly=False,string="Food", compute='_compute_food_expense', store=True, currency_field='currency_id')
|
||||
stay_expense = fields.Monetary(readonly=False,string="Room Rent", compute='_compute_stay_expense', store=True, currency_field='currency_id')
|
||||
local_expense = fields.Monetary(readonly=False,string="Local Conveyance", compute='_compute_local_expense', store=True, currency_field='currency_id')
|
||||
|
||||
# mode_of_transport = fields.Selection([('car','🚗 Car'),('bus','🚌 Bus'),('train','🚂 Train'),('flight','🛩️ Flight')],string='Mode of Transport',default="train")
|
||||
# transport_expense = fields.Monetary(readonly=False,string="Transport", compute='_compute_transport_expense', store=True, currency_field='currency_id')
|
||||
# food_expense = fields.Monetary(readonly=False,string="Food", compute='_compute_food_expense', store=True, currency_field='currency_id')
|
||||
# stay_expense = fields.Monetary(readonly=False,string="Room Rent", compute='_compute_stay_expense', store=True, currency_field='currency_id')
|
||||
# local_expense = fields.Monetary(readonly=False,string="Local Conveyance", compute='_compute_local_expense', store=True, currency_field='currency_id')
|
||||
man_month_1to2_yrs_persons = fields.Integer(string="Man Month (Persons) 1 to 2 Yrs")
|
||||
man_month_2to3_yrs_persons = fields.Integer(string="Man Month (Persons) 2 to 3 Yrs")
|
||||
man_month_manager_persons = fields.Integer(string="Man Month (Persons) Manager Yrs")
|
||||
man_month_1to2_yrs_cost = fields.Monetary(string="Cost", currency_field='currency_id')
|
||||
man_month_2to3_yrs_cost = fields.Monetary(string="Cost", currency_field='currency_id')
|
||||
man_month_manager_cost = fields.Monetary(string="Cost", currency_field='currency_id')
|
||||
iandc_costing=fields.Monetary(readonly=False,string="I & C Costing",currency_field='currency_id',compute='_compute_iandc_expense')
|
||||
#FG Fields
|
||||
line_ids_fg_ups1 = fields.One2many('sos_proposal_boq_fg', 'ref_id', string="FG UPS 1",compute='_compute_line_ids_by_ups',store=False)
|
||||
|
|
@ -225,26 +232,29 @@ class Battery_Installation_Requirement(models.Model):
|
|||
for rec in related_records:
|
||||
rec._compute_acc_costing_submitted_by()
|
||||
|
||||
@api.depends('no_of_days')
|
||||
def _compute_local_expense(self):
|
||||
for rec in self:
|
||||
rec.local_expense = rec.no_of_days * 500
|
||||
@api.depends('no_of_days')
|
||||
def _compute_stay_expense(self):
|
||||
for rec in self:
|
||||
rec.stay_expense = rec.no_of_days * 2500
|
||||
@api.depends('no_of_days')
|
||||
def _compute_food_expense(self):
|
||||
for rec in self:
|
||||
rec.food_expense = rec.no_of_days * 600
|
||||
@api.depends('no_of_days')
|
||||
def _compute_transport_expense(self):
|
||||
for rec in self:
|
||||
rec.transport_expense = 5000
|
||||
@api.depends('no_of_days','transport_expense','food_expense','stay_expense','local_expense')
|
||||
# @api.depends('no_of_days')
|
||||
# def _compute_local_expense(self):
|
||||
# for rec in self:
|
||||
# rec.local_expense = rec.no_of_days * 500
|
||||
# @api.depends('no_of_days')
|
||||
# def _compute_stay_expense(self):
|
||||
# for rec in self:
|
||||
# rec.stay_expense = rec.no_of_days * 2500
|
||||
# @api.depends('no_of_days')
|
||||
# def _compute_food_expense(self):
|
||||
# for rec in self:
|
||||
# rec.food_expense = rec.no_of_days * 600
|
||||
# @api.depends('no_of_days')
|
||||
# def _compute_transport_expense(self):
|
||||
# for rec in self:
|
||||
# rec.transport_expense = 5000
|
||||
|
||||
@api.depends('no_of_days','man_month_1to2_yrs_persons','man_month_2to3_yrs_persons','man_month_manager_persons','man_month_1to2_yrs_cost','man_month_2to3_yrs_cost','man_month_manager_cost')
|
||||
def _compute_iandc_expense(self):
|
||||
for rec in self:
|
||||
rec.iandc_costing = rec.transport_expense + rec.food_expense + rec.stay_expense + rec.local_expense
|
||||
rec.iandc_costing = ((rec.man_month_1to2_yrs_persons * rec.man_month_1to2_yrs_cost) +
|
||||
(rec.man_month_2to3_yrs_persons * rec.man_month_2to3_yrs_cost) +
|
||||
(rec.man_month_manager_persons * rec.man_month_manager_cost)) * rec.no_of_days
|
||||
|
||||
@api.depends('extra_cost_line_ids.cost')
|
||||
def _compute_extra_lines_cost(self):
|
||||
|
|
@ -425,6 +435,7 @@ class Battery_Installation_Requirement(models.Model):
|
|||
|
||||
self.customer_name = self.proposal_id.customer_name
|
||||
self.location = self.proposal_id.location
|
||||
self.no_of_electrical_panel = self.proposal_id.no_of_electrical_panel
|
||||
self.number_of_batteries = self.proposal_id.number_of_batteries
|
||||
self.number_of_ups = self.proposal_id.number_of_ups
|
||||
self.products = self.proposal_id.products
|
||||
|
|
@ -508,17 +519,22 @@ class Battery_Installation_Requirement(models.Model):
|
|||
matching_ups_line = self.proposal_id.ups_line_ids.filtered(lambda l: l.ups_index == ups_index)
|
||||
if matching_ups_line:
|
||||
single_set_qty = math.ceil((matching_ups_line.number_of_batteries)/4) * matching_ups_line.number_of_strings_per_battery
|
||||
name_lower = (line.component_id.name or "").lower()
|
||||
is_electrical_panel = "electrical panel" in name_lower
|
||||
is_panel_exceeding = self.proposal_id.no_of_electrical_panel < ups_index
|
||||
|
||||
fg_lines.append((0, 0, {
|
||||
'component_id': line.component_id.id,
|
||||
'uom': line.uom,
|
||||
'unit_price': line.component_id.unit_price,
|
||||
'unit_price': 0.00 if is_panel_exceeding and is_electrical_panel else line.component_id.unit_price,
|
||||
'description': line.description,
|
||||
'item_type': line.item_type,
|
||||
'singet_set_qty': single_set_qty,
|
||||
'total_set': 0 if is_panel_exceeding and is_electrical_panel else 1,
|
||||
'singet_set_qty': 0 if is_panel_exceeding and is_electrical_panel else single_set_qty,
|
||||
'production_cost': line.add_production_cost,
|
||||
'ups_index': ups_index
|
||||
}))
|
||||
|
||||
for line in record.sfg_ids:
|
||||
if line.item_type == 'Master Panel':
|
||||
single_set_qty = 1
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ class Battery_Installation_Requirement(models.Model):
|
|||
number_of_strings = fields.Integer(string="Number of Strings")
|
||||
number_of_ups = fields.Integer(string="Number of UPS")
|
||||
ups_rating_kva = fields.Integer(string="UPS Rating (KVA)")
|
||||
no_of_electrical_panel = fields.Integer(string="No of Electrical Panel")
|
||||
battery_capacity_ah = fields.Integer(string="Battery Capacity (AH)")
|
||||
specific_requirements = fields.Html(string="Specific Requirements")
|
||||
products = fields.Selection(
|
||||
|
|
@ -147,6 +148,7 @@ class Battery_Installation_Requirement(models.Model):
|
|||
@api.onchange('number_of_ups')
|
||||
def _onchange_number_of_ups(self):
|
||||
if self.number_of_ups is not None:
|
||||
self.no_of_electrical_panel = self.number_of_ups
|
||||
if self.number_of_ups > 15:
|
||||
raise ValidationError("Number of UPS cannot be more than 15.")
|
||||
|
||||
|
|
|
|||
|
|
@ -13,12 +13,12 @@
|
|||
|
||||
<group>
|
||||
<group>
|
||||
<field name="proposal_id"/>
|
||||
<field name="customer_name"/>
|
||||
<field name="proposal_id" readonly="acc_approved_by_name"/>
|
||||
<field name="customer_name" readonly="acc_approved_by_name"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="location"/>
|
||||
<field name="products"/>
|
||||
<field name="location" readonly="acc_approved_by_name"/>
|
||||
<field name="products" readonly="acc_approved_by_name"/>
|
||||
</group>
|
||||
</group>
|
||||
<br></br>
|
||||
|
|
@ -26,9 +26,9 @@
|
|||
<h2 style="text-align: center;text-transform: uppercase;text-shadow: 1px 1p 1px #140718;color: #65407c;padding:5px;">Detailed Specifications</h2><hr></hr><br></br>
|
||||
<group>
|
||||
<group>
|
||||
<field name="communication_type"/>
|
||||
<field name="number_of_batteries"/>
|
||||
<field name="number_of_ups"/>
|
||||
<field name="communication_type" readonly="acc_approved_by_name"/>
|
||||
<field name="number_of_batteries" readonly="acc_approved_by_name"/>
|
||||
<field name="number_of_ups" readonly="acc_approved_by_name"/>
|
||||
|
||||
</group>
|
||||
<group>
|
||||
|
|
@ -111,7 +111,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups1" context="{'default_ups_index': 1}">
|
||||
<field name="line_ids_spare_ups1" context="{'default_ups_index': 1}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -219,7 +219,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups2" context="{'default_ups_index': 2}">
|
||||
<field name="line_ids_spare_ups2" context="{'default_ups_index': 2}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -328,7 +328,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups3" context="{'default_ups_index': 3}">
|
||||
<field name="line_ids_spare_ups3" context="{'default_ups_index': 3}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -436,7 +436,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups4" context="{'default_ups_index': 4}">
|
||||
<field name="line_ids_spare_ups4" context="{'default_ups_index': 4}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -544,7 +544,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups5" context="{'default_ups_index': 5}">
|
||||
<field name="line_ids_spare_ups5" context="{'default_ups_index': 5}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -651,7 +651,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups6" context="{'default_ups_index': 6}">
|
||||
<field name="line_ids_spare_ups6" context="{'default_ups_index': 6}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -759,7 +759,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups7" context="{'default_ups_index': 7}">
|
||||
<field name="line_ids_spare_ups7" context="{'default_ups_index': 7}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -867,7 +867,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups8" context="{'default_ups_index': 8}">
|
||||
<field name="line_ids_spare_ups8" context="{'default_ups_index': 8}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -975,7 +975,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups9" context="{'default_ups_index': 9}">
|
||||
<field name="line_ids_spare_ups9" context="{'default_ups_index': 9}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -1083,7 +1083,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups10" context="{'default_ups_index': 10}">
|
||||
<field name="line_ids_spare_ups10" context="{'default_ups_index': 10}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -1190,7 +1190,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups11" context="{'default_ups_index': 11}">
|
||||
<field name="line_ids_spare_ups11" context="{'default_ups_index': 11}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -1297,7 +1297,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups12" context="{'default_ups_index': 12}">
|
||||
<field name="line_ids_spare_ups12" context="{'default_ups_index': 12}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -1404,7 +1404,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups13" context="{'default_ups_index': 13}">
|
||||
<field name="line_ids_spare_ups13" context="{'default_ups_index': 13}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -1511,7 +1511,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups14" context="{'default_ups_index': 14}">
|
||||
<field name="line_ids_spare_ups14" context="{'default_ups_index': 14}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -1618,7 +1618,7 @@
|
|||
</field>
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Spare/Additional Materials</h3>
|
||||
<field name="line_ids_spare_ups15" context="{'default_ups_index': 15}">
|
||||
<field name="line_ids_spare_ups15" context="{'default_ups_index': 15}" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
<field name="production_cost" widget="boolean_toggle"/>
|
||||
|
|
@ -1754,16 +1754,19 @@
|
|||
</group>
|
||||
</page> -->
|
||||
<page string="Installation & Commissioning" invisible="proposal_id == False">
|
||||
<group>
|
||||
<field name="engineers_nos"/>
|
||||
<field name="no_of_days"/>
|
||||
<field name="mode_of_transport"/>
|
||||
<field name="transport_expense" groups="sos_inventory.sos_management_user,sos_inventory.sos_finance_user"/>
|
||||
<field name="food_expense" groups="sos_inventory.sos_management_user,sos_inventory.sos_finance_user"/>
|
||||
<field name="stay_expense" groups="sos_inventory.sos_management_user,sos_inventory.sos_finance_user"/>
|
||||
<field name="local_expense" groups="sos_inventory.sos_management_user,sos_inventory.sos_finance_user"/>
|
||||
<field name="iandc_costing" groups="sos_inventory.sos_management_user,sos_inventory.sos_finance_user"/>
|
||||
</group>
|
||||
|
||||
<group><field name="engineers_nos"/></group>
|
||||
<group><field name="no_of_days"/></group>
|
||||
<br></br>
|
||||
<table class="table_custom" groups="sos_inventory.sos_management_user,sos_inventory.sos_finance_user">
|
||||
<thead><td></td><td><b>No of Persons</b></td><td><b>Cost</b></td></thead>
|
||||
<tbody>
|
||||
<tr><td><b>Man Month( 1 to 2 Yrs)</b></td><td><field name="man_month_1to2_yrs_persons"/></td><td><field name="man_month_1to2_yrs_cost"/></td></tr>
|
||||
<tr><td><b>Man Month( 2 to 3 Yrs)</b></td><td><field name="man_month_2to3_yrs_persons"/></td><td><field name="man_month_2to3_yrs_cost"/></td></tr>
|
||||
<tr><td><b>Man Month(Manager)</b></td><td><field name="man_month_manager_persons"/></td><td><field name="man_month_manager_cost"/></td></tr>
|
||||
<tr><td><b>Total</b></td><td colspan="2"><field name="iandc_costing"/></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</page>
|
||||
<page string="Costing By Accounts" invisible="proposal_id == False" groups="sos_inventory.sos_management_user,sos_inventory.sos_finance_user">
|
||||
|
|
@ -1798,7 +1801,7 @@
|
|||
<table class="table">
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Miscellaneous Cost</h3>
|
||||
<field name="extra_cost_line_ids">
|
||||
<field name="extra_cost_line_ids" readonly="acc_approved_by_name">
|
||||
<tree editable="bottom">
|
||||
<field name="field_name"/>
|
||||
<field name="cost"/>
|
||||
|
|
@ -1812,20 +1815,20 @@
|
|||
<table class="table">
|
||||
<h3 style="text-transform: uppercase;
|
||||
text-decoration: underline;">Final Cost</h3>
|
||||
<tr><td class="column">Product Cost</td><td><field name="total_cost"/></td></tr>
|
||||
<tr><td class="column">Opreational Cost per Battery</td><td><field name="margin_per_battery"/></td></tr>
|
||||
<tr><td class="column">Product Cost</td><td><field name="total_cost" readonly="acc_approved_by_name"/></td></tr>
|
||||
<tr><td class="column">Opreational Cost per Battery</td><td><field name="margin_per_battery" readonly="acc_approved_by_name"/></td></tr>
|
||||
|
||||
<tr><td class="column">Opreational Cost</td><td><field name="margin"/></td></tr>
|
||||
<tr><td class="column">Packing & Forwarding</td><td><field name="packing_and_forwarding"/></td></tr>
|
||||
<tr><td class="column">Installation & Commissioning</td><td><field name="iandc_costing"/></td></tr>
|
||||
<tr><td class="column">Warranty (%)</td><td><field name="warranty_percentage"/></td></tr>
|
||||
<tr><td class="column">Opreational Cost</td><td><field name="margin" readonly="acc_approved_by_name"/></td></tr>
|
||||
<tr><td class="column">Packing & Forwarding</td><td><field name="packing_and_forwarding" readonly="acc_approved_by_name"/></td></tr>
|
||||
<tr><td class="column">Installation & Commissioning</td><td><field name="iandc_costing" readonly="acc_approved_by_name"/></td></tr>
|
||||
<tr><td class="column">Warranty (%)</td><td><field name="warranty_percentage" readonly="acc_approved_by_name"/></td></tr>
|
||||
|
||||
<tr><td class="column">Warranty Cost</td><td><field name="warranty_cost"/></td></tr>
|
||||
<tr><td class="column">Warranty Cost</td><td><field name="warranty_cost" readonly="acc_approved_by_name"/></td></tr>
|
||||
|
||||
<tr><td class="column">Additional Warranty</td><td><field name="additional_warranty"/></td></tr>
|
||||
<tr style="background-color: aliceblue;"><td class="column">MSP Per Battery</td><td><field style="font-weight: bold;font-size: 16px;" name="final_cost_per_battery"/></td></tr>
|
||||
<tr><td class="column">Additional Warranty</td><td><field name="additional_warranty" readonly="acc_approved_by_name"/></td></tr>
|
||||
<tr style="background-color: aliceblue;"><td class="column">MSP Per Battery</td><td><field style="font-weight: bold;font-size: 16px;" name="final_cost_per_battery" readonly="acc_approved_by_name"/></td></tr>
|
||||
|
||||
<tr style="background-color: aliceblue;"><td class="column">Final MSP</td><td><field style="font-weight: bold;font-size: 18px;" name="final_cost"/></td></tr>
|
||||
<tr style="background-color: aliceblue;"><td class="column">Final MSP</td><td><field style="font-weight: bold;font-size: 18px;" name="final_cost" readonly="acc_approved_by_name"/></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
<group>
|
||||
<field name="type_of_source"/>
|
||||
<field name="number_of_ups" string="Number of UPS"/>
|
||||
<field name="no_of_electrical_panel"/>
|
||||
<field name="ups_line_ids">
|
||||
<tree editable="bottom">
|
||||
<field name="ups_index" column_invisible="1"/>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<tree>
|
||||
<field name="company_name"/>
|
||||
<field name="location"/>
|
||||
<field name="vertical_domain"/>
|
||||
<field name="vertical_domain" widget="many2many_tags"/>
|
||||
<field name="interested_in"/>
|
||||
<field name="lead_generated_by"/>
|
||||
<field name="status" decoration-success="status == 'Moved to Customer'"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue