add payments, quote_number in sale
This commit is contained in:
parent
5dd4826e1d
commit
42b2438fa0
16
account.xml
Normal file
16
account.xml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--This file file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<tryton>
|
||||||
|
<record model="ir.action.report" id="report_payment">
|
||||||
|
<field name="name">Pagos</field>
|
||||||
|
<field name="model">account.move.line</field>
|
||||||
|
<field name="report_name">account.move.line</field>
|
||||||
|
<field name="report">optical_equipment/report/Payment.fodt</field>
|
||||||
|
<field name="single" eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model="ir.action.keyword" id="report_payment_keyword">
|
||||||
|
<field name="keyword">form_print</field>
|
||||||
|
<field name="model">account.move.line,-1</field>
|
||||||
|
<field name="action" ref="report_payment"/>
|
||||||
|
</record></tryton>
|
@ -1,8 +1,10 @@
|
|||||||
from trytond.model import (
|
from trytond.model import (
|
||||||
ModelSingleton, ModelSQL, ModelView, fields)
|
ModelSingleton, ModelSQL, ModelView, fields)
|
||||||
from trytond.pyson import Id
|
from trytond.pyson import Id
|
||||||
|
from trytond.modules.company.model import (
|
||||||
|
CompanyMultiValueMixin, CompanyValueMixin)
|
||||||
|
|
||||||
class Configuration(ModelSingleton, ModelSQL, ModelView):
|
class Configuration(ModelSingleton, ModelSQL, ModelView, CompanyMultiValueMixin):
|
||||||
'Equipment Configuration'
|
'Equipment Configuration'
|
||||||
__name__='optical_equipment.configuration'
|
__name__='optical_equipment.configuration'
|
||||||
|
|
||||||
@ -28,3 +30,7 @@ class Configuration(ModelSingleton, ModelSQL, ModelView):
|
|||||||
moisture_uom = fields.Many2One('product.uom', "Moisture UOM",
|
moisture_uom = fields.Many2One('product.uom', "Moisture UOM",
|
||||||
domain=[('category', '=', Id('optical_equipment', 'uom_cat_relative_humedity'))],
|
domain=[('category', '=', Id('optical_equipment', 'uom_cat_relative_humedity'))],
|
||||||
depends=['moisture_min'])
|
depends=['moisture_min'])
|
||||||
|
sale_quote_number = fields.Many2One('ir.sequence', "Sale Quote Number",
|
||||||
|
domain=[
|
||||||
|
('sequence_type', '=', Id('sale','sequence_type_sale'))
|
||||||
|
])
|
||||||
|
@ -698,6 +698,10 @@ msgctxt "field:optical_equipment_maintenance.service,description:"
|
|||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Descripción"
|
msgstr "Descripción"
|
||||||
|
|
||||||
|
msgctxt "field:sale.sale,quote_number:"
|
||||||
|
msgid "Quote Number"
|
||||||
|
msgstr "Cotización #"
|
||||||
|
|
||||||
msgctxt "field:sale.sale,description:sale."
|
msgctxt "field:sale.sale,description:sale."
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Tiempo de Entrega"
|
msgstr "Tiempo de Entrega"
|
||||||
|
BIN
report/Payment.fodt
Normal file
BIN
report/Payment.fodt
Normal file
Binary file not shown.
761
report/Sale.fodt
761
report/Sale.fodt
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
31
sale.py
31
sale.py
@ -19,7 +19,7 @@ class Sale(metaclass=PoolMeta):
|
|||||||
'Sale'
|
'Sale'
|
||||||
__name__ = 'sale.sale'
|
__name__ = 'sale.sale'
|
||||||
|
|
||||||
|
quote_number = fields.Char("Quote Number", readonly=True)
|
||||||
sale_type = fields.Selection([('maintenance', 'Maintenance'),
|
sale_type = fields.Selection([('maintenance', 'Maintenance'),
|
||||||
('equipments', 'Equipments'),
|
('equipments', 'Equipments'),
|
||||||
('replaces', 'Replaces')], "Sale Type", required=True,
|
('replaces', 'Replaces')], "Sale Type", required=True,
|
||||||
@ -112,14 +112,36 @@ class Sale(metaclass=PoolMeta):
|
|||||||
|
|
||||||
return Shipment(**values)
|
return Shipment(**values)
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_quote_number(cls, sales):
|
||||||
|
'''
|
||||||
|
Fill the number field with the sale sequence
|
||||||
|
'''
|
||||||
|
pool = Pool()
|
||||||
|
Config = pool.get('optical_equipment.configuration')
|
||||||
|
config = Config(1)
|
||||||
|
for sale in sales:
|
||||||
|
if config.equipment_sequence != None:
|
||||||
|
if not sale.quote_number:
|
||||||
|
try:
|
||||||
|
sale.quote_number = config.sale_quote_number.get()
|
||||||
|
cls.save(sales)
|
||||||
|
except UserError:
|
||||||
|
raise UserError(str('Validation Error'))
|
||||||
|
else:
|
||||||
|
raise UserError(gettext('optical_equipment.msg_not_sequence_quote'))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ModelView.button
|
@ModelView.button
|
||||||
@Workflow.transition('quotation')
|
@Workflow.transition('quotation')
|
||||||
def quote(cls, sales):
|
def quote(cls, sales):
|
||||||
pool = Pool()
|
pool = Pool()
|
||||||
AdvancePaymentCondition = pool.get('sale.advance_payment.condition')
|
AdvancePaymentCondition = pool.get('sale.advance_payment.condition')
|
||||||
super(Sale, cls).quote(sales)
|
for sale in sales:
|
||||||
|
sale.check_for_quotation()
|
||||||
|
cls.set_quote_number(sales)
|
||||||
|
|
||||||
for sale in sales:
|
for sale in sales:
|
||||||
sale.set_advance_payment_term()
|
sale.set_advance_payment_term()
|
||||||
cls.save(sales)
|
cls.save(sales)
|
||||||
@ -156,7 +178,8 @@ class Sale(metaclass=PoolMeta):
|
|||||||
maintenanceService.save()
|
maintenanceService.save()
|
||||||
sale.agended = True
|
sale.agended = True
|
||||||
sale.save()
|
sale.save()
|
||||||
|
|
||||||
|
cls.set_number(sales)
|
||||||
with transaction.set_context(
|
with transaction.set_context(
|
||||||
queue_scheduled_at=config.sale_process_after,
|
queue_scheduled_at=config.sale_process_after,
|
||||||
queue_batch=context.get('queue_batch', True)):
|
queue_batch=context.get('queue_batch', True)):
|
||||||
|
9
sale.xml
9
sale.xml
@ -1,6 +1,11 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!--This file file is part of Tryton. The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. -->
|
<!--This file file is part of Tryton. The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. -->
|
||||||
<tryton>
|
<tryton>
|
||||||
|
<record model="ir.ui.view" id="sale_view_tree">
|
||||||
|
<field name="model">sale.sale</field>
|
||||||
|
<field name="inherit" ref="sale.sale_view_tree"/>
|
||||||
|
<field name="name">sale_tree</field>
|
||||||
|
</record>
|
||||||
<record model="ir.ui.view" id="sale_view_form">
|
<record model="ir.ui.view" id="sale_view_form">
|
||||||
<field name="model">sale.sale</field>
|
<field name="model">sale.sale</field>
|
||||||
<field name="inherit" ref="sale.sale_view_form"/>
|
<field name="inherit" ref="sale.sale_view_form"/>
|
||||||
@ -11,6 +16,10 @@
|
|||||||
<field name="inherit" ref="sale.product_view_list_sale_line"/>
|
<field name="inherit" ref="sale.product_view_list_sale_line"/>
|
||||||
<field name="name">product_list_sale_line</field>
|
<field name="name">product_list_sale_line</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record model="ir.sequence" id="sequence_quote_sale">
|
||||||
|
<field name="name">Sale Quote</field>
|
||||||
|
<field name="sequence_type" ref="sale.sequence_type_sale"/>
|
||||||
|
</record>
|
||||||
<record model="ir.action.report" id="report_sale">
|
<record model="ir.action.report" id="report_sale">
|
||||||
<field name="name">Sale Equipments</field>
|
<field name="name">Sale Equipments</field>
|
||||||
<field name="model">sale.sale</field>
|
<field name="model">sale.sale</field>
|
||||||
|
@ -20,6 +20,7 @@ depends:
|
|||||||
xml:
|
xml:
|
||||||
address.xml
|
address.xml
|
||||||
party.xml
|
party.xml
|
||||||
|
account.xml
|
||||||
product.xml
|
product.xml
|
||||||
equipment.xml
|
equipment.xml
|
||||||
contract.xml
|
contract.xml
|
||||||
|
@ -16,6 +16,9 @@ this repository contains the full copyright notices and license terms. -->
|
|||||||
<label name="contract_sequence"/>
|
<label name="contract_sequence"/>
|
||||||
<field name="contract_sequence"/>
|
<field name="contract_sequence"/>
|
||||||
<newline/>
|
<newline/>
|
||||||
|
<label name="sale_quote_number"/>
|
||||||
|
<field name="sale_quote_number"/>
|
||||||
|
<newline/>
|
||||||
<separator id="environmental_conditions" string="Environmental Conditions" colspan="4"/>
|
<separator id="environmental_conditions" string="Environmental Conditions" colspan="4"/>
|
||||||
<label name="temperature_min"/>
|
<label name="temperature_min"/>
|
||||||
<field name="temperature_min"/>
|
<field name="temperature_min"/>
|
||||||
|
@ -2,6 +2,10 @@
|
|||||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
this repository contains the full copyright notices and license terms. -->
|
this repository contains the full copyright notices and license terms. -->
|
||||||
<data>
|
<data>
|
||||||
|
<xpath expr="//label[@name='number']" position="before">
|
||||||
|
<label name="quote_number"/>
|
||||||
|
<field name="quote_number"/>
|
||||||
|
</xpath>
|
||||||
<xpath expr="//field[@name='reference']" position="after">
|
<xpath expr="//field[@name='reference']" position="after">
|
||||||
<newline/>
|
<newline/>
|
||||||
<label name="sale_type"/>
|
<label name="sale_type"/>
|
||||||
|
11
view/sale_tree.xml
Normal file
11
view/sale_tree.xml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||||
|
this repository contains the full copyright notices and license terms. -->
|
||||||
|
<data>
|
||||||
|
<xpath expr="//field[@name='number']" position="before">
|
||||||
|
<field name="quote_number"/>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='number']" position="replace">
|
||||||
|
<field name="number"/>
|
||||||
|
</xpath>
|
||||||
|
</data>
|
Loading…
Reference in New Issue
Block a user