# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import calendar
from datetime import date, datetime
from dateutil.relativedelta import relativedelta
from odoo import api, fields, models, _
from odoo.exceptions import UserError, ValidationError
from odoo.tools import float_compare, float_is_zero
class AccountAssetCategory(models.Model):
_name = 'account.asset.category'
_description = 'Asset category'
_inherit = ['mail.thread', 'mail.activity.mixin', 'analytic.mixin']
exclude_types = ['asset_receivable', 'asset_cash', 'liability_payable',
'liability_credit_card', 'equity', 'equity_unaffected']
active = fields.Boolean(default=True)
name = fields.Char(required=True, index=True, string="Asset Type")
account_analytic_id = fields.Many2one('account.analytic.account', string='Analytic Account')
# analytic_tag_ids = fields.Many2many('account.analytic.tag', string='Analytic Tag')
account_asset_id = fields.Many2one('account.account', string='Asset Account',
required=True,
domain=[('account_type', 'not in', exclude_types), ('deprecated', '=', False)],
help="Account used to record the purchase of the asset at its original price.")
account_depreciation_id = fields.Many2one('account.account',
string='Depreciation Entries: Asset Account',
required=True, domain=[('account_type', 'not in', exclude_types), ('deprecated', '=', False)],
help="Account used in the depreciation entries, to decrease the asset value.")
account_depreciation_expense_id = fields.Many2one('account.account',
string='Depreciation Entries: Expense Account',
required=True,
domain=[('account_type', 'not in', exclude_types), ('deprecated', '=', False)],
help="Account used in the periodical entries,"
" to record a part of the asset as expense.")
journal_id = fields.Many2one('account.journal', string='Journal', required=True)
company_id = fields.Many2one('res.company', string='Company', required=True,
default=lambda self: self.env.company)
method = fields.Selection([('linear', 'Linear'), ('degressive', 'Degressive')],
string='Computation Method', required=True, default='linear',
help="Choose the method to use to compute the amount of depreciation lines.\n"
" * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n"
" * Degressive: Calculated on basis of: Residual Value * Degressive Factor")
method_number = fields.Integer(string='Number of Depreciations', default=5,
help="The number of depreciations needed to depreciate your asset")
method_period = fields.Integer(string='Period Length', default=1,
help="State here the time between 2 depreciations, in months", required=True)
method_progress_factor = fields.Float('Degressive Factor', default=0.3)
method_time = fields.Selection([('number', 'Number of Entries'), ('end', 'Ending Date')],
string='Time Method', required=True, default='number',
help="Choose the method to use to compute the dates and number of entries.\n"
" * Number of Entries: Fix the number of entries and the time between 2 depreciations.\n"
" * Ending Date: Choose the time between 2 depreciations and the date the depreciations won't go beyond.")
method_end = fields.Date('Ending date')
prorata = fields.Boolean(string='Prorata Temporis',
help='Indicates that the first depreciation entry for this asset have to be done from the '
'purchase date instead of the first of January')
open_asset = fields.Boolean(string='Auto-Confirm Assets',
help="Check this if you want to automatically confirm the assets "
"of this category when created by invoices.")
group_entries = fields.Boolean(string='Group Journal Entries',
help="Check this if you want to group the generated entries by categories.")
type = fields.Selection([('sale', 'Sale: Revenue Recognition'), ('purchase', 'Purchase: Asset')],
required=True, index=True, default='purchase')
date_first_depreciation = fields.Selection([
('last_day_period', 'Based on Last Day of Purchase Period'),
('manual', 'Manual (Defaulted on Purchase Date)')],
string='Depreciation Dates', default='manual', required=True,
help='The way to compute the date of the first depreciation.\n'
' * Based on last day of purchase period: The depreciation dates will'
' be based on the last day of the purchase month or the purchase'
' year (depending on the periodicity of the depreciations).\n'
' * Based on purchase date: The depreciation dates will be based on the purchase date.')
@api.onchange('account_asset_id')
def onchange_account_asset(self):
if self.type == "purchase":
self.account_depreciation_id = self.account_asset_id
elif self.type == "sale":
self.account_depreciation_expense_id = self.account_asset_id
@api.onchange('type')
def onchange_type(self):
if self.type == 'sale':
self.prorata = True
self.method_period = 1
else:
self.method_period = 12
@api.onchange('method_time')
def _onchange_method_time(self):
if self.method_time != 'number':
self.prorata = False
class AccountAssetAsset(models.Model):
_name = 'account.asset.asset'
_description = 'Asset/Revenue Recognition'
_inherit = ['mail.thread', 'mail.activity.mixin', 'analytic.mixin']
entry_count = fields.Integer(compute='_entry_count', string='# Asset Entries')
name = fields.Char(string='Asset Name', required=True,
readonly=True, states={'draft': [('readonly', False)]})
code = fields.Char(string='Reference', size=32, readonly=True,
states={'draft': [('readonly', False)]})
value = fields.Monetary(string='Gross Value', required=True, readonly=True,
states={'draft': [('readonly', False)]})
currency_id = fields.Many2one('res.currency', string='Currency', required=True,
readonly=True, states={'draft': [('readonly', False)]},
default=lambda self: self.env.user.company_id.currency_id.id)
company_id = fields.Many2one('res.company', string='Company', required=True,
readonly=True, states={'draft': [('readonly', False)]},
default=lambda self: self.env.company)
note = fields.Text()
category_id = fields.Many2one('account.asset.category', string='Category',
required=True, change_default=True,
readonly=True, states={'draft': [('readonly', False)]})
date = fields.Date(string='Date', required=True, readonly=True,
states={'draft': [('readonly', False)]}, default=fields.Date.context_today)
state = fields.Selection([('draft', 'Draft'), ('open', 'Running'), ('close', 'Close')],
'Status', required=True, copy=False, default='draft',
help="When an asset
没有合适的资源?快使用搜索试试~ 我知道了~
基于开源市场与自主开发的Odoo16免费应用设计源码
共1312个文件
py:318个
po:268个
rst:175个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 196 浏览量
2024-10-04
15:30:24
上传
评论
收藏 28.44MB ZIP 举报
温馨提示
该项目汇集了开源市场精选与自主开发的Odoo16免费应用源码,总计包含1281个文件,涵盖了丰富的编程语言和资源类型。具体包括302个Python脚本、248个翻译文件、175个ReStructuredText文件、155个XML配置文件、127个PNG图片文件、76个JavaScript脚本、48个HTML文件、35个GIF图片文件、22个SCSS样式表文件、16个Markdown文件。本项目旨在提供一个多元化的开源应用平台,欢迎有志于开源的优秀应用加入我们。
资源推荐
资源详情
资源评论
收起资源包目录
基于开源市场与自主开发的Odoo16免费应用设计源码 (1312个子文件)
bootstrap-style.css 631KB
bootstrap.min.css 118KB
font-awesome.min.css 30KB
font.css 8KB
style.css 6KB
iconfont.css 3KB
ribbon.css 965B
ir.model.access.csv 3KB
ir.model.access.csv 2KB
ir.model.access.csv 1KB
ir.model.access.csv 1KB
ir.model.access.csv 800B
ir.model.access.csv 589B
ir.model.access.csv 463B
ir.model.access.csv 452B
ir.model.access.csv 442B
ir.model.access.csv 411B
ir.model.access.csv 408B
ir.model.access.csv 385B
ir.model.access.csv 167B
Import_Sample.csv 151B
odoo16_budget.gif 2.23MB
banner.gif 1.63MB
banner.gif 1.39MB
select_all_companies.gif 1.06MB
assets.gif 1023KB
banner.gif 911KB
listview.gif 674KB
document_viewer.gif 516KB
clickable.gif 514KB
chatter_sided.gif 453KB
formview.gif 428KB
navbar.gif 424KB
chatter.gif 399KB
appmenu.gif 387KB
odoo_report.gif 376KB
notifications_screenshot.gif 211KB
appsearch.gif 187KB
chatter_topbar.gif 175KB
step0,25andlimits.gif 144KB
chatter-colors.gif 137KB
mobile_search.gif 128KB
step10_limit15_placeholder117_with_onchange.gif 108KB
dropdown_scroll.gif 93KB
usermenu.gif 91KB
demo.gif 86KB
hamburger.gif 79KB
breadcrumbs.gif 65KB
device_rotation.gif 64KB
viewtype.gif 61KB
search_panel.gif 58KB
banner.gif 54KB
calendar.gif 53KB
kanban.gif 42KB
shortcuts.gif 39KB
form_buttons.gif 36KB
.gitignore 1KB
index.html 75KB
index.html 69KB
index.html 28KB
index.html 27KB
index.html 19KB
index.html 18KB
index.html 18KB
index.html 18KB
index.html 16KB
index.html 16KB
index.html 16KB
index.html 15KB
index.html 15KB
index.html 15KB
index.html 14KB
index.html 14KB
index.html 14KB
index.html 14KB
index.html 14KB
index.html 14KB
index.html 14KB
index.html 14KB
index.html 14KB
index.html 13KB
index.html 13KB
index.html 13KB
index.html 13KB
index.html 13KB
index.html 13KB
index.html 13KB
index.html 13KB
index.html 13KB
index.html 13KB
index.html 12KB
index.html 12KB
index.html 12KB
index.html 12KB
index.html 12KB
index.html 11KB
index.html 9KB
index.html 7KB
index.html 3KB
index.html 3KB
共 1312 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14
资源评论
wjs2024
- 粉丝: 1721
- 资源: 4552
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Vue的Python Web&BigData开源框架wuzhu设计源码
- 基于Java算法的房源推荐系统设计源码
- 资源野火cortex-M3STM32开发板野火M3-飞鸟
- 基于JavaScript的小红书交友互动平台设计源码
- 基于LabVIEW的学生成绩统计系统开发指南(包含详细的完整的程序和数据)
- Python实现的成绩统计系统设计与应用(包含详细的完整的程序和数据)
- 资源野火cortex-M3STM32开发板野火M3-uCOS-II
- 基于Python+Vue的房产管理系统设计源码及实现细节
- 使用R语言提取村庄年均气候和地形数据(包含详细的完整的程序和数据)
- 基于JavaScript静态网页的托管平台设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功