Skip to content
Snippets Groups Projects
Commit 2b0eb7e7 authored by Nicolas Martinelli's avatar Nicolas Martinelli
Browse files

[DEL] sale_journal: deprecated module

Reason: complete rewrite of the Sale module. Invoicing is now managed through
Sale.

Responsible: fp, dbo, nim
parent 60723d10
No related branches found
No related tags found
No related merge requests found
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import sale_journal
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'Invoicing Journals',
'version': '1.0',
'category': 'Sales Management',
'description': """
The sales journal modules allows you to categorise your sales and deliveries (picking lists) between different journals.
========================================================================================================================
This module is very helpful for bigger companies that works by departments.
You can use journal for different purposes, some examples:
----------------------------------------------------------
* isolate sales of different departments
* journals for deliveries by truck or by UPS
Journals have a responsible and evolves between different status:
-----------------------------------------------------------------
* draft, open, cancel, done.
Batch operations can be processed on the different journals to confirm all sales
at once, to validate or invoice packing.
It also supports batch invoicing methods that can be configured by partners and sales orders, examples:
-------------------------------------------------------------------------------------------------------
* daily invoicing
* monthly invoicing
Some statistics by journals are provided.
""",
'website': 'https://www.odoo.com/page/billing',
'depends': ['sale_stock'],
'data': [
'security/ir.model.access.csv',
'sale_journal_view.xml',
'sale_journal_data.xml'
],
'demo': ['sale_journal_demo.xml'],
'test': [ ],
'installable': True,
'auto_install': False,
}
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from openerp.osv import fields, osv
class sale_journal_invoice_type(osv.osv):
_name = 'sale_journal.invoice.type'
_description = 'Invoice Types'
_columns = {
'name': fields.char('Invoice Type', required=True),
'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the invoice type without removing it."),
'note': fields.text('Note'),
'invoicing_method': fields.selection([('simple', 'Non grouped'), ('grouped', 'Grouped')], 'Invoicing method', required=True),
}
_defaults = {
'active': True,
'invoicing_method': 'simple'
}
#==============================================
# sale journal inherit
#==============================================
class res_partner(osv.osv):
_inherit = 'res.partner'
_columns = {
'property_invoice_type': fields.property(
type = 'many2one',
relation = 'sale_journal.invoice.type',
string = "Invoicing Type",
group_name = "Accounting Properties",
help = "This invoicing type will be used, by default, to invoice the current partner."),
}
def _commercial_fields(self, cr, uid, context=None):
return super(res_partner, self)._commercial_fields(cr, uid, context=context) + ['property_invoice_type']
class picking(osv.osv):
_inherit = "stock.picking"
_columns = {
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', readonly=True)
}
class stock_move(osv.osv):
_inherit = "stock.move"
def action_confirm(self, cr, uid, ids, context=None):
"""
Pass the invoice type to the picking from the sales order
(Should also work in case of Phantom BoMs when on explosion the original move is deleted, similar to carrier_id on delivery)
"""
procs_to_check = []
for move in self.browse(cr, uid, ids, context=context):
if move.procurement_id and move.procurement_id.sale_line_id and move.procurement_id.sale_line_id.order_id.invoice_type_id:
procs_to_check += [move.procurement_id]
res = super(stock_move, self).action_confirm(cr, uid, ids, context=context)
pick_obj = self.pool.get("stock.picking")
for proc in procs_to_check:
pickings = list(set([x.picking_id.id for x in proc.move_ids if x.picking_id and not x.picking_id.invoice_type_id]))
if pickings:
pick_obj.write(cr, uid, pickings, {'invoice_type_id': proc.sale_line_id.order_id.invoice_type_id.id}, context=context)
return res
class sale(osv.osv):
_inherit = "sale.order"
_columns = {
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', help="Generate invoice based on the selected option.")
}
def onchange_partner_id(self, cr, uid, ids, part, context=None):
result = super(sale, self).onchange_partner_id(cr, uid, ids, part, context=context)
if part:
itype = self.pool.get('res.partner').browse(cr, uid, part, context=context).property_invoice_type
if itype:
result['value']['invoice_type_id'] = itype.id
return result
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record model="ir.property" id="property_invoice_type_def">
<field name="name">property_invoice_type</field>
<field name="fields_id" search="[('model','=','res.partner'),('name','=','property_invoice_type')]"/>
<field name="value" eval="False"/>
</record>
</data>
</openerp>
<?xml version="1.0"?>
<openerp>
<data noupdate="1">
<record model="sale_journal.invoice.type" id="daily">
<field name="name">Daily invoicing</field>
</record>
<record model="sale_journal.invoice.type" id="monthly">
<field name="name">Monthly invoicing</field>
<field name="invoicing_method">grouped</field>
</record>
<record model="ir.property" id="sale_journal.property_invoice_type_def">
<field name="value" eval="'sale_journal.invoice.type,'+str(daily)"/>
</record>
</data>
</openerp>
<openerp>
<data>
<!-- sale journal invoice Type's Form view -->
<record model="ir.ui.view" id="view_sale_journal_invoice_type_form">
<field name="name">sale_journal.invoice.type.form</field>
<field name="model">sale_journal.invoice.type</field>
<field name="arch" type="xml">
<form string="Invoice Type">
<group col="4">
<field name="name"/>
<field name="invoicing_method"/>
<field name="active"/>
</group>
<separator string="Notes"/>
<field name="note"/>
</form>
</field>
</record>
<!-- sale journal invoice Type's tree view -->
<record model="ir.ui.view" id="view_sale_journal_invoice_type_tree">
<field name="name">sale_journal.invoice.type.tree</field>
<field name="model">sale_journal.invoice.type</field>
<field name="arch" type="xml">
<tree string="Invoice Type">
<field name="name"/>
<field name="invoicing_method"/>
</tree>
</field>
</record>
<!-- Action for sale journal invoice Type -->
<record model="ir.actions.act_window" id="action_definition_journal_invoice_type">
<field name="name">Invoice Types</field>
<field name="res_model">sale_journal.invoice.type</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help">Invoice types are used for partners, sales orders and delivery orders. You can create a specific invoicing journal to group your invoicing according to your customer's needs: daily, each Wednesday, monthly, etc.</field>
</record>
<menuitem id="menu_definition_journal_invoice_type" sequence="4"
parent="base.menu_sales_config" action="action_definition_journal_invoice_type"/>
<!-- Inherit sales order form view -->
<record model="ir.ui.view" id="sale_journal_sale_order">
<field name="name">sale.order.journal.view.form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<xpath expr="//group[@name='sale_pay']" position="inside">
<field name="invoice_type_id"/>
</xpath>
</field>
</record>
<!-- Inherit sales order tree view-->
<record model="ir.ui.view" id="sale_journal_sale_order_tree">
<field name="name">sale.order.journal.view.tree</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_tree" />
<field name="arch" type="xml">
<field name="state" position="before">
<field name="invoice_type_id"/>
</field>
</field>
</record>
<!-- Inherit stock picking's form view -->
<record model="ir.ui.view" id="sale_journal_picking_order">
<field name="name">stock.picking.journal.view.form</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form" />
<field name="arch" type="xml">
<field name="move_type" position="before">
<field name="invoice_type_id"/>
</field>
</field>
</record>
<!-- Inherit stock picking's tree view -->
<record id="view_partner_property_form" model="ir.ui.view">
<field name="name">res.partner.journal.property.form.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<group name="sale">
<field name="property_invoice_type"/>
</group>
</field>
</record>
<record id="view_sales_order_search" model="ir.ui.view">
<field name="name">sale.order.search.inherit</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_sales_order_filter"/>
<field name="arch" type="xml">
<xpath expr="//group/filter[@name='customer']" position="after">
<filter string="Invoice Type" domain="[]" context="{'group_by':'invoice_type_id'}"/>
</xpath>
</field>
</record>
<!-- Inherit stock picking's search view -->
<record id="view_picking_internal_search" model="ir.ui.view">
<field name="name">stock.picking.internal.search.inherit</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_internal_search"/>
<field name="arch" type="xml">
<xpath expr="//group/filter[@name='picking_type']" position="after">
<filter string="Invoice Type" domain="[]" context="{'group_by':'invoice_type_id'}"/>
</xpath>
</field>
</record>
</data>
</openerp>
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sale_journal_invoice_type_finance_invoice,sale_journal.invoice.type invoice,model_sale_journal_invoice_type,account.group_account_invoice,1,1,1,1
access_sale_journal_invoice_type_partner_manager,sale_journal.invoice.type partner manager,model_sale_journal_invoice_type,base.group_partner_manager,1,0,0,0
access_sale_journal_invoice_type_salesman,sale_journal.invoice.type salesman,model_sale_journal_invoice_type,base.group_sale_salesman,1,0,0,0
access_sale_journal_invoice_type_manager,sale_journal.invoice.type.manager,model_sale_journal_invoice_type,base.group_sale_manager,1,1,1,1
access_sale_journal_invoice_type_stock_worker,sale_journal.invoice_type stock worker,model_sale_journal_invoice_type,stock.group_stock_user,1,0,0,0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment